Skip to content

Commit 5660a9b

Browse files
author
root
committed
docs: update project status for web launch
1 parent 0ce6166 commit 5660a9b

1 file changed

Lines changed: 19 additions & 11 deletions

File tree

doc.md

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
Last updated: March 15, 2026
44

55
## Snapshot
6-
- Monorepo with NestJS API, Expo mobile client, and a Next.js marketing site managed via Turbo + pnpm.
6+
- Monorepo with NestJS API, Expo mobile client, and a Next.js web app managed via Turbo + pnpm.
77
- Core expense, settlement, receipt, notification, realtime, and payment primitives are implemented server-side with Prisma/PostgreSQL (Supabase URL) and Redis/BullMQ.
88
- Mobile app ships full flows (auth, groups, expenses, settle-up, activity, profile/settings) with offline queueing, push tokens, realtime sockets, and UPI deep-link helper; UI built with React Native Paper + Reanimated.
9-
- Web app is currently a single-page marketing/landing experience with Framer Motion; no dashboard/auth wiring yet.
9+
- Web app now includes authenticated dashboard: JWT cookie auth, middleware guards, groups, expenses, settlement suggestions, receipt upload, realtime Socket.IO updates, and Playwright e2e coverage.
1010
- Observability (Sentry, OpenTelemetry, Prometheus metrics) and security hardening (helmet, throttling, CSRF on refresh, JWT + refresh cookies) are wired in backend startup.
1111

1212
## Project Structure
@@ -67,9 +67,17 @@ Last updated: March 15, 2026
6767
- Tests: basic Jest + testing-library specs for login, group list, add expense screens; TypeScript lint via `tsc --noEmit`.
6868

6969
## Web (apps/web)
70-
- Next.js 15 single-page marketing site with Framer Motion animations, Lucide icons, Tailwind utility styles.
71-
- Sections: hero CTA, feature grid, comparison table, FAQ/dev log, newsletter form, footer links.
72-
- No auth or API wiring yet; currently a static experience suitable for marketing/landing only.
70+
- Stack: Next.js 15 (app router), Tailwind tokens, Framer Motion accents, Lucide icons, Socket.IO client.
71+
- Design system: Royal SaaS tokens (light/dark), CSS variables, glass/neo accents, Manrope/Space Grotesk typography, shared spacing/radii/shadows.
72+
- Auth: /login and /register pages call proxy API routes that set httpOnly JWT + refresh cookies; middleware enforces protected /dashboard routes; auth context + refresh check.
73+
- Layout: AppLayout/Sidebar/Topbar/DashboardLayout with responsive shell and quick actions.
74+
- Dashboard: balance summary cards, recent activity list, quick actions, realtime updates.
75+
- Groups: list and detail pages, member panel with invites, expense ledger, actions panel.
76+
- Expenses: CreateExpenseModal with equal/exact/percentage split logic (shared with mobile), payer selection, participant guard, server action to POST /groups/:id/expenses.
77+
- Settlements: /dashboard/groups/[groupId]/settle renders simplify suggestions and confirm flows hitting /groups/:id/settlements.
78+
- Receipts: per-expense upload modal uses presigned PUT from /expenses/:id/receipt-url with preview.
79+
- Realtime: Socket.IO client joins group rooms and refreshes on expense/settlement/member events via backend gateway.
80+
- Tests: Playwright e2e (opt-in with RUN_E2E=true) covers auth → group → expense → settlement lifecycle.
7381

7482
## Shared Types (packages/shared-types)
7583
- Zod/TypeScript DTOs for auth payloads, expenses, balances, settlements, receipts, activity feeds, payments, notifications; consumed by backend controllers and mobile client.
@@ -81,17 +89,17 @@ Last updated: March 15, 2026
8189
- Infra: Terraform stubs for AWS ECS/RDS/S3; CI assumed via GitHub Actions (see README claim) though pipeline files not present in repo root.
8290

8391
## Known Gaps / Risks
84-
- Web app is marketing-only; product dashboard, auth, and API integration are not implemented.
85-
- Payments: mobile flow currently bypasses Stripe; settles via UPI link + manual settlement API. Stripe PaymentIntent UX is not exposed to clients yet.
92+
- Web payments UI not implemented; mobile still bypasses Stripe in favor of UPI + manual settlement API.
8693
- Receipt processing queue lacks worker implementation; uploads are stored but no OCR/parsing pipeline exists.
8794
- Offline queue can replay POSTs without deduplication beyond backend idempotency keys; ensure idempotency keys are supplied for settlements/payments when adding clients.
8895
- Expo SDK 54 with React Native 0.81/React 19 stack may emit peer warnings; verify compatibility before release builds.
8996
- CI configuration for lint/test/e2e is referenced but not included in the repo snapshot.
97+
- Socket.IO client token is fetched from /api/auth/token; confirm refresh/token lifecycle in production deployments.
9098

9199
## Next Steps
92100
1. Decide on in-app payment path: surface Stripe PaymentIntent client flow or keep UPI-only and disable PaymentIntent endpoint if unused.
93-
2. Implement receipt-processing worker (OCR or at least validation) for queued jobs; expose receipt retrieval in UI.
94-
3. Build authenticated web dashboard (groups/expenses/settlements) reusing shared-types + backend APIs.
95-
4. Add end-to-end tests (Playwright) for critical flows: auth, expense creation, settlement, receipt upload.
101+
2. Implement receipt-processing worker (OCR or validation) and surface stored receipt previews in clients.
102+
3. Expand web to surface balances per member, activity filters, and profile/settings parity with mobile.
103+
4. Add CI pipeline files (GitHub Actions) to run lint/test/build/Playwright; enable RUN_E2E toggles in CI.
96104
5. Tighten mobile offline/idempotency by attaching idempotency keys and surfacing retry status to users.
97-
6. Add CI pipeline files (GitHub Actions) to run lint/test/build on PRs and publish metrics artifacts.
105+
6. Add web performance profiling (React profiler/Next metrics) and cache tuning for large activity/expense lists.

0 commit comments

Comments
 (0)