Flowboard is a kanban-style project and task manager, with authentication, mobile support, and a documented REST API.
Deployed project:
- https://flowboard.andrescode.com/ (frontend)
- https://flowboard-backend.andrescode.com/openapi (backend)
- Copy the example environment variables
cp .env.docker.example .env.docker- Run docker compose
docker compose --env-file .env.docker up --build- Wait for
🟢 backend running at localhost:3000to appear
The first build can take around 6 minutes⌛
✅ Access the frontend at
http://localhost:5173(Don't use 127.0.0.1 as it may cause a CORS error)
✅ Access the backend documentation at
http://localhost:3000/openapi # General backend
http://localhost:3000/api/v1/auth/openapi # authentication with better authTest credentials:
{
"email": "alice@example.com",
"password": "admin1234"
}The password comes from the
SEED_USER_PASSWORDvariable
The project uses Turborepo with pnpm workspaces to manage multiple packages efficiently. Turborepo caches the results of tasks like build, lint, and typecheck, and runs them in parallel while respecting dependencies between packages.
flowboard/
├── apps/
│ ├── backend/ # REST API (Elysia + PrismaORM + PostgreSQL)
│ └── frontend/ # SPA (React + React Router DOM + TanStack Query)
└── packages/
├── shared/ # Zod schemas and types shared between apps
├── eslint-config/ # Common ESLint configuration
└── typescript-config/ # Shared base tsconfig
The shared package is key: it defines the Zod validation schemas (projects, tasks, users, authentication) consumed by both the frontend and the backend, guaranteeing end-to-end type consistency.
The scripts available from the monorepo root are:
| Script | Description |
|---|---|
pnpm dev |
Runs frontend and backend in parallel with hot-reload |
pnpm build |
Builds all apps (respects dependencies) |
pnpm lint |
Lints all packages |
pnpm typecheck |
Type checks all packages |
- Create a Postgres database
- Install Node v18+ and pnpm
- Copy and fill in the environment variables:
apps/backend/.env.example→apps/backend/.envapps/frontend/.env.example→apps/frontend/.env
- Run from the root:
pnpm install- Go to the backend, generate prisma, run migrations and seed
cd apps/backend
pnpm run prisma:generate
pnpm run prisma:migrate
pnpm run prisma:seed- Return to the root path and run the project
cd ../..
pnpm devFor more information about the frontend and backend architecture:







