kevin-asprec
43761d94ee
feat(01-03): tenant signup API, service, and UI
...
- Add businessAddress and contactPhone fields to Tenant schema
- Create src/lib/tenant.ts with createTenant() function:
- Validates input, slugifies business name, hashes password (bcrypt 12)
- Prisma transaction creates Tenant + admin User atomically
- Custom EmailAlreadyExistsError for 409 Conflict responses
- Create POST /api/tenants/signup route returning 201/400/409/500
- Create /signup page with full form (business name, owner info, password, optional fields)
- Client-side validation: required fields, email format, password match
- Redirects to /login?registered=true on success
- Update /login page to show success banner when ?registered=true
2026-03-04 18:40:40 +08:00
kevin-asprec
71a9277913
feat(01-02): configure NextAuth.js v4 with credentials provider and JWT
...
- Install next-auth@4, bcryptjs, @types/bcryptjs, @types/jest
- src/types/next-auth.d.ts: extend Session/JWT with tenantId, roles, isSuperAdmin
- src/lib/auth-options.ts: CredentialsProvider + JWT/session callbacks, 24h maxAge
- src/lib/auth.ts: getServerSession() and getCurrentUser() server helpers
- src/app/api/auth/[...nextauth]/route.ts: NextAuth GET/POST handler
- src/middleware.ts: withAuth middleware protecting all routes except /login /signup /api/auth/*
2026-03-04 18:37:29 +08:00
kevin-asprec
19a5520dd5
docs(01-01): complete project scaffold and dev environment plan
...
Tasks completed: 2/2
- Task 1: Next.js 15 project with Docker Compose dev environment
- Task 2: Prisma schema with Tenant/User models and Vitest setup
SUMMARY: .planning/phases/01-foundation/01-01-SUMMARY.md
2026-03-04 18:32:40 +08:00
kevin-asprec
1adeab2fbc
feat(01-01): Prisma schema with Tenant/User models and Vitest test setup
...
- prisma/schema.prisma with Tenant, User, Role, TenantStatus models
- tenantId on all tenant-scoped models (RLS-ready convention)
- @@unique([email, tenantId]) and @@index([tenantId]) on User
- Grace period fields on Tenant (suspendedAt, gracePeriodEndsAt)
- RLS comment block documenting tenantId convention for future models
- src/lib/prisma.ts singleton PrismaClient pattern (hot-reload safe)
- vitest.config.ts with node environment and @/* path alias
- src/lib/__tests__/setup.test.ts smoke test (2 tests passing)
- package.json scripts: test, test:watch, db:push, db:generate, db:studio
- Schema synced to PostgreSQL 16 via prisma db push
2026-03-04 18:31:04 +08:00
kevin-asprec
90bc5836fd
feat(01-01): Next.js 15 project with Docker Compose dev environment
...
- Next.js 15 with App Router, TypeScript, Tailwind CSS (v4), ESLint
- docker-compose.yml with PostgreSQL 16, Redis 7, and app service
- Dockerfile (Node 20 alpine) for containerized development
- .env and .env.example with DATABASE_URL, DATABASE_URL_LOCAL, REDIS_URL
- src/app/page.tsx updated to render NetForge heading
- All three services start healthy with docker compose up -d
2026-03-04 18:24:59 +08:00
kevin-asprec
7e6d286fca
docs(01): create phase plan
...
Phase 01: Foundation
- 5 plan(s) in 4 wave(s)
- 2 parallel (wave 2: auth + tenant provisioning), 3 sequential
- Ready for execution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 18:13:27 +08:00
kevin-asprec
2506a6745c
docs(01): capture phase context
...
Phase 01: Foundation
- Implementation decisions documented
- Phase boundary established
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 18:05:03 +08:00
kevin-asprec
1bdb4eafae
docs: create roadmap (5 phases) and research
...
Phases:
1. Foundation: tenant isolation, auth, Docker, RBAC
2. Subscriber & Billing Core: subscribers, invoicing, payments, accounting ledger
3. Operational Modules: collectors, ticketing, job orders, technicians
4. Inventory, Expenses & Reports: event-ledger inventory, expenses, financial statements
5. Visibility & Client Portal: dashboard, client self-service, integration & e2e tests
All 66 v1 requirements mapped to phases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 17:45:09 +08:00
kevin-asprec
21541fd8d5
docs: define v1 requirements
...
53 requirements across 12 categories
11 requirements deferred to v2
Full double-entry accounting with audit trail and derived balances
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 17:40:14 +08:00
kevin-asprec
c407e182f8
docs: complete project research for NetForge ISP Management SaaS
...
Files:
- STACK.md
- FEATURES.md
- ARCHITECTURE.md
- PITFALLS.md
- SUMMARY.md
Key findings:
- Stack: Next.js 15 + TypeScript + PostgreSQL + Prisma monolith; BullMQ for billing cron jobs; MikroTik client needs library verification (LOW confidence)
- Architecture: Modular monolith with shared-DB multi-tenancy; JournalEntryService as sole ledger gateway; derived financial state (no balance fields)
- Critical pitfall: Cross-tenant data leakage + fake accounting + billing state machine must all be solved in Phase 1 before any feature work
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 17:21:44 +08:00
kevin-asprec
ec2e583787
chore: add project config
...
Mode: yolo
Depth: standard
Parallelization: disabled
Workflow agents: research=on, plan_check=on, verifier=on
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 17:14:25 +08:00
kevin-asprec
54fb4915f0
docs: initialize project
...
Multi-tenant SaaS platform for ISP operations management — billing, payments, inventory, technician job orders, and full accounting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 17:11:11 +08:00