Sistema integral de control y acceso a la maquina Cabina AQ
Si usas Windows, antes de instalar las dependencias de Python, asegúrate de tener:
undefinedVisual C++ Build Toolsundefined
undefinedRust y Cargoundefined
undefinedVerifica la instalación:undefined
rustc --version
cargo --version
Si alguno de estos comandos falla, revisa la instalación.
Estos requisitos son necesarios para compilar extensiones nativas de algunos paquetes de Python (como pydantic-core). Si no los tienes, la instalación de dependencias puede fallar con errores sobre ‘link.exe’, Visual Studio, Rust o Cargo.
undefinedSoftware requerido:undefined
undefinedHardware recomendado:undefined
cd /ruta/deseada
# Asumiendo que ya tienes el código en /Users/keaf/Downloads/panel-kryon
undefineda) Crear entorno virtual:undefined
undefinedEn macOS/Linux:undefined
cd backend
python3 -m venv venv
source venv/bin/activate
undefinedEn Windows:undefined
Abre una terminal en la carpeta backend:
cd backend
python -m venv venv
Activa el entorno virtual según tu terminal:
. .\venv\Scripts\Activate.ps1
venv\Scripts\activate.bat
Si ves un error de permisos en PowerShell, ejecuta una vez:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Luego, continúa con la instalación de dependencias.
undefinedb) Instalar dependencias:undefined
undefinedEn macOS/Linux:undefined
pip install -r requirements.txt
undefinedEn Windows:undefined
python -m pip install -r requirements.txt
undefined⚠️ Si ves un error como ‘link.exe not found’, ‘error: linker link.exe not found’, o te pide Visual Studio/Build Tools al instalar dependencias en Windows:undefined
Algunos paquetes de Python (como pydantic-core) requieren compilar extensiones nativas y necesitan el compilador de C++ de Microsoft (link.exe) instalado y en el PATH.
undefinedSolución:undefined
python -m pip install -r requirements.txt
Esto es necesario solo si ves errores de compilación relacionados con ‘link.exe’, Visual Studio, o mensajes que mencionan el compilador de C++.
undefined⚠️ Si ves un error relacionado con Rust/Cargo o pydantic-core al instalar dependencias en Windows:undefined
Algunos paquetes de Python (como pydantic-core) requieren compilar extensiones nativas y necesitan que Rust y Cargo estén instalados y en el PATH.
undefinedSolución:undefined
rustc --version
cargo --version
python -m pip install -r requirements.txt
Esto es necesario solo si ves errores de compilación relacionados con pydantic-core, maturin, o mensajes que mencionan Rust/Cargo.
undefinedc) Configurar variables de entorno:undefined
Crear archivo .env en la carpeta backend/:
# Base de datos (SQLite por defecto)
DATABASE_URL=sqlite:///./app.db
# Seguridad
SECRET_KEY=tu-clave-secreta-super-segura-cambiar-en-produccion
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=10080
# CORS (para desarrollo local)
CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
# Directorio de media
MEDIA_DIR=./media
# Superadmin inicial
INITIAL_SUPERADMIN_EMAIL=admin@panelkryon.com
INITIAL_SUPERADMIN_PASSWORD=admin123
INITIAL_SUPERADMIN_NAME=Super Admin
undefined⚠️ Importante: En producción, cambia
SECRET_KEYy las credenciales del superadmin.
undefinedUsar USB para archivos de media (opcional):undefined
Si deseas que los archivos de audio/video estén en un USB externo en lugar de la carpeta local, cambia MEDIA_DIR en el archivo .env:
# Local (por defecto):
MEDIA_DIR=./media
# USB en Windows (ejemplo letra E:):
MEDIA_DIR=E:\panel-kryon\media
# USB en macOS:
MEDIA_DIR=/Volumes/USB/panel-kryon/media
undefined⚠️ Nota: El USB debe estar conectado antes de iniciar el backend. Usa siempre la misma letra de unidad en Windows.
undefinedd) Resetear la base de datos (opcional):undefined
Para formatear la base de datos y volver a ejecutar el seed inicial:
undefinedEn macOS/Linux:undefined
cd backend
source venv/bin/activate
python reset_db.py
undefinedEn Windows:undefined
# Si recibes error de seguridad, ejecuta primero:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
cd backend
.\venv\Scripts\Activate.ps1
python reset_db.py
El script eliminará todas las tablas, las recreará y ejecutará el seed inicial (plan básico, superadmin, modos de luz, categorías).
undefined⚠️ Advertencia: Este comando borra todos los datos existentes. Úsalo solo en desarrollo.
undefinede) Migrar terapias desde USB (opcional):undefined
Si tienes un USB con terapias pre-configuradas (audio/video), puedes importarlas a una instalación fresca.
⚠️ Importante: La migración se ejecuta desde el sistema donde está instalado Panel Kryon, apuntando al USB.
undefinedOpción 1 - Windows (más fácil):undefined
Conecta el USB y ejecuta MigrarTerapias.bat con doble clic:
E:\panel-kryon\MigrarTerapias.bat
El script detecta automáticamente dónde está instalado Panel Kryon.
undefinedOpción 2 - Manual (cualquier OS):undefined
backend del sistema:cd C:\Panel-Kryon-V2\backend # Windows
cd /path/to/panel-kryon/backend # macOS/Linux
.\venv\Scripts\Activate.ps1 # Windows PowerShell
source venv/bin/activate # macOS/Linux
python migrar_terapias.py --usb E:\panel-kryon # Windows
python migrar_terapias.py --usb /Volumes/USB/panel-kryon # macOS
El script:
backend/media/undefined💡 Tip: Usa
--dry-runpara ver qué se haría sin ejecutar cambios.
undefinedf) Auto-iniciar con Windows (opcional):undefined
Para que Panel Kryon se inicie automáticamente cuando enciendas la computadora:
AutoIniciar.bat a:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
AutoIniciar.bat:set "PANEL_PATH=C:\Panel-Kryon-V2"
El script:
undefinedOpción A: Usando el script de inicio (recomendado):undefined
cd backend
chmod +x start.sh # Solo la primera vez en macOS/Linux
./start.sh
El backend estará disponible en http://127.0.0.1:8000
undefinedOpción B: Manualmente:undefined
cd backend
source venv/bin/activate
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
undefinedEn otra terminal:undefined
cd external-ui
python3 -m http.server 5173
El frontend estará disponible en http://localhost:5173
undefinedBackend health check:undefined
curl http://127.0.0.1:8000/health
# Respuesta esperada: {"status": "ok"}
undefinedAPI docs:undefined
Abrir en navegador: http://127.0.0.1:8000/docs
undefinedFrontend:undefined
Abrir en navegador: http://localhost:5173
undefinedLogin admin:undefined
http://localhost:5173/admin/login.htmladmin@panelkryon.comadmin123 (usar las credenciales de tu .env)undefinedPara Administradores:undefined
http://localhost:5173/admin/login.htmlundefinedPara Usuarios:undefined
http://localhost:5173/login.htmlselection.htmlsession.htmlundefinedError: ModuleNotFoundErrorundefined
cd backend
pip install -r requirements.txt
undefinedError: Puerto 8000 o 5173 en usoundefined
# Para backend, cambiar puerto:
uvicorn app.main:app --reload --port 8001
# Para frontend, cambiar puerto:
python3 -m http.server 5174
undefinedError: Base de datos bloqueadaundefined
# Reiniciar el backend
cd backend
./start.sh
Panel Kryon V2 es una plataforma para administrar terapias (audio/video), usuarios, créditos y sesiones, con un backend FastAPI y una UI estática desacoplada para prototipado visual. El backend expone una API REST con autenticación JWT, gestión de planes y créditos, catálogos de terapias, sesiones, analíticas y categorías/modos de luz. La UI externa (carpeta external-ui/) ofrece páginas HTML/CSS/JS con interacciones simuladas para flujos de usuario y administración. 【F:backend/app/main.py†L1-L92】【F:backend/app/auth.py†L1-L110】【F:external-ui/README.md†L1-L190】
undefinedComponentes principales:undefined
undefinedBackend (FastAPI + SQLAlchemy)undefined
/media).undefinedUI externa (HTML/CSS/JS estático)undefined
/ (raíz)
├─ backend/ # API FastAPI, modelos y migraciones
├─ external-ui/ # UI estática (HTML/CSS/JS)
└─ env.example # Plantilla de variables de entorno
backend/: Código del servidor, configuración, modelos, routers y arranque. 【F:backend/app/main.py†L1-L92】external-ui/: Maquetas y flujo visual del sistema, sin persistencia real. 【F:external-ui/README.md†L1-L190】env.example: Variables de entorno de referencia. 【F:env.example†L1-L12】El backend usa FastAPI con un ciclo de vida (lifespan) que:
audio, video)./media como archivos estáticos.undefinedEndpoints base:undefined
/health: health check./: raíz con metadata de la API. 【F:backend/app/main.py†L69-L92】La configuración se basa en pydantic-settings y se carga desde .env con valores por defecto para:
DATABASE_URLSECRET_KEY, ALGORITHM, expiración del tokenCORS_ORIGINSMEDIA_DIREl repositorio incluye un env.example como base para variables de entorno. 【F:env.example†L1-L12】
Se usa SQLAlchemy con un engine creado desde DATABASE_URL y SessionLocal como session factory. get_db() es la dependencia estándar para inyectar la sesión en los endpoints. 【F:backend/app/db.py†L1-L21】
El sistema soporta SQLite, MySQL y PostgreSQL de forma intercambiable. Solo necesitas cambiar la variable DATABASE_URL en el archivo .env:
# SQLite (desarrollo local, sin servidor - RECOMENDADO para desarrollo)
DATABASE_URL=sqlite:///./panel_kryon.db
# MySQL (XAMPP u otro servidor MySQL)
DATABASE_URL=mysql+pymysql://root:@127.0.0.1:3306/panel_kryon?charset=utf8mb4
# PostgreSQL (producción)
DATABASE_URL=postgresql+psycopg2://user:password@localhost:5432/panel_kryon
undefinedNotas:undefined
PyMySQL (ya incluido en requirements.txt).psycopg2-binary (ya incluido en requirements.txt).Después de cambiar la URL, ejecuta python reset_db.py para inicializar la nueva base de datos.
Los modelos representan el dominio de usuarios, planes, terapias, créditos, sesiones y analítica:
User, con Role (superadmin/admin/user), balance de créditos y plan asociado. 【F:backend/app/models.py†L10-L46】Plan y relación UserPlan. 【F:backend/app/models.py†L50-L90】CreditLedger para registrar movimientos. 【F:backend/app/models.py†L93-L106】Category creada por admin. 【F:backend/app/models.py†L110-L125】LightMode (fijos, no modificables por usuarios). 【F:backend/app/models.py†L129-L146】Therapy con duración, intensidad, acceso por plan y rutas de media. 【F:backend/app/models.py†L149-L207】Playlist y PlaylistItem. 【F:backend/app/models.py†L211-L238】TherapySession con estado, duración y créditos consumidos. 【F:backend/app/models.py†L245-L289】ActivityLog para acciones del sistema. 【F:backend/app/models.py†L292-L315】DailyStats para agregados. 【F:backend/app/models.py†L318-L345】SECRET_KEY y expiración por minutos.require_auth, require_admin, require_superadmin. 【F:backend/app/auth.py†L1-L110】/api/auth)/docs, registro de usuarios y endpoint /me. 【F:backend/app/routers/auth.py†L1-L110】/api/admin/users)/api/admin/plans)/api/therapies)/api/playlists)/api/sessions)/api/analytics)/api/categories)La carpeta external-ui/ contiene pantallas HTML/CSS/JS para prototipar la experiencia de usuario sin backend real. Su objetivo es iterar UX/UI sin depender de la base de datos ni hardware. 【F:external-ui/README.md†L1-L40】
Incluye páginas para el flujo de usuario (loading, login, selección, sesión, pantalla extendida) y para administración (login y dashboard). 【F:external-ui/README.md†L80-L150】
app.js maneja la navegación y la interacción visual (tabs, selección de terapias, loading y timer de sesión en modo mock). 【F:external-ui/app.js†L1-L200】
Se recomienda levantar un servidor estático, por ejemplo con python -m http.server, y abrir http://localhost:5173/. 【F:external-ui/README.md†L54-L78】
MEDIA_DIR con subcarpetas audio y video./media. 【F:backend/app/main.py†L30-L64】【F:backend/app/routers/therapies.py†L114-L268】backend/requirements.txt. 【F:backend/requirements.txt†L1-L10】.env en backend/ (o en la raíz según convención) con las variables necesarias (DATABASE_URL, SECRET_KEY, etc.). El backend admite configuración por .env vía config.py. 【F:backend/app/config.py†L1-L26】env.example sirve como guía inicial. 【F:env.example†L1-L12】El script backend/start.sh inicia el servidor en el puerto 8000 y utiliza un entorno virtual en backend/venv/. 【F:backend/start.sh†L1-L16】
admin o superadmin. 【F:backend/app/auth.py†L74-L110】/docs (Swagger UI, al levantar el backend)./health. 【F:backend/app/main.py†L69-L83】