Files
gruperly/README.md
Jose Selesan 4b1f356fab refactor: migrate backend to pnpm monorepo with Hono module architecture
- 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
2026-09-14 09:18:40 -03:00

1.5 KiB

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, Result y 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

  1. Crea una base PostgreSQL y copia apps/backend/.env.example → apps/backend/.env, ajustando DATABASE_URL.
  2. Ejecuta pnpm --filter @gruperly/backend db:generate y pnpm --filter @gruperly/backend db:push (o pnpm --filter @gruperly/backend db:migrate en desarrollo).