Aplicación para gestionar y visualizar la ubicación de desfibriladores (DEAs) en España.
Proyecto desarrollado por Global Emergency - Organización dedicada a mejorar la respuesta ante emergencias.
El proyecto está configurado para hacer auto-deploy de migraciones solo en Vercel y solo en ramas específicas.
Comando de build: node scripts/migrate.js && next build
El script scripts/migrate.js verifica automáticamente:
- ✅ Entorno Vercel: Solo ejecuta migraciones si
VERCEL=1 - ✅ Ramas permitidas: Solo en ramas
mainorefactor(o que contengan estos nombres) - ✅ Prisma Client: Siempre se genera, independientemente de la rama
Esto ejecutará automáticamente:
- Las migraciones de base de datos (solo si estás en Vercel + rama correcta)
- La generación del cliente de Prisma (siempre)
- El build de Next.js
En Vercel, configura la siguiente variable:
DATABASE_URL="postgresql://user:password@host:port/database"- Conecta el repositorio a Vercel
- Configura la variable
DATABASE_URL - Deploy: Vercel ejecutará las migraciones automáticamente
- Seeds (opcional): Ejecuta manualmente si quieres datos de ejemplo:
npm run db:seed
- Node.js 18+
- PostgreSQL con extensión PostGIS
- npm o yarn
-
Clonar el repositorio
git clone <repo-url> cd MarkImages
-
Instalar dependencias
npm install
-
Configurar variables de entorno
cp .env.example .env # Editar .env con tu DATABASE_URL -
Ejecutar migraciones (para desarrollo local)
npx prisma migrate deploy # O usa: npx prisma migrate dev npx prisma generateNota:
npm run buildNO ejecuta migraciones en local (solo en Vercel) -
Seed (opcional)
npm run db:seed
-
Iniciar desarrollo
npm run dev
src/
├── app/
│ ├── page.tsx # Página principal (lista de AEDs)
│ └── api/
│ └── aeds/
│ └── route.ts # API REST para AEDs
├── hooks/
│ └── useAeds.ts # Hook para obtener AEDs
├── types/
│ ├── aed.ts # Tipos de AED
│ └── index.ts # Re-exports
prisma/
├── schema.prisma # Esquema de base de datos
├── seed.ts # Seeds de ejemplo
└── migrations/
└── 20250126000000_init/ # Migración inicial
- Aed: Desfibriladores con toda su información
- AedLocation: Ubicación detallada
- AedResponsible: Responsable/contacto
- AedSchedule: Horarios de disponibilidad
- District, Neighborhood, Street: Sistema de direcciones oficial
Las migraciones se ejecutan automáticamente solo en Vercel en ramas main y refactor.
Para desarrollo local:
# Ver estado
npx prisma migrate status
# Aplicar migraciones
npx prisma migrate deploy
# Crear nueva migración
npx prisma migrate dev --name descripcion_cambio
# Reset completo (CUIDADO: elimina todos los datos)
npx prisma migrate reset- ✅ Lista de AEDs publicados
- ✅ Búsqueda por nombre/código
- ✅ Paginación
- ✅ Auto-deploy condicional de migraciones (Vercel + ramas específicas)
- ✅ Schema normalizado con PostGIS
- Mapa interactivo
- Detalle de AED
- Formulario de registro
- Panel de administración
- Sistema de validación
Lista AEDs publicados con paginación.
Query params:
page(default: 1)limit(default: 50, max: 100)search(opcional): buscar por nombre o código
Response:
{
"success": true,
"data": [...],
"pagination": {
"page": 1,
"limit": 50,
"total": 100,
"totalPages": 2
}
}npm run dev # Desarrollo con Turbopack
npm run build # Build + migraciones
npm start # Producción
npm run db:seed # Ejecutar seeds
npm run db:studio # Abrir Prisma Studio- El proyecto usa Next.js 15 con App Router
- La base de datos requiere PostgreSQL con extensión PostGIS
- Las migraciones se ejecutan automáticamente solo en Vercel en ramas
mainyrefactor - Para desarrollo local, ejecuta las migraciones manualmente con
npx prisma migrate deploy - Solo se muestran AEDs con status
PUBLISHED