Metabolics.app
Plataforma de nutrición para profesionales en Chile y Cono Sur.
Software para nutricionistas: gestión de pacientes, planificación alimentaria, agenda, pagos, comunicación, gamificación y página web del profesional — todo en un solo lugar.
Estado: MVP en construcción · dominio metabolics.app aún no conectado.
Stack
- SvelteKit 2 + Svelte 5 (runes) + TypeScript
- Tailwind CSS 4 + shadcn-svelte (bits-ui)
- PostgreSQL (Supabase local) + Drizzle ORM
- Supabase Auth vía
@supabase/ssr - Resend para email transaccional
- Umami para analytics self-hosted
- pnpm como package manager
Setup local
# 1. Instalar dependencias
pnpm install
# 2. Arrancar Supabase local (Postgres + Auth + Studio)
pnpm supabase:start
# 3. Configurar variables de entorno
cp .env.example .env
# Pegar los valores de `pnpm supabase:status` en .env
# 4. Crear las tablas en la BD
pnpm db:push
# 5. (Opcional) Resetear BD con datos seed
pnpm supabase:reset
# 6. Arrancar dev server
pnpm dev
Abrir http://127.0.0.1:5173
Otras herramientas útiles:
- Drizzle Studio (GUI de BD):
pnpm db:studio - Supabase Studio (Auth + Storage): http://127.0.0.1:54323
- Inbucket (emails de prueba): http://127.0.0.1:54324
Scripts
pnpm dev # dev server
pnpm build # build de producción
pnpm preview # preview del build
pnpm check # typecheck (svelte-check)
pnpm db:generate # generar migración desde schema
pnpm db:migrate # aplicar migraciones
pnpm db:push # push directo a BD (dev)
pnpm db:studio # Drizzle Studio GUI
pnpm db:seed # seed data
pnpm supabase:start # arrancar Supabase local
pnpm supabase:stop # parar Supabase local
pnpm supabase:status # ver puertos y keys
pnpm supabase:reset # resetear BD + seed
pnpm format # prettier
pnpm format:check # prettier --check
Estructura
src/
├── routes/
│ ├── (marketing)/ # landing, /pricing, /about — públicos
│ ├── (app)/ # panel nutricionista (auth + role=nutritionist)
│ ├── (patient)/ # app del paciente (auth + role=patient)
│ └── auth/ # login, signup, callback, logout
├── lib/
│ ├── components/ui/ # shadcn-svelte (button, card, input, ...)
│ ├── modules/ # los 9 módulos feature-based
│ ├── services/ # cross-cutting (auth, email)
│ ├── server/ # server-only (db, supabase)
│ └── utils/ # helpers
supabase/ # Supabase local config + seed + RLS
drizzle/ # migrations generadas
docs/ # documentación
Documentación
| Archivo | Contenido |
|---|---|
| CLAUDE.md | Contexto para Claude Code, stack, convenciones |
| docs/MVP.md | Especificación completa del MVP |
| docs/ARCHITECTURE.md | Arquitectura del sistema |
| docs/MODULES.md | Cómo agregar un módulo nuevo |
| docs/DATABASE.md | Schema de BD y migraciones |
| docs/DEVELOPMENT.md | Workflow de desarrollo |
| docs/DEPLOY.md | Deploy a producción (Coolify) |
| docs/DESIGN-SYSTEM.md | UI / design system |
| vps-coolify-setup.md | Setup del VPS |
Licencia
Privado · Todos los derechos reservados.