# Migración de Mi Panel a otro equipo

Esta guía permite trasladar el proyecto y continuar su desarrollo con Codex sin perder datos.

## 1. Qué debes llevar

1. Copia completa de la carpeta del proyecto, incluida la carpeta database y este archivo.
2. Un respaldo SQL de la base mi_panel hecho desde phpMyAdmin (Exportar > método rápido > SQL).
3. El archivo .env solo por un canal privado. No lo subas a repositorios, chats ni servicios públicos.

No es necesario trasladar node_modules, Composer ni dependencias de terceros: el proyecto no usa paquetes externos.

## 2. Requisitos del nuevo equipo

- Windows con WampServer, Apache y MySQL/MariaDB activos.
- PHP 7.4 o superior.
- Extensiones PHP: pdo, pdo_mysql, openssl, mbstring y session.
- Apache con mod_rewrite habilitado.

El proyecto se ha validado con PHP 7.4.33. Usa una instalación compatible antes de modificar el código.

## 3. Instalación

1. Copia el proyecto, por ejemplo, a C:\wamp64\www\miPanel.
2. Importa el respaldo SQL de la base mi_panel mediante phpMyAdmin.
3. Si partes de una base vacía, importa database/schema.sql.
4. Crea un usuario SQL restringido para la aplicación con SELECT, INSERT, UPDATE y DELETE sobre mi_panel.
5. Crea .env en la raíz a partir de .env.example y completa DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD y APP_TIMEZONE. Nunca documentes ni compartas la contraseña.
6. Inicia Apache y MySQL desde WampServer.
7. Abre http://localhost/miPanel/public/.

El DocumentRoot recomendado de un virtual host es la carpeta public. Si no usas virtual host, la URL anterior funciona cuando la carpeta está bajo www.

## 4. Migración obligatoria de Configuración

Las instalaciones existentes deben ejecutar una vez, con root o una cuenta MySQL con permiso ALTER:

~~~sql
ALTER TABLE users
ADD COLUMN upcoming_tasks_days SMALLINT UNSIGNED NOT NULL DEFAULT 7 AFTER theme;
~~~

El archivo equivalente está en database/migrations/20261023_add_user_settings.sql.

El usuario de aplicación mi_panel_app no debe tener permiso ALTER. Si la migración no se ha aplicado, la aplicación usa 7 días como valor temporal y desactiva el guardado de ese ajuste.

## 5. Comprobaciones posteriores

1. Inicia sesión.
2. Abre Inicio, Tareas, Proyectos, Notas y Configuración.
3. En Configuración, guarda los días de Próximas tareas.
4. Cambia una contraseña de prueba solo si conoces la contraseña actual.
5. Crea, edita y completa una tarea; confirma que aparece en Inicio si tiene fecha dentro del periodo configurado.
6. Ejecuta el lint:

~~~powershell
C:\wamp64\bin\php\php7.4.33\php.exe -l public\index.php
~~~

Opcionalmente ejecuta tests/smoke.php cuando PHP CLI pueda conectar al MySQL local.

## 6. Estado funcional que se debe conservar

- Autenticación, sesión, CSRF, cierre de sesión y límite de intentos.
- Temas claro/oscuro.
- Dashboard con datos reales.
- Proyectos, miembros, archivado y restauración.
- Tareas con tabla, detalle desplegable, creación en modal, edición, búsqueda, prioridades, fechas, completar y borrado lógico.
- Notas con creación, edición, fijado y borrado lógico.
- Configuración de contraseña y periodo de Próximas tareas.
- Sincronización manual: solo recarga el módulo actual y consulta de nuevo la base local; no hay API externa, polling ni sincronización en la nube.

## 7. Para continuar con Codex

Al iniciar una nueva conversación, indica la ruta local del proyecto y pide que lea README.md, ARCHITECTURE.md, FUNCTIONS.md, PROGRESS.md, CODEX.md y este archivo antes de modificar código.

Aclara que no debe usar Git salvo autorización y que debe actualizar PROGRESS.md al finalizar cambios relevantes.
