DueDateHQ is a full-stack demo for a CPA firm deadline control center. It helps a small tax practice import client spreadsheets, track multi-client tax deadlines, verify source evidence, assign responsibility, ask an assistant about risk, and send email reminders from one workspace.
This repository is a product demo. It uses reviewed demo rules and source URLs for presentation purposes and is not legal, tax, or filing advice.
- Spreadsheet import: import CSV/Excel-style client deadline data and preview field mapping before applying changes.
- Deadline board: filter client deadlines by date, jurisdiction, tax item, status, priority, responsible member, and search.
- Source evidence: keep original due date, current due date, source URLs, and extension source URLs together.
- Client profiles: bind entity type, jurisdictions, tax profiles, and responsible members, with guardrails for unsupported profile/rule combinations.
- Owner dashboard: focus the firm owner on missed, due-soon, high-risk, extended, and source-backed deadlines.
- Members and RBAC: support Owner/User views, member management, soft deletion, and scoped member work.
- Assistant workspace: summarize official-source changes, answer workspace questions, and show owner-to-member notices.
- Email alerts and reminders: send owner alerts through SMTP, let members create personal reminder tasks, and run a backend worker for due reminder emails.
- CSV export: export the current filtered deadline result with responsible member and source evidence.
- Pricing presentation: show Solo and Team plan packaging for demo and pitch purposes.
| Deadline Board | Assistant | Client Profiles |
|---|---|---|
![]() |
![]() |
![]() |
| Owner Alert | Member Reminder | Members |
|---|---|---|
![]() |
![]() |
![]() |
- Frontend: Vite, React, TypeScript
- Backend: Node.js, Express
- Database: SQLite via
better-sqlite3 - Email: Nodemailer SMTP
- Import parsing: CSV/Excel-oriented import flow
npm install
npm run db:reset
npm run devThe app runs locally at:
- Frontend:
http://127.0.0.1:5173 - API:
http://127.0.0.1:3001
For separate processes:
npm run dev:api
npm run dev:webThe demo uses email-only login.
| Role | |
|---|---|
| Owner | hezek.wu@dify.ai |
| Member | 363876315@qq.com |
npm run dev # Run local frontend and backend together
npm run dev:web # Run Vite frontend only
npm run dev:api # Run Express API only
npm run db:reset # Reset SQLite and seed demo data
npm run build # Typecheck and build frontendEmail sending is optional for local exploration. When SMTP variables are configured, the app can send owner alerts and due reminder emails.
Runtime SMTP configuration is read from environment variables. The implementation supports DueDateHQ-specific variables first, then common QQ/company/Gmail-style fallbacks documented in docs/email-reminder-design.md.
Do not commit local .env files or SMTP credentials.
This MVP is built for a local, source-backed CPA demo:
- Demo rules and verified source URLs are intentionally limited to the presentation scenario.
- Imported client-supplied data is not treated as official tax authority data.
- Billing UI is presentation-only; real payment processing is not connected.
- Official-source sync is implemented as a reviewable demo workflow, not a production-grade 50-state tax crawler.
- Delivery plan
- Deadline design
- Business schema design
- Email reminder design
- News / Assistant composer design
- Central tax source design
data/,dist/,node_modules/, and.envfiles are ignored.- The SQLite database is local-only and should be regenerated with
npm run db:reset. - Screenshots used by the pitch deck live under
docs/assets/pitch-deck/so they render on GitHub.






