VueOS es un simulador de sistema operativo móvil basado en web de alta fidelidad, diseñado y desarrollado como un proyecto académico universitario para la cátedra de Sistemas de Operación en la Universidad de José Antonio Páez (UJAP).
El simulador ofrece la ilusión perfecta de un sistema operativo nativo corriendo sobre el navegador web, implementando gestión de recursos de memoria (RAM) simulados, integración con hardware real (batería, cámara, micrófono), seguridad robusta, ventanas multitarea y una red descentralizada de comunicación en tiempo real.
- Simulación Realista de RAM: El "Kernel" del sistema (gestionado a través de Pinia State Store) controla dinámicamente la memoria disponible, asignando espacio para cada proceso/app que se abre.
- OOM Killer (Out-Of-Memory): Monitoreo constante del consumo de memoria. Si la RAM excede el límite máximo del dispositivo, el Kernel ejecuta un algoritmo de eliminación de procesos en segundo plano para liberar recursos basándose en la prioridad de uso.
- Multitarea Real: Ventanas flotantes interactivas con persistencia de estado mediante
<KeepAlive>, permitiendo minimizar, maximizar, mover y forzar el cierre de apps desde el panel de "Recientes".
- Pantalla de Bloqueo (LockScreen): Inicio de sesión protegido con un código PIN personalizable desde la configuración.
- Modo Claro / Oscuro Nativo: Integración completa y fluida de temas de color a nivel de interfaz de usuario con Tailwind CSS.
- Battery Status API: Lectura y visualización en tiempo real del porcentaje de batería, estado de carga e indicaciones visuales en la barra de estado superior.
- Cámara de Video: Acceso directo a la cámara física del dispositivo huésped utilizando la API
navigator.mediaDevices.getUserMedia.
- VueText (Mensajería Instantánea): Aplicación de mensajería en tiempo real que se conecta a través de WebSockets con un backend concurrente en Go.
- VueCall (Llamadas de Voz P2P): Cliente de telefonía IP directo basado en PeerJS (WebRTC). Permite emitir y recibir llamadas de audio reales entre navegadores utilizando números de teléfono ficticios configurados por cada usuario.
- Framework: Vue 3 (Composition API) inicializado con Vite.
- Estilos: Tailwind CSS con soporte para temas dinámicos (
dark:). - Manejador de Estado (Kernel): Pinia.
- Protocolos de Red: WebSocket Client & PeerJS (WebRTC).
- Persistencia: Dexie (IndexedDB) para notas y configuraciones.
- Lenguaje: Go (Golang).
- Arquitectura: Servidor concurrente de señalización con patrón Hub/Manager implementando
goroutinesychannelspara el manejo seguro de WebSockets de alto rendimiento.
MobileOS/
├── README.md # Este documento de presentación y guía
├── package.json # Configuración y dependencias del root
├── mobile-os-frontend/ # Código fuente de la interfaz del SO móvil (Vue 3)
│ ├── src/
│ │ ├── store/ # KernelStore (RAM, Batería, Procesos) y NetworkStore
│ │ ├── components/ # Componentes modulares (StatusBar, LockScreen, Desktop)
│ │ └── apps/ # Ecosistema de aplicaciones (Calculadora, Ajustes, Notas, Cámara, etc.)
│ └── package.json
└── mobile-os-backend/ # Código fuente del servidor de señalización (Go)
├── main.go # Punto de entrada del servidor WebSocket
├── hub.go # Gestor de conexiones de dispositivos y enrutamiento
├── client.go # Abstracción de conexión de socket cliente
└── message.go # Estructuras de mensajería del sistema- Tener instalado Node.js (versión 18 o superior).
- Tener instalado Go (Golang) (versión 1.20 o superior).
Para máxima comodidad, puedes arrancar todo directamente desde la carpeta raíz del proyecto (MobileOS/) usando los siguientes scripts de npm:
- Iniciar Frontend:
npm run dev:frontend
- Iniciar Backend (Go):
npm run start:backend
- Dirígete a la carpeta del backend:
cd mobile-os-backend - Ejecuta el servidor en modo desarrollo:
El servidor de señalización se iniciará en
go run .ws://localhost:8080/ws.
- Abre una nueva terminal y navega al frontend:
cd mobile-os-frontend - Instala las dependencias necesarias:
npm install
- Inicia el servidor de desarrollo local:
El frontend por defecto estará disponible en
npm run dev
http://localhost:5173.
Debido a las políticas de seguridad de los navegadores modernos, el acceso a la Cámara y al Micrófono requiere de una conexión HTTPS segura. Para probar el simulador en teléfonos móviles reales de forma local:
- Utiliza Pinggy para exponer tu puerto local
5173a la red pública con HTTPS:ssh -p 443 -R0:localhost:5173 a.pinggy.io
- Abre la URL con
https://...provista por Pinggy en los navegadores de tus dispositivos móviles y disfruta de la experiencia nativa de VueOS con soporte completo de Cámara y llamadas P2P en tiempo real.