wearlab-main/docs/ARCHITECTURE.md
2026-07-15 12:22:31 +02:00

3.3 KiB

Arquitectura del proyecto

Estructura del repositorio

wearlab/
├── frontend/                    ← SPA React + Vite + TypeScript
│   ├── Dockerfile               ← multi-stage: dev / build / prod
│   ├── public/
│   └── src/
│       ├── components/          ← componentes UI reutilizables
│       ├── features/            ← módulos por funcionalidad de negocio
│       ├── hooks/               ← hooks globales
│       ├── lib/                 ← cliente HTTP, utilidades
│       ├── pages/               ← componentes de nivel de ruta
│       ├── router/              ← configuración de React Router
│       ├── store/               ← estado global UI
│       ├── styles/              ← CSS global
│       └── types/               ← tipos TypeScript compartidos
│
├── backend/                     ← API REST Symfony 7 + PHP 8.4
│   ├── Dockerfile               ← multi-stage: dev / prod
│   ├── bin/console
│   ├── config/
│   │   └── packages/
│   ├── migrations/
│   ├── public/index.php
│   └── src/
│       ├── Controller/
│       ├── Application/
│       ├── Domain/
│       ├── Infrastructure/
│       └── Shared/
│
├── docker/
│   └── nginx/
│       ├── nginx.dev.conf       ← proxy dev: /api → php-fpm, /* → Vite HMR
│       └── nginx.prod.conf      ← producción: HTTPS, SPA fallback
│
├── docs/
│   └── ARCHITECTURE.md
│
├── docker-compose.yml           ← desarrollo local
├── .env
├── .gitignore
└── README.md

Cómo fluye una petición HTTP

En desarrollo

Browser
  → http://localhost:8080       (Nginx puerto 80)
       ├── /api/*  → FastCGI → backend:9000 (PHP-FPM) → PostgreSQL / Redis
       └── /*      → proxy   → frontend:5173 (Vite HMR con WebSocket)

En producción

Browser
  → https://tudominio.com       (Nginx puerto 443, TLS)
       ├── /api/*  → FastCGI → backend:9000 (PHP-FPM) → PostgreSQL / Redis
       └── /*      → archivos estáticos compilados por Vite (/dist)

Servicios Docker

Servicio Imagen / Build Puerto host Descripción
frontend ./frontend (target: dev) 5173 Vite dev server con HMR
backend ./backend (target: dev) PHP-FPM Symfony
nginx nginx:1.27-alpine 8080 Reverse proxy
postgres postgres:16-alpine 5432 Base de datos
redis redis:7-alpine 6379 Caché y sesiones

Secretos y variables de entorno

Dónde Qué contiene ¿Se commitea?
.env (repo raíz) PostgreSQL, Redis
backend/.env Symfony, DATABASE_URL, REDIS_URL Sí (valores dev)
.env.local Override local del desarrollador No (.gitignore)

Branches (recomendado)

main        ── producción ── protegido ── requiere PR + CI verde
develop     ── staging    ── protegido ── requiere PR + CI verde
feature/*   ── desde develop, merged via PR
fix/*       ── desde develop, merged via PR
hotfix/*    ── desde main, merged a main + develop