Ejecuta Kinora en local
Instala e inicia cada aplicación con Node.js y Yarn, una terminal por aplicación.
Para el paquete Full Stack
Antes de empezar: instala Node.js 22.9 o más reciente (22 para el paquete Backend solo) y ejecuta corepack enable una vez. No hace falta un servidor de base de datos.
Abre cada terminal donde lo esperan los comandos de abajo: dentro de kinora-fitness-full-stack para el stack completo, o junto a la carpeta de la aplicación para un paquete de una sola aplicación.
| Aplicación | Carpeta | Dirección |
|---|---|---|
| API | back-end | localhost:8000Local |
| Panel | dashboard | localhost:3030Local |
Inicia primero la API: con los pasos de abajo, el panel lee todos sus datos de ella.
Inicia la API
Instala y configura
.env.examplefunciona tal cual para el desarrollo local.¿Tienes problemas?Terminalcorepack enable cd back-end yarn install cp .env.example .envCrea la base de datos
yarn seedcreadatabase.sqlite, sus tablas y los datos de demostración. Si lo vuelves a ejecutar, solo añade lo que falta.Terminalenback-endyarn seedInicia el servidor
Terminalenback-endyarn devResultado esperado: localhost:8000/api/healthLocal responde
¿Tienes problemas?{"status":"ok"}.
Inicia la API
Instala y configura
.env.examplefunciona tal cual para el desarrollo local.¿Tienes problemas?Terminalcorepack enable cd kinora-fitness-backend yarn install cp .env.example .envCrea la base de datos
yarn seedcreadatabase.sqlite, sus tablas y los datos de demostración. Si lo vuelves a ejecutar, solo añade lo que falta.Terminalenkinora-fitness-backendyarn seedInicia el servidor
Terminalenkinora-fitness-backendyarn devResultado esperado: localhost:8000/api/healthLocal responde
¿Tienes problemas?{"status":"ok"}. La carga de datos mostró las cuentas con las que iniciar sesión.
Inicia el panel
En una segunda terminal:
Instala y configura
Terminalcd dashboard yarn install cp .env.example .envApúntalo a la API
Abre
dashboard/.envy rellena las dos líneas de la API, que están vacías en el ejemplo. Si las dejas vacías, el panel usa sus datos de ejemplo integrados en lugar de la API.dashboard/.envNEXT_PUBLIC_API_BASE_URL=http://localhost:8000/api NEXT_PUBLIC_WEBSOCKET_BASE_URL=http://localhost:8000Inícialo e inicia sesión
Terminalendashboardyarn devResultado esperado: localhost:3030Local abre el formulario de inicio de sesión, rellenado con el Head Coach:
¿Tienes problemas?headcoach@example.comcon la contraseñaCoach@123./en/auth/login?as=clientrellena el miembro,member@example.comconMember@123. El árabe está en/ar.
Inicia el panel
La API no forma parte de este paquete. No crees todavía un archivo .env: sin él, el panel usa sus datos de ejemplo integrados.
Inícialo e inicia sesión
Terminalenkinora-fitness-dashboardyarn devResultado esperado: localhost:3030Local abre el formulario de inicio de sesión con un aviso "Sample data". No se comprueba la contraseña (el formulario sigue pidiendo al menos 6 caracteres), y lo que cambies se guarda en el navegador.
Cuando tengas la API de la plantilla en marcha, crea .env a partir de .env.example y pon en NEXT_PUBLIC_API_BASE_URL su dirección. Eso es lo que desactiva los datos de ejemplo.
Versión de producción
Las mismas carpetas, construidas una vez y luego iniciadas. Primero configura back-end/.env para producción. Con NODE_ENV=production la API nunca reescribe el esquema por su cuenta: ejecuta las migraciones al iniciar. Se niega a iniciar mientras JWT_SECRET esté vacío o siga con el valor del ejemplo, o mientras CORS_ORIGIN esté vacío.
NODE_ENV=production
JWT_SECRET=<a long random string>
CORS_ORIGIN=http://localhost:3030
FRONTEND_URL=http://localhost:3030Genera el secreto con node -e "console.log(require('crypto').randomBytes(48).toString('hex'))". Después construye la API, crea sus tablas una vez e iníciala. yarn db:sync:prod crea tablas vacías; yarn seed:prod en su lugar, o después, añade los datos de demostración y sus cuentas.
back-endyarn build
yarn db:sync:prod
yarn start:prodDespués el panel, en 3030:
dashboardyarn build
yarn startEl panel incluye su .env al compilar, así que vuelve a ejecutar yarn build después de cambiarlo. Antes de desplegar en cualquier sitio público, lee la lista de comprobación de producción.
Versión de producción
Se construye una vez y luego se inicia. Primero configura .env para producción. Con NODE_ENV=production la API nunca reescribe el esquema por su cuenta: ejecuta las migraciones al iniciar. Se niega a iniciar mientras JWT_SECRET esté vacío o siga con el valor del ejemplo, o mientras CORS_ORIGIN esté vacío.
NODE_ENV=production
JWT_SECRET=<a long random string>
CORS_ORIGIN=https://app.your-domain.comGenera el secreto con node -e "console.log(require('crypto').randomBytes(48).toString('hex'))". CORS_ORIGIN enumera las direcciones de los paneles que llaman a la API, separadas por comas. Después construye, crea las tablas una vez e inicia. yarn db:sync:prod crea tablas vacías; yarn seed:prod en su lugar, o después, añade los datos de demostración y sus cuentas.
kinora-fitness-backendyarn build
yarn db:sync:prod
yarn start:prodVersión de producción
Se construye una vez y luego se inicia en 3030. Sin .env, la build de producción usa los datos de ejemplo exactamente igual que yarn dev.
kinora-fitness-dashboardyarn build
yarn startEl panel incluye su .env al compilar, así que vuelve a ejecutar yarn build después de cambiarlo.
Empieza de cero con datos de demostración nuevos
Detén la API, luego borra el archivo de la base de datos y vuelve a cargar los datos, en la carpeta de la API. Esto borra todo lo que creaste.
rm -f database.sqlite* && yarn seedEn PowerShell:
Remove-Item database.sqlite*; yarn seed