Detalles técnicos
Resumen de arquitectura, tecnologías, prácticas de seguridad y puntos de integración del proyecto.
Arquitectura
- Aplicación web con backend en Node.js/Express y frontend estático.
- Persistencia en base de datos relacional MySQL.
- Rutas públicas para fichas de mascotas mediante ID/QR.
- API REST para autenticación, gestión de perfil y mascotas.
Stack
Backend
- Node.js + Express
- Generación de códigos con librería QR
- Envío de correos para recuperación de contraseña
Base de datos
- MySQL/MariaDB
- Migraciones ligeras al iniciar (ALTER/CREATE IF NOT EXISTS)
- Tablas: usuarios, mascotas, adopciones, reportes de pérdida, historial médico, fotos, check-ins
Frontend
- HTML/CSS/JS sin framework para landing y vistas públicas
- Dashboard con modales para CRUD de mascotas y perfil
Despliegue
- Rutas y funciones configuradas vía vercel.json
- Activos estáticos servidos desde /public
Seguridad y privacidad
- Autenticación basada en tokens y hashing de contraseñas.
- Control granular de qué datos son públicos en la ficha.
- Protecciones básicas contra inyección y validaciones en servidor.
Modelo de datos (resumen)
- Usuarios: perfil, ciudad, enlaces sociales.
- Mascotas: identificación, ciudad, estado, NFC opcional, QR ID.
- Relaciones adicionales: adopciones, reportes de pérdida, registros médicos, fotos, check-ins.
API (alto nivel)
- /api/auth: registro, login, recuperación y reseteo de contraseña.
- /api/me: perfil del usuario autenticado (GET/PUT).
- /api/pets: CRUD de mascotas, QR y acciones relacionadas.
- /p/:id: ficha pública de mascota por QR/ID.
Variables de entorno
- JWT_SECRET — firma de tokens.
- DB_HOST, DB_USER, DB_PASSWORD, DB_NAME — conexión a MySQL.
- RESEND_API_KEY, FROM_EMAIL, APP_BASE_URL — correo y URLs públicas.