| Category | Technology |
|---|---|
| Runtime | Node.js |
| Package Manager | pnpm |
| Framework | React Router |
| UI Components | shadcn/ui |
| Database ORM | Drizzle ORM |
| Form Management | conform |
| Logging | winston |
| Error Handling | option-t |
| E2E Test | Playwright |
| Database | PostgreSQL |
See Directory Structure Documentation.
See Error Handling Documentation.
See Specification Documentation.
Install the dependencies and set up lefthook:
pnpm installCopy the .env.example file to .env and set the environment variables:
cp .env.example .envStart the database:
docker compose up -dStart the development server with HMR:
pnpm devYour application will be available at http://localhost:5173.
Two authentication methods are implemented: Email OTP (One Time Password) and SSO.
For Email OTP sign-in, the OTP is output as a server log. For SSO, Keycloak is used as an IdP that can be run locally. The following user is created in Keycloak by default:
- username: test-user
- password: password
Create a production build:
pnpm buildTo build and run using Docker:
docker compose -f compose.prod.yaml build
# Run the container
docker compose -f compose.prod.yaml upWhen modifying your database schema, follow these steps:
- Generate migration scripts based on your schema definitions:
pnpm db:generate- Run the generated migration scripts:
pnpm db:migrateFor other migration strategies, please refer to Drizzle migrations fundamentals.