================================================================================
           GUÍA DE INSTALACIÓN Y PUBLICACIÓN EN CPANEL - GANTTSCRUM PRO
================================================================================

Este documento detalla el paso a paso necesario para desplegar el proyecto 
GanttScrum Pro en un servidor compartido con cPanel, utilizando la herramienta 
"Setup Python App" (que usa Phusion Passenger para servir FastAPI).

--------------------------------------------------------------------------------
1. PRERREQUISITOS EN CPANEL
--------------------------------------------------------------------------------
Antes de comenzar, asegúrate de que tu plan de hosting en cPanel cuente con:
- Acceso a la herramienta "Setup Python App" (Soporte WSGI/Passenger).
- Acceso a bases de datos PostgreSQL (o una base de datos externa accesible).
- Acceso a terminal SSH (opcional, pero altamente recomendado para agilizar 
  la instalación de librerías mediante pip).

--------------------------------------------------------------------------------
PASO 1: CONFIGURAR LA BASE DE DATOS (MYSQL / MARIADB)
--------------------------------------------------------------------------------
1. Inicia sesión en tu cPanel.
2. Ve a la sección de "Bases de Datos" -> "Bases de Datos MySQL".
3. Crea una nueva base de datos (ej: `tuusuario_gestion_proyectos`).
4. Crea un nuevo usuario de base de datos con contraseña segura.
5. Asocia el usuario a la base de datos otorgándole todos los privilegios.
6. Ve a la sección "Bases de Datos" -> "phpMyAdmin".
7. Haz clic sobre tu base de datos recién creada en la barra lateral izquierda.
8. Ve a la pestaña "Importar" (Import) en la barra superior.
9. Selecciona el archivo SQL compatible con MySQL provisto:
   - Archivo a importar: `database_schema_mysql.sql` (ubicado dentro de la carpeta docs).
10. Presiona "Importar" (o "Continuar") en la parte inferior.

--------------------------------------------------------------------------------
PASO 2: SUBIR LOS ARCHIVOS DEL PROYECTO
--------------------------------------------------------------------------------
1. En cPanel, ingresa al "Administrador de Archivos" (File Manager).
2. Sube el archivo `project_cpanel.zip` a la raíz de tu cuenta (`/home/tuusuario/`).
3. Haz clic derecho sobre el archivo ZIP y selecciona "Extract" (Descomprimir).
   Esto creará las carpetas del proyecto en tu estructura de archivos.

--------------------------------------------------------------------------------
PASO 3: CONFIGURAR LA APLICACIÓN PYTHON EN CPANEL
--------------------------------------------------------------------------------
1. En el buscador de cPanel, escribe "Setup Python App" e ingresa a la herramienta.
2. Haz clic en "Create Application".
3. Rellena los campos con la siguiente configuración:
   - Python Version: Selecciona 3.10 o superior.
   - Application root: La ruta física donde extrajiste el backend (ej: `project/backend`).
   - Application URL: El subdominio o dominio donde se publicará la API (ej: `api.tudominio.com`).
   - Application startup file: Escribe `passenger_wsgi.py`.
   - Application Entry point: Escribe `application`.
4. Haz clic en "Create". Esto levantará el entorno virtual (VirtualEnv) y creará 
   un archivo base.

--------------------------------------------------------------------------------
PASO 4: CONFIGURAR VARIABLES DE ENTORNO EN EL BACKEND
--------------------------------------------------------------------------------
1. Vuelve al "Administrador de Archivos" y ve a la ruta de tu Application Root (`project/backend`).
2. Edita o crea el archivo `.env` para declarar la cadena de conexión de producción 
   y la clave de API para Gemini:
   
   DATABASE_URL=mysql+aiomysql://tuusuario_dbuser:tu_password@localhost:3306/tuusuario_dbname
   GEMINI_API_KEY=tu_clave_api_gemini_aqui
   SECRET_KEY=clave_secreta_para_firmar_tokens_jwt
   
3. Asegúrate de guardar los cambios en el archivo `.env`.

--------------------------------------------------------------------------------
PASO 5: INSTALAR DEPENDENCIAS (PIP)
--------------------------------------------------------------------------------
1. Copia el comando de activación del entorno virtual que te muestra la parte superior 
   de la pantalla de "Setup Python App" (ejemplo: `source /home/tuusuario/nodevenv/project/backend/3.10/bin/activate`).
2. Abre la terminal de cPanel (o mediante SSH) y pega el comando de activación para 
   entrar al entorno de Python de tu aplicación.
3. Posiciónate en la carpeta del backend (`cd /home/tuusuario/project/backend`) e instala 
   todas las librerías necesarias ejecutando:
   
   pip install -r requirements.txt
   
   (Esto descargará e instalará de forma aislada FastAPI, Uvicorn, SQLAlchemy, asyncpg, etc.)

--------------------------------------------------------------------------------
PASO 6: PUBLICACIÓN DEL FRONTEND Y REDIRECCIÓN
--------------------------------------------------------------------------------
1. El directorio `frontend/` contiene toda la interfaz de usuario estática.
2. Copia todo el contenido de la carpeta `frontend/` dentro del directorio público de tu 
   dominio web (usualmente `public_html/` o la raíz de tu subdominio).
3. Para que el frontend pueda consumir los servicios del backend de Python de forma transparente 
   y evitar bloqueos de CORS, configura una redirección mediante el archivo `.htaccess`.
4. En `public_html/`, edita o crea el archivo `.htaccess` y agrega las siguientes reglas 
   de reescritura de Apache para redirigir las solicitudes `/api/v1` al puerto/servicio del backend:

   RewriteEngine On
   # Redirigir todas las peticiones que comiencen con api/v1 a la app Python
   RewriteCond %{REQUEST_URI} ^/api/v1 [NC]
   RewriteRule ^(.*)$ http://localhost:8000/$1 [P,L]

5. Reemplaza `http://localhost:8000` con el socket local o puerto asignado por cPanel 
   a tu aplicación Python si es que corre en un puerto específico en lugar de Passenger directo.

--------------------------------------------------------------------------------
PASO 7: REINICIO Y VERIFICACIÓN
--------------------------------------------------------------------------------
1. Regresa a "Setup Python App" en cPanel.
2. Presiona el botón "Restart" para recargar la aplicación de Python y limpiar el caché.
3. Abre tu dominio en el navegador y verifica que la pantalla de inicio de sesión se visualice, 
   y que las solicitudes HTTP a `/api/v1/auth/login` retornen estados exitosos.

================================================================================
¡Listo! Tu plataforma GanttScrum Pro ya está en funcionamiento bajo cPanel.
================================================================================
