Opsflow is a workspace and operations platform for client work, project delivery, and team coordination. The product combines a project dashboard, client records, task tracking, and realtime activity updates into a single operational workspace.
- API: NestJS + Prisma + PostgreSQL
- Web app: Next.js + React + Clerk authentication
- Design system: documented in DESIGN.md
- Monorepo structure: root scripts for running both apps together
- apps/api: backend service and Prisma database layer
- apps/web: frontend dashboard and client experience
- DESIGN.md: product design system and interface rules
Install dependencies at the repo root and in each app:
npm install
npm --prefix apps/api install
npm --prefix apps/web installRun both apps in development mode:
npm run devOr run them individually:
npm run dev:api
npm run dev:webCopy apps/api/.env.example to apps/api/.env and set a PostgreSQL connection plus a Clerk secret key.
cd apps/api
npm install
npm run devThe API runs on the configured NestJS development server, typically on port 4000 unless your environment overrides it.
Copy apps/web/.env.example to apps/web/.env.local and set the API origin plus Clerk publishable key.
cd apps/web
npm install
npm run devThe web app runs on the default Next.js port, usually http://localhost:3000.
The complete local and deployment checklist is in docs/ENVIRONMENT.md. Never commit .env or .env.local files or secret values.
The shared product and visual rules live in DESIGN.md. Any new screen or workflow should follow that document so the workspace, dashboard, and product surfaces remain consistent.
From the repo root:
npm run dev— start API + web togethernpm run dev:api— start only the backendnpm run dev:web— start only the frontendnpm run ci:smoke— build the API and web apps and run API testsnpm run e2e— run Playwright browser smoke checks against the web appnpm run lint:api— run API ESLint checks
This repository is currently under active product development. The app structure is in place, but the repo should be kept tidy and the documentation should match the project rather than default starter templates.