Files
localesp/docs/03-decisions.md
2026-05-20 14:05:55 +02:00

50 lines
1.9 KiB
Markdown

# Registro de decisiones
Lista corta y cronológica de decisiones que merecen ser revisadas más
adelante. Formato ADR ligero.
## D-001: SPA de una sola página
**Contexto**: el uso principal es ver un mapa y unos detalles.
**Decisión**: una sola página, sin router. El formulario es un panel/modal en
la misma vista.
**Consecuencia**: si en el futuro hay vistas adicionales (estadísticas, perfil
del negocio en URL propia), habrá que introducir React Router. Reevaluar
cuando aparezca el segundo caso de uso navegable.
## D-002: Capa de servicios
**Decisión**: todo acceso a datos pasa por `src/services/businessRepository.js`.
**Razón**: cumplir Dependency Inversion (SOLID). Los componentes no saben si
los datos vienen de un mock, de Supabase o de un JSON.
**Consecuencia**: cambiar de proveedor es modificar un único archivo.
## D-003: Modelo de datos mínimo
Campos del negocio:
- `id` (string)
- `name` (string)
- `category` (string)
- `address` (string)
- `description` (string)
- `contact` (string, opcional)
- `lat` (number)
- `lng` (number)
- `status` (`pending` | `approved` | `rejected`)
- `createdAt` (ISO string)
Sin slugs, sin fotos, sin tags. Reevaluar tras feedback de la comunidad.
## D-004: Sin autenticación en el prototipo
**Razón**: el visitante no necesita cuenta. El moderador opera en el panel del
backend.
**Reevaluar si**: aparecen casos de uso que requieran identidad (favoritos,
edición por el dueño del negocio).
## D-005: Idioma
El prototipo está en español, sin i18n. Si la organización quiere expandirse,
añadir `react-i18next` cuando exista una segunda lengua real, no antes.
## D-006: Mock de datos en el prototipo
El repositorio entregado usa un mock en memoria con varios negocios de
ejemplo. La organización debe decidir el backend antes de pasar a producción.
La interfaz del repositorio (`getApproved`, `submit`) está pensada para
mapearse 1:1 a Supabase u otro BaaS.