50 lines
1.9 KiB
Markdown
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.
|