Plataforma Interactiva para Aprender Linux — Domina los fundamentos de Linux a través de misiones gamificadas, ejecución de comandos y niveles progresivos.
Estado Actual: ✅ SEMANAS 1-17 COMPLETADAS | Listo para deployment en Vercel
# Terminal 1: Backend
cd backend && npm install && npm run dev
# Terminal 2: Frontend
cd frontend && npm install && npm run dev
# Navegador
# http://localhost:5173
# 1. Registrarse/Iniciar sesión
# 2. Seleccionar misión y escribir comandos en la terminal
# 3. Ganar XP, subir de nivel, desbloquear logros5 Mundos de Aprendizaje | 85 Misiones Linux | 20 Niveles de Progresión | 14 Logros
- Conceptos:
uname,/etc/os-release, familias de distros - Software Libre: FSF, OSI, GPL vs MIT
- Alternativas open-source: Office, diseño, herramientas de desarrollo
- Servidores: Apache, Nginx, MySQL, Postfix
- Navegación:
ls,pwd,cd,mkdir,rmdir - Manipulación:
cp,mv,rm,touch,cat - Permisos:
chmod,chown,umask, ACLs - Búsqueda:
find,locate,grep
- Procesos:
ps,top,htop,kill,nice - Servicios:
systemctl,service,init - Usuarios:
useradd,userdel,groups,sudo - Logs:
journalctl,tail,dmesg
- Configuración:
ifconfig,ip,route - Diagnóstico:
ping,traceroute,netstat,ss - Servicios:
ssh,ftp,curl,wget - Firewall:
iptables,ufw
- Bash: variables, operadores, estructuras
- Funciones: definir, parámetros, return
- Loops:
for,while,until - Avanzado:
sed,awk,regex, pipes - Proyectos:
cron, background jobs, logging
- 20 Niveles con progresión XP no-lineal (0-9070 XP total)
- Recompensas por misión: XP + monedas
- Notificaciones automáticas de nivel-up con animaciones
- Bonificaciones y seguimiento de nivel-up
- 12 Badges Desbloqueables Automáticamente:
primer_paso— Completa tu primer questnivel_5/10/20— Alcanza hitos de nivelmundo_1/2/3— Completa la progresión de mundosvelocista— Completa 5 quests en un díacoleccionista— Completa 50 questscompletista— Domina los 95 questssin_errores— Completa mundo sin fallosguerrero_persistente— Persiste y reintenta desafíos
- Validación de prerequisitos: algunos quests requieren misiones previas
- Indicadores visuales de candado mostrando requisitos faltantes
- Curva de dificultad progresiva entre mundos
- Ranking Global: Top 10 jugadores por XP total
- Ranking por Mundo: Clasificación de completación por mundo
- Estadísticas Personales: Rango individual, progresión, logros
- Medallas: 🥇🥈🥉 para los top 3
- 6 enemigos narrativos: Zombie Process, Daemon Descontrolado, Jefe de Procesos, Syntax Error, Loop Infinito, Dragón Final
- Encuentros de combate integrados con quests de jefe
- Mecánicas de derrota/reintento con persistencia
- 5 NPCs Guardianes con personalidades y lore profundo
- Linux el Sabio, Grep-ild, Chmod-ard, Kernel el Forjador, Sudo-Man
- Narrativa coherente "El Reino del Kernel"
- Diálogos contextuales por misión
- Intro cinematográfica — pantalla completa con efecto typing
- Interludios entre mundos — narrativa al desbloquear cada mundo
- Contenido educativo interactivo — archivos de lore en
/reino/dentro del sandbox - Historia de Linux, distribuciones, licencias, software libre
- Spotlight overlay que enfoca cada elemento de la UI
- 5 pasos explicando: Nav, Misiones, Terminal, Barra, Detalle
- Se muestra solo la primera vez (skippable con ESC)
LinuxQuest/
├── frontend/ # React 18 + Vite
│ ├── src/
│ │ ├── components/ # Componentes reutilizables
│ │ ├── pages/ # Componentes de página (Game, Stats, etc)
│ │ ├── hooks/ # Custom React hooks
│ │ ├── store/ # Gestión estado Zustand
│ │ ├── utils/ # Funciones auxiliares
│ │ └── App.jsx # Router principal
│ └── vite.config.js
│
├── backend/ # Node.js + Express
│ ├── src/
│ │ ├── models/ # Modelos BD (User, Quest, Progress)
│ │ ├── routes/ # Endpoints API
│ │ ├── middleware/ # Auth, validación, errores
│ │ ├── services/ # Lógica de negocio
│ │ ├── config/ # Configs (Achievements, NPCs, Enemies)
│ │ ├── utils/ # Helpers (XP system, achievement checker)
│ │ ├── security/ # Módulos de seguridad
│ │ └── server.js # Setup Express
│ ├── scripts/
│ │ ├── init-db.js # Inicializar BD
│ │ ├── seed-quests.js # Poblar 95 misiones
│ │ ├── seed-achievements.js # Poblar logros
│ │ └── audit-monitor.js # Auditoría en tiempo real
│ └── package.json
│
├── docs/ # Documentación
│ ├── roadmap.md # Plan de 12 semanas
│ ├── SECURITY.md # Guía de seguridad completa
│ ├── SECURITY-HARDENED.md # Checklist validación seguridad
│ ├── LINUXQUEST_CONTENT.md # Referencia BD de misiones
│ └── DEPLOYMENT.md # Guía deployment producción
│
└── README.md # Este archivo
Frontend:
- React 19 + Vite (build rápido & HMR)
- TailwindCSS (diseño responsivo)
- Zustand (gestión estado ligera)
- xterm.js (emulación de terminal)
- React Router (enrutamiento SPA)
- Socket.io cliente (actualizaciones en tiempo real)
Backend:
- Node.js 20 + Express
- PostgreSQL (Neon) con SSL
- Socket.io (servidor WebSocket)
- JWT authentication (expiración 7 días)
- bcrypt (hashing de contraseñas)
- Helmet.js (headers seguridad HTTP)
- express-validator (validación inputs)
- express-rate-limit (protección DOS)
Infraestructura:
- Frontend Deploy: Vercel (auto-scaling, CDN)
- Backend Deploy: Fly.io (containers Linux)
- Base de Datos: Neon PostgreSQL (managed, auto-backups)
- Todo con HTTPS y renovación automática de certificados
LinuxQuest implementa seguridad integral para prevenir abusos y proteger el sistema:
- Convierte comandos interactivos a no-interactivos (cat, less, man, top)
- Reescribe rutas del sistema a sandbox-local (/etc/os-release → sandbox/etc/os-release)
- Agrega flags de seguridad automáticamente (ping -c 4, curl --connect-timeout)
- Registro completo de todos los intentos de comando
- Detección de amenazas en tiempo real
- Capacidades de análisis forense
- Solo 40+ comandos aprobados
- Bloquea comandos peligrosos:
sudo,docker,mount,dd, etc.
- Bloquea inyección shell:
&&,||,;,$(), sustitución de comandos - Previene redirecciones:
>,<,>>,|
- Prevención de path traversal
- Protección de archivos sensibles (
/etc/*,/root,/sys,/proc) - Aislamiento por usuario
- Cada misión tiene comandos específicos permitidos
- Quest 1 (uname): solo
unamepermitido - Quest archivos: solo
ls,cd,pwd,catpermitidos
- Directorio de ejecución aislado por usuario:
/tmp/linuxquest-sandbox/user_<id>/ - Acceso cruzado entre usuarios es imposible
- Auto-cleanup al desconectar
- Timeout: máximo 30 segundos por comando
- Output: buffer máximo 5MB
- Líneas: máximo 10,000 líneas de output
- Previene agotamiento de recursos
- Helmet.js: CSP, X-Frame-Options: DENY, HSTS, protección MIME sniffing
- CORS: Solo dominio frontend (verificación estricta de origen)
- Rate Limiting: 100 requests/15min global + 10 comandos/10s por usuario
- Validación Input: Enfoque regex en email, username, password
Resultado: Matemáticamente imposible escapar validación o comprometer el sistema.
LinuxQuest funciona perfectamente en Desktop, Tablet y Móvil con una experiencia optimizada para cada dispositivo.
Terminal en Móvil:
- Input invisible que captura teclado virtual de iOS/Android
- Barra de teclas rápidas: Tab, Enter, Ctrl+C, Esc, ↑, ↓, ←, →
- Focus automático al tocar el área del terminal
Navegación Móvil:
- Menú hamburguesa
☰en pantallas < 768px - Dropdown nav con XP, nivel, y opciones
- Menú se cierra automáticamente al navegar
Touch Targets (WCAG):
- Todos los botones/inputs: mínimo 44x44px
- Cumplimiento de estándares de accesibilidad
- PixelInput, QuestCard, Login/Register optimizados
Responsive Layout:
- Media queries en 768px (tablet) y 480px (móvil)
- Tipografía fluida con
clamp() - Grid de stats: 4 cols (desktop) → 2 cols (móbil)
- Scroll suave en iOS:
-webkit-overflow-scrolling: touch
Componentes Actualizados:
- Menu.jsx — Hamburguesa + dropdown
- Terminal.jsx — Input proxy + quick keys
- IntroOverlay.jsx — Separadores dinámicos
- PixelInput.jsx — Touch target sizing
- QuestCard.jsx — Buttons más grandes
- LoginPage/RegisterPage — Errores accesibles
node -v # v20+
npm -v # v10+# 1. Clonar e instalar dependencias
git clone <repo>
cd LinuxQuest
# 2. Setup backend
cd backend
npm install
# 3. Inicializar base de datos
npm run init-db # Crear tablas
npm run seed-quests # Poblar 95 misiones
npm run seed-achievements # Poblar logros
# 4. Setup frontend
cd ../frontend
npm install
# 5. Variables de entorno
# backend/.env:
DATABASE_URL=postgresql://... # URL Neon PostgreSQL
JWT_SECRET=tu_secret_32_chars_minimo
FRONTEND_URL=http://localhost:5173
NODE_ENV=development
# frontend/.env (opcional):
VITE_API_URL=http://localhost:3000# Terminal 1: Backend
cd backend
npm run dev
# Se ejecuta en http://localhost:3000
# Terminal 2: Frontend
cd frontend
npm run dev
# Se ejecuta en http://localhost:5173POST /api/auth/register— Crear cuentaPOST /api/auth/login— Iniciar sesión y obtener JWTGET /api/auth/me— Perfil del usuario actual
GET /api/quests— Todas las misionesGET /api/quests/:id— Detalles de misiónGET /api/quests/world/:worldId— Misiones por mundoPOST /api/quests/:id/complete— Marcar misión completa (otorgar XP)GET /api/quests/user/progress— Progreso de misiones del usuarioGET /api/quests/user/stats— XP, nivel, monedas del usuario
GET /api/achievements— Todos los logrosGET /api/achievements/mine— Logros ganados del usuario
GET /api/leaderboard/top— Top 10 jugadores globalesGET /api/leaderboard/world/:worldId— Ranking por mundoGET /api/leaderboard/player/:userId— Estadísticas & rango del jugador
GET /api/npcs— Todos los NPCsGET /api/npcs/world/:worldId— NPCs del mundoGET /api/enemies— Todos los enemigosGET /api/enemies/world/:worldId— Enemigos del mundo
command— Ejecutar comando Linux en sandboxxp:earned— Notificación XP al clienteachievement:unlocked— Logro ganado
id, email, username, password (hasheada), xp, level, coins, created_atid, title, world_id, difficulty, description, hint, required_command,
allowed_commands[], prerequisites[], reward_xp, reward_coinsuser_id, quest_id, status (locked/in_progress/completed),
attempts, completed_atid (unique_key), title, description, icon, xp_bonususer_id, achievement_id, earned_at (timestamp)| Métrica | Cantidad |
|---|---|
| Mundos de Aprendizaje | 5 |
| Misiones | 85 |
| Niveles de Progresión | 20 |
| Badges de Logros | 14 |
| Personajes NPC | 5 |
| Encuentros de Jefe | 5 |
| Endpoints API | 16+ |
| Capas de Seguridad | 9 |
| Archivos de Auditoría | 4 |
| Líneas de Código | 5,000+ |
1. Ir a https://vercel.com
2. Conectar cuenta GitHub
3. Importar: proyecto/LinuxQuest
4. Directorio raíz: frontend/
5. Variables de entorno:
VITE_API_URL=https://linuxquest-backend.fly.dev
6. Hacer deploy (Vercel auto-detecta Vite)# Ya deployado en:
# https://linuxquest-backend.fly.dev
# Health check:
# https://linuxquest-backend.fly.dev/api/healthEstado: ✅ LIVE
95 Misiones: SEEDED
12 Logros: SEEDED
Todas las tablas: CREADAS
- Roadmap — Cronograma de 12 semanas y estado de completación
- Guía de Seguridad — Arquitectura de seguridad completa
- Seguridad Endurecida — Checklist validación seguridad
- Contenido de Misiones — Referencia completa BD de misiones
- Deployment — Instrucciones deployment producción
- ✅ Semanas 1-4: Setup + Frontend + Backend + Autenticación
- ✅ Semana 5: Sistema de Misiones + Ejecución de Comandos
- ✅ Semana 6: Validación Sandbox + Seguridad (8 capas)
- ✅ Semana 7: Sistema XP + Progresión de Niveles (20 niveles)
- ✅ Semana 8: Desbloqueo de Quests + Sistema de Logros (14 badges)
- ✅ Semana 9: Sistema de NPCs + Polish de UI
- ✅ Semana 10: Sistema de Combate + Batallas de Jefes
- ✅ Semana 11: Tabla de Clasificación + Página de Estadísticas
- ✅ Semana 12: Endurecimiento de Seguridad + Listo para Producción
- ✅ Semana 13: Pixel Art Design System
- ✅ Semana 14: Sandbox Hardening + Mocks Educativos (35 mocks)
- ✅ Semana 15: Terminal Themes + Responsive
- ✅ Semana 17: Terminal/Sandbox Overhaul (preprocessor + sandbox enriquecido)
- ✅ Semana 18: Reorganización LPI (85 misiones) + Lore + Intro + Tutorial
Estado: 🟢 LISTO PARA PRODUCCIÓN
- Verificar login/register en producción
- Testing de carga con usuarios concurrentes
- Testing de penetración de seguridad
- Aplicación móvil (React Native)
- Dashboard de análisis avanzados
- Modo competitivo/torneos
- Características comunitarias (foros, chat)
Creado: 2026-04 | Stack: React + Node.js + PostgreSQL Seguridad: Helmet.js + pipeline validación 8 capas Deployment: Vercel + Fly.io + Neon
Última Actualización: 2026-04-27 | Las 12 Semanas Completas ✅