Get your development environment set up and running.
Node.js 18+
pnpm 9.15+
Docker (for Neo4j and Redis)
# Clone and install
git clone < repository-ur l >
cd platform
pnpm install
# Start databases
docker compose up -d
# Run migrations
pnpm db migrate
# Start development
pnpm dev
The web app runs at http://localhost:3000.
Command Description pnpm devStart all apps in development mode pnpm buildBuild all packages and apps pnpm lintRun Biome linting pnpm lint:fixAuto-fix lint issues pnpm typecheckTypeScript validation pnpm testRun all tests pnpm turbo run test --filter=webRun tests for a single workspace via Turbo pnpm --filter web testRun tests for a single workspace via pnpm pnpm --filter @repo/web-e2e test:e2eRun Playwright E2E tests pnpm codegenGenerate GraphQL types
/
├── apps/
│ ├── web/ # Main Next.js 16 application
│ └── storybook/ # Component development environment
├── packages/
│ ├── core/ # Shared business logic (Clean Architecture)
│ ├── luz/ # UI component library
│ └── typescript-config/ # Shared TypeScript configuration
└── turbo.json # Turbo task configuration
apps/web
├── @repo/core (use cases, repositories, types)
└── @repo/luz (UI components)
packages/luz (standalone)
packages/core (standalone)
// Core package (business logic)
import {
CreateTransaction, // Use case
OrganisationRepository, // Repository
NotFoundError, // Domain error
} from '@repo/core' ;
// Luz package (UI components)
import {
LayoutContainer,
Stack,
DataBlock,
BigTabs,
} from '@repo/luz' ;
// Server actions
import { createServerAction } from 'zsa' ;
import { useServerAction } from 'zsa-react' ;
Kebab-case for all files: create-transaction.ts, modern-slavery.tsx
Co-located actions : page.tsx + actions.ts in same folder
Context files : [feature]-context.tsx
Issue Solution Dynamic params in Next.js 16 Always await params and await searchParams Data loading in useEffect Load data in Server Components instead Prop drilling Use Context or composition Server Actions too complex Keep thin: Auth → Validate → Use Case → Revalidate