AGENTS.md — CocinaME
Resumen del proyecto
CocinaME es una plataforma móvil de intermediación de comida casera basada en geolocalización: los Consumidores publican Solicitudes y los Emprendedores cercanos responden con Ofertas. Incluye advertencias de alérgenos, adjudicación de Pedidos basada en créditos y coordinación en tiempo real.
Estructura del repositorio
-
academic/si525-assignments/: tesis, SRS, casos de uso, UML y roadmap de V1. Es un submódulo de Git (ramadev). No se edita a la ligera desde este repositorio: los cambios se hacen en el propio submódulo y luego se actualiza el puntero. -
.specify/: configuración, plantillas y scripts de Spec Kit, ymemory/constitution.md. -
specs/: una carpeta por funcionalidad (index.yml,spec.md,plan.md,tasks.mdy artefactos auxiliares cuando correspondan).specs/README.mdregistra el estado del producto. -
docs/: documentación técnica del proyecto, por ejemploCOLOR_THEME.md. -
mobile/(futuro): cliente Flutter para Android e iOS. -
backend/(futuro): API en Spring Boot. -
supabase/(futuro): configuración de Supabase y migraciones SQL versionadas.
Stack técnico
Flutter (móvil) · Spring Boot (backend) · PostgreSQL/PostGIS en Supabase · Supabase Auth · Supabase Storage (imágenes) · Supabase Realtime (solo donde se requieran eventos en tiempo real) · Google Maps Platform (mapas, geocodificación, lugares) · LiteRT (inferencia en el dispositivo) · Gemini API (multimodal remoto, invocado desde el backend) · Firebase Cloud Messaging (notificaciones donde se requieran).
Reglas de arquitectura
- Flutter no tiene autoridad sobre las reglas críticas de negocio.
- Spring Boot es responsable de la lógica de negocio, la autorización y las operaciones transaccionales.
- Flutter nunca escribe directamente en tablas críticas de negocio.
- Gemini se invoca solo a través de Spring Boot, nunca desde Flutter.
- LiteRT se ejecuta localmente en el cliente móvil.
- Los servicios gestionados por Supabase (Auth, Storage, Realtime) son infraestructura, no entidades de dominio.
- Todo cambio en la base de datos se hace mediante migraciones versionadas.
Autoridad de las fuentes académicas
Las rutas son relativas a academic/si525-assignments/degree-project/.
- Los Typst del capítulo IV (
chapters/ch-4-segments/) contienen requisitos y restricciones. - Los casos de uso Typst del capítulo V (
chapters/ch-5-segments/use-cases/) contienen comportamiento y flujos. - Los PlantUML (
assets/uml/puml/) contienen las interacciones y el diseño UML vigentes. academic/si525-assignments/ROADMAP-V1.mdes la línea base aprobada para el desarrollo de V1.- Antes de implementar una funcionalidad, leer solo los artefactos académicos pertinentes y su spec.
- Si una fuente es ambigua, no inventar reglas de negocio, operaciones de dominio, relaciones ni políticas.
- Si la implementación contradice un artefacto académico, informar el conflicto. No conciliarlo en silencio.
Flujo SDD
spec.md: qué debe hacer la funcionalidad.plan.md: cómo se implementará.tasks.md: el trabajo de implementación.constitution.md: principios estables de producto y proceso.AGENTS.md: memoria técnica y del proyecto persistente (este archivo).- Las decisiones propias de una funcionalidad van en su spec o su plan, no aquí.
Convenciones de navegación y publicación de specs
La documentación SDD se publica con Retype. Al crear o modificar una funcionalidad bajo specs/, mantener la metadata de navegación junto con los artefactos fuente; no editar .docs/ ni .retype/ directamente porque son salidas generadas.
- Cada funcionalidad vive en
specs/NNN-slug/y debe incluirindex.ymlpara definir el nombre visible y el orden de la carpeta sin renombrar su ruta física. - El
index.ymlde una funcionalidad usa un label legible, por ejemplo001 — Núcleo de agenda, y unordercoherente con la secuencia de funcionalidades. - Cada Markdown principal de una funcionalidad debe comenzar con front matter YAML de Retype. Mantener estos labels y órdenes salvo que la estructura de la spec requiera algo distinto:
spec.md→label: Especificación,order: 100plan.md→label: Plan de implementación,order: 90tasks.md→label: Tareas,order: 80research.md→label: Investigación,order: 70data-model.md→label: Modelo de datos,order: 60quickstart.md→label: Validación / Quickstart,order: 50
- Si existen
contracts/ochecklists/, pueden incluir su propioindex.ymlpara mostrar nombres legibles comoContratosoListas de verificación. - Los Markdown dentro de
contracts/ychecklists/también deben llevar front matter con unlabeldescriptivo y unordercoherente con la navegación. - El front matter es metadata de presentación: no debe alterar el significado, alcance ni autoridad del contenido SDD.
specs/README.mdsigue siendo el mapa global y estado del producto; no duplicar allí requisitos detallados que pertenezcan a una spec concreta.
Idioma
-
Toda la documentación relevante se redacta en español latinoamericano: constitución, specs, planes, tareas,
docs/y este archivo. Se publicará en Retype y la leerán revisores académicos. -
Los nombres de herramientas, términos técnicos establecidos (por ejemplo, "spec"), rutas e identificadores de código se mantienen en su forma original.
-
Los términos de dominio siguen las fuentes académicas (
Consumidor,Emprendedor,Solicitud,Oferta,Pedido,Publicación).
Desarrollo local
- Móvil: TODO tras el bootstrap de Flutter.
- Backend: TODO tras el bootstrap de Spring Boot.
- Base de datos/migraciones: TODO tras el bootstrap de Supabase. Actualizar cada entrada cuando se inicialice el proyecto correspondiente. No inventar comandos antes.
Convenciones
- Nunca versionar secretos, llaves de API ni credenciales de servicios.
- Mantener la configuración específica de cada entorno fuera del control de versiones.
- Preferir commits pequeños y trazables.
- Mantener los cambios de implementación alineados con su spec.
- No editar directamente los SVG generados a partir de PlantUML; regenerarlos.
- No tratar los artefactos UML o de prototipo históricos como autoridad vigente:
domain-model.puml, elclass-diagram.pumlmonolítico,tecnoupsa/,notes*/yplan/.
Las reglas del producto viven en .specify/memory/constitution.md y el estado del producto vive en specs/README.md.