Proyecto cultural interactivo desarrollado por Berenice Solohaga. Catálogo de estatuas y monumentos de Rosario (Argentina), explorable por búsqueda, filtros, línea de tiempo histórica y (próximamente) mapa interactivo, con panel de administración propio para cargar y editar el contenido.
🔗 Demo online: statuapp3.netlify.app 💼 LinkedIn: linkedin.com/in/berenice-solohaga
| Home | Explorar |
|---|---|
![]() |
![]() |
| Cronología |
|---|
![]() |
Difundir el patrimonio escultórico de Rosario con datos verificados (fuentes documentadas por cada monumento: relevamiento propio, Municipalidad de Rosario, Wikimedia Commons) en una app moderna y fácil de navegar.
- Búsqueda y filtro por barrio en la sección "Explorar".
- Fichas de cada monumento con autor, año, material, ubicación y un dato curioso.
- Línea de tiempo histórica ("Cronología") agrupada por década.
- Mapa interactivo con Leaflet (implementado en el código; pendiente de reflejarse en el deploy de la demo — ver nota abajo).
- Panel de administración con login propio para cargar, editar y dar de baja monumentos, con dashboard de métricas de calidad de datos (fotos y coordenadas faltantes) y visitas.
⚠️ Nota sobre la demo: el código de esta rama ya incluye el mapa interactivo, pero el deploy publicado en Netlify puede tardar en reflejarlo según cuándo se disparó el último build.
Es una aplicación Next.js full-stack, no un frontend separado de un backend externo:
- La UI pública y el panel de administración viven en el mismo proyecto (App Router).
- Los datos de los monumentos se sirven a través de rutas de API propias de Next.js
(
app/api/...), respaldadas por Netlify Blobs en producción (y un JSON local en desarrollo), sembradas inicialmente desde un dataset propio versionado en el repo. - El panel admin usa autenticación por sesión firmada con HMAC-SHA256 (Web Crypto API), verificable tanto en el middleware (Edge) como en los route handlers (Node) — sin depender de una librería de sesiones externa.
app/ # rutas públicas (home, explorar, cronología, mapa, ficha de monumento)
app/admin/ # panel de administración (CRUD de monumentos, dashboard)
app/api/ # rutas de API (públicas y de administración)
app/src/data/statues/ # dataset semilla y tipos
lib/ # storage (Netlify Blobs), autenticación de sesión, utilidades
docs/screenshots/ # capturas para este README
- Frontend/Full-stack: Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS v4, Radix UI
- Mapas: Leaflet / react-leaflet
- Formularios: react-hook-form + zod
- Almacenamiento: Netlify Blobs (producción) / archivo JSON local (desarrollo)
- Email: Resend (para notificaciones desde el panel admin)
- Infraestructura: Netlify (hosting, funciones serverless y build)
git clone https://github.com/bereail/statuapp.git
cd statuapp
npm install
npm run dev
# abrir http://localhost:3000Copiar .env.example a .env.local y completar:
| Variable | Descripción |
|---|---|
ADMIN_USER |
Usuario para entrar al panel de administración |
ADMIN_PASS |
Contraseña del panel (usar una fuerte, no la de ejemplo) |
ADMIN_SESSION_SECRET |
Secreto para firmar la sesión — generar con node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" |
RESEND_API_KEY |
(Opcional) para el envío de emails desde el panel admin |
En desarrollo, sin Netlify Blobs configurado, los datos se guardan en un JSON local (carpeta
.data/, ignorada por git).
- Dataset de monumentos con fuentes documentadas
- Búsqueda, filtros y línea de tiempo
- Panel de administración con autenticación propia
- Mapa interactivo (implementado, pendiente de reflejarse en la demo pública)
- Códigos QR físicos instalados en el espacio público
- Modo offline / PWA
Berenice Solohaga — Desarrolladora Full Stack · Rosario, Argentina LinkedIn
- Código: MIT
- Datos e imágenes: CC-BY 4.0
- Fuentes: Municipalidad de Rosario, relevamiento propio, Wikimedia Commons


