Skip to Content
TechnicalTechnical stack

Technical stack

Densy Club is a TypeScript monorepo. The browser-facing apps run Next.js and React with antd for components and Tailwind for layout; the backend runs NestJS; Turborepo orchestrates tasks and Yarn 4 manages packages.

The stack by layer. Versions are the ones installed today, not targets.

Repository-wide

ToolVersionRole
Node>=24Runtime
Yarn4.18.0Package manager — pinned by devEngines, so npm and npx are refused
Turborepo^2.10.9Task orchestration (build, dev, lint, check-types, test)
TypeScript^6.0.3Language
Prettier^3.9.6Canonical formatter

Three libraries are declared once at the root and shared by every workspace: zod ^4.4.3 for schemas, dayjs ^1.11.21 for dates, and lodash ^4.18.1 for collection helpers.

By workspace

TypeScript is not uniform. Everything runs ^6.0.3 except the API, which is still on ^5.7.3.

WorkspaceStackTypeScript
apps/webNext.js 16.3.1, React 19.2.8, antd ^6.6.1, Tailwind v4^6.0.3
apps/designAs apps/web, plus MDX (@next/mdx), lucide-react, @repo/design-system^6.0.3
apps/docsNext.js 16.3.1, Nextra ^4.6.1 + nextra-theme-docs, Pagefind ^1.5.2^6.0.3
apps/apiNestJS ^11.0.1 on Express, RxJS ^7.8.1, Jest ^30^5.7.3
packages/design-systemantd ^6.6.1, Recharts ^3.10.1, Tailwind v4, Vitest ^3^6.0.3
packages/sharedPlain TypeScript, no framework^6.0.3

typescript must stay a real TypeScript 6. typescript-eslint refuses to run on TypeScript 7, and next dev reinstalls the latest TypeScript if it cannot find one it recognises — which silently undoes the pin. A TypeScript 7 preview is installed alongside as @typescript/native, under a different package name so it cannot be mistaken for the compiler in use.

Planned

Agreed direction, not in the repository yet:

WorkspaceRole
packages/dbPrisma 8 — the database layer
packages/componentsShared React components
apps/adminAdmin panel

apps/api has no database dependency today; Prisma arrives with packages/db.

Last updated on