Installation
Two applications exist in the repository today. The API, worker, and database described in this design are specified and not yet generated as a server project.
Documentation site
From kstudeo-doc, with Node.js 20 or newer:
npm install
npm start
The site is served at http://localhost:3000. npm run build writes a static site to kstudeo-doc/build. Mermaid diagrams, including the C4 views, render in the documentation pages.
Marketing site
The public landing pages are the Vite and React app at the repository root. From that directory:
npm install
npm run dev
Those pages are the experience this design retains. Booking, checkout, the customer portal, and the photographer dashboard are added in the Next.js application described below. Login on the marketing site is not the access-token design in authentication.
Application layout to create
| Path | Process |
|---|---|
web/ | Next.js and TypeScript interface. |
server/ | Express API and Prisma schema at server/prisma/schema.prisma. |
server/worker | Background worker using the same generated Prisma Client and DATABASE_URL. |
kstudeo-doc/ | This documentation site. |
Copy the Prisma schema from migrations into server/prisma/schema.prisma as the first database change. Apply the SQL constraint migration immediately after Prisma's initial migration. Do not start payment or gallery features on a database that lacks the webhook unique key, the gallery review table, or the ledger trigger.
Local dependencies for later phases
| Dependency | Use |
|---|---|
| PostgreSQL 15 or newer | Business data. Local TLS can be off. Production TLS is required. |
| Stripe test credentials | USD test charges and signed webhook fixtures. |
| S3-compatible storage | A private bucket. MinIO is sufficient locally. |
| Mail catcher | Account setup and gallery mail. |
Environment variable names are listed in environment.