A SaaS platform for building custom forms, publishing them at a public URL, and collecting/exporting responses — a lightweight, self-branded alternative to Google Forms/Typeform. See PRD.md for product context and docs/ARCHITECTURE.md for the technical deep dive.
| Layer | Technology |
|---|---|
| Monorepo | npm workspaces + Turborepo |
| API | Hono on Node.js, TypeScript |
| Web | Next.js 15 (App Router), React 19 |
| Database | MariaDB/MySQL via Drizzle ORM |
| Auth | Lucia v3 (cookie sessions) + bcrypt |
| Validation | Zod |
| Resend | |
| Rate limiting | Redis |
| Export | ExcelJS (XLSX) |
| Drag & drop | dnd-kit |
| Testing | Vitest (unit/integration), Playwright (e2e) |
apps/
api/ Hono API server
web/ Next.js frontend
packages/
db/ Drizzle schema, migrations, repositories
types/ Shared Zod schemas and types (source of truth for DTOs)
ui/ Shared component library (placeholder, not yet populated)
- Node.js 20+ (no version is pinned via
engines/.nvmrc— Node 20.19 is known to work) - MariaDB/MySQL reachable locally (e.g. via Laragon)
- Redis reachable locally (used for auth rate limiting)
- npm 10+
npm install
# Copy env templates and adjust as needed
cp apps/api/env.example apps/api/.env
cp apps/web/env.example apps/web/.env
# Create the database (name must match DB_NAME / .env), then run migrations
npm run db:migrateNote: the env templates are currently named env.example (no leading dot) in this repo, not the conventional .env.example.
npm run dev # turbo run dev — starts api (watch) and web (Next dev server)
npm run build # turbo run build
npm run test # turbo run test — vitest across all packages
npm run lint # turbo run lintAPI defaults to http://localhost:3001, web to http://localhost:3000 (configurable via PORT / NEXT_PUBLIC_API_URL / WEB_ORIGIN).
packages/uiis an empty placeholder — no shared components exist yet.
See docs/ARCHITECTURE.md for the full list.
- PRD.md — product requirements
- docs/ARCHITECTURE.md — architecture, data model, API reference, auth/security, testing
- openspec/archive/2026-06-15-form-platform-mvp/ — original spec-driven development artifacts (proposal, spec, design, tasks) for the MVP