Monorepo para el sistema Kidyland gestionado con pnpm.
Nota: Este proyecto está configurado para usar SvelteKit 1.30.x (compatible con Node 18). Para usar SvelteKit 2.x necesitarĂas Node.js >= 20.0.0.
# Verificar compatibilidad del entorno
./scripts/check-env.sh
# Instalar todas las dependencias del monorepo (LOCAL, no global)
pnpm install
# Configurar backend Python (LOCAL, en venv)
cd packages/api
python3 -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
⚠️ Importante: Este proyecto NO requiere instalaciones globales. Todo se instala localmente en el proyecto.
kidyland/
├── apps/ # Aplicaciones SvelteKit
│ ├── admin/ # Super Admin
│ ├── admin-viewer/ # Admin Viewer (read-only)
│ ├── reception/ # Panel de recepción
│ ├── kidibar/ # KidiBar product selling
│ └── monitor/ # Timer display
│
├── packages/ # Paquetes compartidos
│ ├── api/ # Backend FastAPI
│ ├── shared/ # Tipos TypeScript compartidos
│ └── ui/ # Componentes Svelte compartidos
│
├── infra/ # Configuración de infraestructura
│ ├── fly/ # fly.io deploy configs
│ └── docker/ # Dockerfiles
│
└── docs/ # Documentación
├── api-spec/ # OpenAPI specs
└── ux/ # Wireframes y mockups
# Ejecutar backend (FastAPI)
pnpm dev:api
# Ejecutar frontend (cuando esté configurado)
pnpm dev:web
# Ejecutar backend + frontend simultáneamente
pnpm dev
# Linting y formateo
pnpm lint # Lint en todos los workspaces
pnpm lint:fix # Lint y auto-fix
pnpm format # Formatear cĂłdigo
# Type checking
pnpm typecheck # Type check en todos los workspaces
pnpm validate # Lint + typecheck completo
# Backend especĂfico
pnpm lint:api # Lint del backend (ruff)
pnpm format:api # Formatear backend (ruff + black)
pnpm typecheck:api # Type check del backend (mypy)
# Instalar dependencias en todo el monorepo
pnpm install
# Agregar dependencia a un workspace especĂfico
pnpm add <package> --filter <workspace>
# Agregar dependencia de desarrollo
pnpm add -D <package> --filter <workspace>
Este monorepo usa pnpm workspaces definidos en pnpm-workspace.yaml:
apps/* - Todas las aplicaciones SvelteKitpackages/* - Paquetes compartidos (API, shared, UI)Este proyecto usa exclusivamente pnpm. NO uses npm o yarn.
pnpm add o pnpm add -Dpnpm-workspace.yamlVer packages/api/README.md para instrucciones de configuraciĂłn del backend.
VersiĂłn: SvelteKit 1.30.x (compatible con Node 18.20.8)
Las aplicaciones SvelteKit se crearán dentro de apps/ usando:
cd apps/<app-name>
pnpm create svelte@latest . --template skeleton
# Luego instalar dependencias especĂficas de SvelteKit 1.30.x
Nota: Usamos SvelteKit 1.30.x en lugar de 2.x porque requiere Node.js >= 20.0.0. Cuando actualices a Node 20+, podrás migrar a SvelteKit 2.x.
Este monorepo incluye herramientas de calidad de cĂłdigo configuradas:
Ver QUALITY_TOOLS.md para documentaciĂłn completa.
Este proyecto incluye un stack completo de testing para garantizar calidad y confiabilidad.
Herramientas:
pytest - Framework de testingpytest-asyncio - Soporte asyncpytest-cov - Coverage reportinghttpx - TestClient asyncfaker - GeneraciĂłn de datos de pruebaComandos:
# Ejecutar todos los tests
pnpm test:api
# Solo tests unitarios
pnpm test:api:unit
# Solo tests de integraciĂłn
pnpm test:api:integration
# Con coverage
pnpm test:api:coverage
# En modo watch (requiere pytest-watch)
pnpm test:api:watch
# En paralelo
pnpm test:api:parallel
InstalaciĂłn:
cd packages/api
pip install -r requirements-dev.txt
Cobertura objetivo: 70% mĂnimo
Herramientas:
vitest - Framework de testing unitario@testing-library/svelte - Testing de componentesplaywright - E2E testingmsw - Mocking de API (opcional)Comandos:
# Tests unitarios
pnpm test:web
# Tests con UI interactiva
pnpm test:web:ui
# Tests con coverage
pnpm test:web:coverage
# Tests en modo watch
pnpm test:web --watch
# Tests E2E
pnpm test:web:e2e
# E2E con UI
pnpm test:web:e2e --ui
# E2E en modo debug
pnpm test:web:e2e --debug
packages/api/tests/
├── unit/ # Tests unitarios (rápidos, aislados)
├── integration/ # Tests de integración (requieren DB)
└── conftest.py # Fixtures compartidas
apps/web/
├── src/
│ └── **/*.test.ts # Tests unitarios (vitest)
└── e2e/ # Tests E2E (playwright)
Los tests se ejecutan automáticamente en cada push y PR mediante GitHub Actions.
Workflow: .github/workflows/test.yml
Incluye:
Ver TESTING_STACK_ANALISIS_COMPLETO.md para documentaciĂłn completa.
Este proyecto está configurado para deployment en Fly.io usando Alpine Linux 3.20:
Cambios importantes:
psycopg2-binary → asyncpg (compatible con musl)Ver COMPATIBILITY_ALPINE_FLYIO_2025.md para análisis completo.