Primer prototipo

This commit is contained in:
2026-05-20 14:05:55 +02:00
parent c2ab9a46d4
commit c06300833b
22 changed files with 1115 additions and 2 deletions
+65
View File
@@ -0,0 +1,65 @@
// Capa de acceso a datos. Toda la app habla con el backend a través de este
// módulo. Para cambiar a Supabase u otro BaaS, basta con reescribir las dos
// funciones exportadas manteniendo la misma firma.
//
// Modelo de negocio:
// { id, name, category, address, description, contact, lat, lng, status, createdAt }
//
// `status` es uno de: "pending" | "approved" | "rejected".
const sampleBusinesses = [
{
id: "1",
name: "Café del Mercado",
category: "Cafetería",
address: "Plaza Mayor 3, Madrid",
description: "Café de especialidad y bollería artesana.",
contact: "hola@cafedelmercado.example",
lat: 40.4155,
lng: -3.7074,
status: "approved",
createdAt: "2025-01-10T10:00:00Z",
},
{
id: "2",
name: "Librería El Faro",
category: "Librería",
address: "Calle Luna 12, Madrid",
description: "Librería independiente con sección infantil.",
contact: "",
lat: 40.4221,
lng: -3.7059,
status: "approved",
createdAt: "2025-01-12T10:00:00Z",
},
{
id: "3",
name: "Taller Bicicletas Rueda",
category: "Servicios",
address: "Calle Embajadores 45, Madrid",
description: "Reparación y venta de segunda mano.",
contact: "+34 600 000 000",
lat: 40.4078,
lng: -3.7053,
status: "approved",
createdAt: "2025-01-15T10:00:00Z",
},
];
// Estado en memoria. Se reinicia al recargar. Suficiente para el prototipo.
let businesses = [...sampleBusinesses];
export function getApproved() {
return businesses.filter((b) => b.status === "approved");
}
export function submit(data) {
const newBusiness = {
...data,
id: crypto.randomUUID(),
status: "pending",
createdAt: new Date().toISOString(),
};
businesses = [...businesses, newBusiness];
return newBusiness;
}