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.

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 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.

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.

  1. React client
  2. feature service
  3. shared API client
  4. Express routes
  5. middleware
  6. controllers
  7. models
  8. PostgreSQL

Infraestructura local

Docker Compose

  • backend
  • PostgreSQL
  • pgAdmin
  • database/init.sql inicializa PostgreSQL
  • el backend espera al health check de PostgreSQL

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.

AntescontrollerGestión HTTP + Acceso SQL
Despuéscontroller → model → PostgreSQLGestión HTTP / Acceso SQL

Evidencia 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/dashboard
  • GET /api/profiles/:id/stats
  • GET /api/profiles/:id/inventory
  • GET /api/ranking
  • GET /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.

  1. petición
  2. validación de ID
  3. ruta / controlador
  4. gestió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 compose
  • PostgreSQL → database/init.sql
  • Express backend → DB health check
  • pgAdmin

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.