# EMERGES TES - Backend API Backend para gestión de contenido de EMERGES TES. ## 🚀 Inicio Rápido ### 1. Instalar dependencias ```bash cd backend npm install ``` ### 2. Configurar variables de entorno ```bash cp .env.example .env # Editar .env con tus credenciales de PostgreSQL ``` ### 3. Crear base de datos ```bash npm run db:create ``` Este comando: - Crea la base de datos `emerges_tes` si no existe - Ejecuta todas las migraciones SQL - Crea el esquema completo ### 4. Migrar contenido inicial ```bash npm run migrate ``` Este comando migra el contenido de `src/data/*.ts` a PostgreSQL. ### 5. Iniciar servidor ```bash npm run dev ``` El servidor estará disponible en `http://localhost:3000` ## 📁 Estructura ``` backend/ ├── src/ │ ├── api/ # Endpoints de la API (FASE 2+) │ ├── db/ # Utilidades de base de datos │ ├── migrations/ # Migraciones de datos │ └── utils/ # Utilidades ├── config/ │ └── database.js # Configuración de PostgreSQL ├── scripts/ │ ├── db-create.js # Crear BD y ejecutar migraciones │ └── migrate-content.js # Migrar contenido TypeScript → PostgreSQL └── package.json ``` ## 🔧 Scripts Disponibles - `npm run dev` - Iniciar servidor en modo desarrollo - `npm start` - Iniciar servidor en producción - `npm run db:create` - Crear base de datos y ejecutar migraciones - `npm run migrate` - Migrar contenido desde TypeScript ## 📊 Estado de Implementación ### ✅ FASE 1: Infraestructura Base (Actual) - ✅ Estructura de directorios - ✅ Scripts SQL de creación de esquema - ✅ Configuración de PostgreSQL - ✅ Scripts de migración básicos - ✅ Servidor Express básico ### ⏳ FASE 2: API REST (Próxima) - Endpoints GET para lectura - Sincronización de contenido - Cache y optimización ### ⏳ FASE 3: Panel Admin (Futuro) - Autenticación - Editores de contenido - Validación clínica ## 🔐 Seguridad - Las credenciales de BD deben estar en `.env` (no commitear) - JWT para autenticación (FASE 3) - Validación de entrada en todos los endpoints ## 📝 Notas - Este backend es independiente de la app React - La app React solo LEE contenido (pull-only) - El panel admin (futuro) será quien ESCRIBA contenido