Proyecto full stack colaborativo · Foco en backend e integración
Evolucionando un backend colaborativo hacia un sistema full stack más estructurado.
DuckyArena es un proyecto educativo de videojuego multijugador construido con React, Node.js, Express, PostgreSQL y Docker. Mi contribución se centró en arquitectura backend, diseño de API, integridad de datos, infraestructura e integración con el frontend.
Contexto del proyecto
DuckyArena nació como un proyecto educativo colaborativo de tres personas. El sistema se desarrolló de forma compartida entre módulos de backend, diseño de base de datos y funcionalidades de aplicación. Mi trabajo se centró principalmente en arquitectura backend, diseño de API, integración y consolidación técnica.
Mi contribución
Mi contribución principal se centró en el backend y la integración del proyecto. Implementé y amplié endpoints REST, refactoricé controladores para mover las consultas PostgreSQL a capas de modelos dedicadas, introduje middleware reutilizable de validación y errores, reforcé las restricciones de integridad de la base de datos y dockericé el backend con inicialización automática de PostgreSQL.
A medida que evolucionó el proyecto, también añadí endpoints agregados orientados a necesidades del frontend e implementé la primera integración React–API mediante un cliente HTTP compartido y un servicio específico de funcionalidad.
Arquitectura del sistema
El sistema actual sigue una arquitectura cliente-servidor ligera. React consume la API REST mediante un cliente HTTP compartido, mientras que el backend separa rutas, gestión HTTP y acceso SQL en capas diferenciadas.
React clientfeature serviceshared API clientExpress routesmiddlewarecontrollersmodelsPostgreSQL
Infraestructura local
Docker Compose
backendPostgreSQLpgAdmin
- database/init.sql inicializa PostgreSQL
- el backend espera al health check de PostgreSQL
Evidencia técnica
Evidencia 01 · Estructura backend
Separación entre HTTP y acceso a datos
Algunos módulos del backend ejecutaban originalmente consultas PostgreSQL directamente desde los controladores. Refactoricé esos módulos para que los controladores gestionaran las responsabilidades HTTP y los modelos dedicados concentraran el acceso SQL.
controllerGestión HTTP + Acceso SQLcontroller → model → PostgreSQLGestión HTTP / Acceso SQLEvidencia 02 · Diseño de API
Diseño de respuestas orientadas al frontend
Añadí endpoints agregados para casos de uso como dashboard de perfil, estadísticas de jugador, inventario, ranking y habilidades de personajes, reduciendo la necesidad de que el frontend reconstruyera datos relacionados mediante múltiples peticiones básicas.
GET /api/profiles/:id/dashboardGET /api/profiles/:id/statsGET /api/profiles/:id/inventoryGET /api/rankingGET /api/characters/:id/abilities
Evidencia 03 · Integridad de datos
Integridad de datos en PostgreSQL
Reforcé las tablas de relaciones con restricciones a nivel de base de datos para impedir estados duplicados o inválidos.
UNIQUE (match_id, profile_id)UNIQUE (profile_id, cosmetic_id)UNIQUE (profile_id, quest_id)CHECK (profile_id <> friend_id)
Evidencia 04 · Consistencia de API
Centralización de responsabilidades repetidas
Introduje validación reutilizable de IDs y middleware compartido de 404/errores para evitar duplicar comportamientos comunes entre rutas individuales.
peticiónvalidación de IDruta / controladorgestión 404 / errores
Algunos controladores heredados todavía devuelven respuestas HTTP 500 directas; la gestión de errores aún no está completamente centralizada.
Evidencia 05 · Infraestructura
Entorno backend reproducible
Dockericé el backend Express y configuré la inicialización de PostgreSQL mediante database/init.sql, utilizando health checks para coordinar el arranque de los servicios.
docker composePostgreSQL → database/init.sqlExpress backend → DB health checkpgAdmin
Evidencia 06 · Integración frontend
Primera integración del frontend con la API
Introduje un cliente HTTP reutilizable y un servicio específico para personajes, y conecté la página React de personajes con la API REST gestionando estados de carga, error, reintento y cancelación de peticiones.
CharactersPagecharactersServiceapiClientGET /api/characters
05
Estado actual
DuckyArena sigue en desarrollo activo. El backend y el modelo PostgreSQL cubren los dominios actuales del juego, la aplicación React cuenta con navegación inicial y la primera funcionalidad conectada a la API ya está integrada. La autenticación, una integración más amplia del frontend, los tests automatizados y CI siguen pendientes.
06
Continuación independiente
El proyecto se originó en un repositorio compartido. Más adelante continué su desarrollo técnico en un repositorio separado para mantener una evolución más clara y seguir desarrollando la arquitectura de forma independiente.