4b1f356fab1c471afd0335b167ac658c47782e04
- Replace Bun with pnpm 9 + Turborepo + tsx; apps/api renamed to apps/backend - Split backend into http/, modules/, lib/ layers mirroring tai-specguard - Add use-case + Result pattern, Problem Details RFC 7807, basePath /api/v1 - Mount Better Auth at /api/v1/auth, keep session-auth whitelist - Split Prisma schema into prisma/models/*, generate into generated/ - Rework packages/shared into lib/ + schemas/ with pagination DTOs - Implement health, groups, students, payments, waitlist modules - Add vitest suite with prisma mocks (21 tests), biome lint - Point web client to /api/v1/auth and /api/v1/groups/from-organization
Gruperly
Monorepo de Gruperly. Consulta stack.md para arquitectura y especificaciones.
Stack
- Package manager: pnpm 9
- Monorepo: pnpm workspaces + Turborepo
- Backend (
apps/backend): Node + Hono (@hono/node-server) + Prisma + PostgreSQL + Better Auth - Frontend (
apps/web): React 19 + TypeScript + TanStack Router + TanStack Query + Tailwind v4 - Shared (
packages/shared): esquemas Zod, tipos,Resulty Problem Details compartidos
Estructura
apps/
backend/ # Backend (Node + Hono + Prisma, tsx)
web/ # Frontend (React PWA)
packages/
shared/ # Esquemas Zod y tipos compartidos
config/ # tsconfig base compartido
Comandos
pnpm install # Instala dependencias de todos los workspaces
pnpm dev # Levanta la API (4000) y la web (6173) vía Turborepo
pnpm typecheck # tsc --noEmit en todos los paquetes
pnpm lint # biome check (backend y shared)
pnpm --filter @gruperly/backend test # vitest (backend)
pnpm --filter @gruperly/backend db:push # Aplica el esquema de Prisma a la base de datos
pnpm --filter @gruperly/backend db:studio # Abre Prisma Studio
Setup de base de datos
- Crea una base PostgreSQL y copia
apps/backend/.env.example→apps/backend/.env, ajustandoDATABASE_URL. - Ejecuta
pnpm --filter @gruperly/backend db:generateypnpm --filter @gruperly/backend db:push(opnpm --filter @gruperly/backend db:migrateen desarrollo).
Description
Languages
TypeScript
98.7%
CSS
1%
HTML
0.3%