Recetario colaborativo con instalación como PWA, sincronizado con Supabase y extracción inteligente de recetas pegadas desde texto plano.
- Node.js 18.17+ y pnpm 8+
- Cuenta gratuita en Supabase y Vercel
pnpm install
pnpm run devCrea un archivo .env.local a partir de .env.example con las claves de Supabase y banderas de características.
Supabase: Ejecuta las migraciones en tu proyecto antes de usar la aplicación:
supabase/migrations/0001_create_recipes.sql- Crea tabla recipessupabase/migrations/0002_add_is_favorite.sql- Añade columna is_favoritePuedes usar
supabase db pusho ejecutar el SQL manualmente en el SQL Editor de Supabase Dashboard. Verdocs/MIGRATIONS.mdpara instrucciones detalladas.
pnpm dev: arranca la aplicación en modo desarrollo.pnpm build: genera la build optimizada para Vercel.pnpm test: ejecuta la suite de Vitest.pnpm test:e2e: ejecuta Playwright (requierepnpm exec playwright install).pnpm lint: ejecuta ESLint y reglas de estilo.pnpm typecheck: verifica los tipos con TypeScript estricto.
Tras la vista previa, pulsa Guardar en Tastebook para enviar la receta a Supabase (requiere sesión iniciada). El listado se refresca automáticamente en /app.
El botón Pegar receta abre un diálogo que usa parseRecipeFromText para detectar título, ingredientes, pasos, porciones, duración y tags heurísticos (horno, postre, rápida).
Consulta docs/EXTRACCION.md para conocer el algoritmo y sus limitaciones.
- Manifesto en
public/manifest.json. - Iconos generados por
scripts/generate-icons.mjs(pnpm generate:icons). - Metadatos iOS en
src/app/layout.tsxy guía en/docs/pwa-ios. next-pwaconfigura el service worker para cachear recursos estáticos y documentos.
- Lista tus recetas guardadas (ordenadas por fecha descendente).
- Muestra duración, porciones y tags.
- Usa React Query para refrescar tras cada guardado.
- Protegeremos esta ruta con Supabase Auth conforme avancemos (ya admite sesión para guardar/listar).
/loginofrece enlace mágico por correo o acceso con GitHub (ambos gratuitos en Supabase)./auth/callbackintercambia el código por una sesión y redirige a/app.- El encabezado muestra el estado de sesión: botón Entrar o menú con Tu recetario + Cerrar sesión.
Toda la documentación de arquitectura, API, seguridad, despliegue y pruebas está en docs/.

