🎓 Ramo Libre
Ramo Libre es una aplicación web completa diseñada específicamente para estudiantes universitarios. Permite gestionar horarios académicos, calcular notas con predicciones inteligentes, organizar eventos académicos y llevar un seguimiento detallado del progreso universitario, todo de manera offline-first.
✨ Características principales
🗓️ Gestión de Horarios
- Múltiples vistas: Lista detallada, cuadrícula semanal y tarjetas compactas
- Gestión de materias: Crear, editar y eliminar asignaturas con información completa
- Horarios flexibles: Soporte para horarios complejos y bloques de tiempo personalizables
- Vista responsiva: Optimizada para escritorio y móviles
📊 Sistema de Notas Inteligente
- Cálculo predictivo: Algoritmo LP Smooth Solution para predicciones realistas
- Configuración flexible: Múltiples categorías de evaluaciones con ponderaciones personalizables
- Análisis visual: Gráficos y visualizaciones del rendimiento académico
- Metas académicas: Establecimiento y seguimiento de objetivos de notas
🎯 Gestión de Eventos
- 4 vistas disponibles: Calendario, Lista, Kanban y Timeline
- Tipos de eventos: Exámenes, tareas, proyectos, fechas límite, clases, reuniones
- Prioridades: Sistema de prioridades (baja, media, alta) con colores distintivos
- Estados: Pendiente, en progreso, completado, atrasado
- Notificaciones: Recordatorios y alertas de eventos próximos
⚙️ Configuración Avanzada
- Gestión de cuenta: Perfiles de usuario con información académica
- Personalización: Vistas preferidas, temas y configuraciones de interfaz
- Gestión de datos: Importación, exportación y limpieza de datos
- Accesibilidad: Cumple estándares WCAG 2.1 con navegación por teclado
🔒 Funcionalidad Offline-First
- Sin cuenta requerida: Uso completo sin necesidad de registro
- Almacenamiento local: Todos los datos se guardan localmente
- Sincronización opcional: Opción de crear cuenta para sincronizar entre dispositivos
- Copia de seguridad: Exportación e importación de datos
🚀 Inicio rápido
Prerrequisitos
Instalación
# Clonar el repositorio
git clone https://github.com/tu-usuario/ramo-libre.git
cd ramo-libre
# Instalar dependencias en todos los workspaces
bun run install:all
# O instalar manualmente
bun install
cd apps/frontend && bun install
cd ../backend && bun install
Desarrollo
# Ejecutar frontend y backend simultáneamente
bun run dev
# O ejecutar por separado
bun run dev:frontend # Frontend en http://localhost:5173
bun run dev:backend # Backend en http://localhost:3000
Construcción para producción
# Construir frontend
bun run build:frontend
# Construir backend
bun run build:backend
# Construir todo
bun run build:all
📁 Estructura del proyecto
ramo-libre/
├── apps/
│ ├── frontend/ # SvelteKit app
│ │ ├── src/
│ │ │ ├── lib/
│ │ │ │ ├── components/ # Componentes reutilizables
│ │ │ │ │ ├── events/ # Vistas de eventos
│ │ │ │ │ ├── modals/ # Modales de la aplicación
│ │ │ │ │ ├── schedule/ # Vistas de horarios
│ │ │ │ │ ├── GradeEquationDisplay.svelte
│ │ │ │ │ ├── Navigation.svelte
│ │ │ │ │ └── UserCard.svelte
│ │ │ │ ├── data/ # Datos de ejemplo
│ │ │ │ ├── stores/ # Estados globales (Svelte stores)
│ │ │ │ └── utils/ # Utilidades y helpers
│ │ │ └── routes/ # Páginas de la aplicación
│ │ │ ├── configuracion/ # Página de configuración
│ │ │ ├── eventos/ # Gestión de eventos
│ │ │ ├── gestion/ # Gestión de datos
│ │ │ ├── horario/ # Gestión de horarios
│ │ │ └── notas/ # Sistema de notas
│ │ └── static/ # Archivos estáticos
│ └── backend/ # Hono + Bun API
│ └── src/
│ └── index.ts
├── packages/
│ └── shared/ # Tipos TypeScript compartidos
│ ├── index.ts
│ └── package.json
└── package.json # Configuración del monorepo
🛠️ Stack tecnológico
Frontend
- Framework: SvelteKit con TypeScript
- Estilos: Tailwind CSS con diseño responsivo
- Estado: Svelte stores para manejo de estado global
- Almacenamiento: localStorage con fallback a IndexedDB
- Accesibilidad: WCAG 2.1 AA compliant
Backend
- Runtime: Bun (JavaScript runtime rápido)
- Framework: Hono (framework web ultraligero)
- Lenguaje: TypeScript
- API: RESTful con validación de tipos
Desarrollo
- Monorepo: Bun workspaces
- Bundling: Vite (frontend) + Bun (backend)
- Linting: ESLint + Prettier
- Tipos: TypeScript estricto en todo el proyecto
🎯 Características implementadas
✅ Completado
🏗️ Infraestructura
- ✅ Estructura del monorepo con Bun workspaces
- ✅ Configuración de desarrollo con hot-reload
- ✅ Frontend SvelteKit completamente funcional
- ✅ Backend Hono con endpoints básicos
- ✅ Sistema de tipos compartidos entre frontend y backend
- ✅ Configuración de Tailwind CSS con tema personalizado
🎨 Interfaz de Usuario
- ✅ Navegación principal responsive
- ✅ Componente de tarjeta de usuario con autenticación opcional
- ✅ Sistema de modales reutilizables
- ✅ Diseño mobile-first con breakpoints responsivos
- ✅ Tema visual cohesivo con paleta de colores académica
� Sistema de Horarios
- ✅ CRUD completo de materias (crear, leer, actualizar, eliminar)
- ✅ Gestión de bloques horarios con validación de solapamientos
- ✅ Vista lista con información detallada por día
- ✅ Vista cuadrícula estilo calendario semanal
- ✅ Vista tarjetas compacta para vista rápida
- ✅ Persistencia en localStorage
- ✅ Datos de ejemplo para demostración
📊 Sistema de Notas
- ✅ Calculadora de notas con algoritmo LP Smooth Solution
- ✅ Gestión de categorías de evaluación con ponderaciones
- ✅ Predicción de notas faltantes para alcanzar metas
- ✅ Visualización de ecuaciones matemáticas
- ✅ Configuración flexible de esquemas de evaluación
- ✅ Análisis de rendimiento por materia
🎯 Gestión de Eventos
- ✅ CRUD completo de eventos académicos
- ✅ Vista calendario mensual con eventos
- ✅ Vista lista cronológica ordenada
- ✅ Vista Kanban por estados de progreso
- ✅ Vista timeline temporal
- ✅ Sistema de prioridades y estados
- ✅ Filtrado y búsqueda de eventos
- ✅ Marcado de eventos completados
⚙️ Configuración y Preferencias
- ✅ Gestión de cuenta de usuario (opcional)
- ✅ Configuración de vistas preferidas
- ✅ Gestión de datos (exportar/importar/limpiar)
- ✅ Configuraciones de accesibilidad
- ✅ Página de configuración completa y accesible
🔐 Autenticación y Datos
- ✅ Sistema de usuario opcional (sin cuenta requerida)
- ✅ Almacenamiento local persistente
- ✅ Gestión de sesiones de usuario
- ✅ Exportación e importación de datos
- ✅ Limpieza selectiva de datos
♿ Accesibilidad
- ✅ Navegación por teclado completa
- ✅ Etiquetas ARIA apropiadas
- ✅ Asociación correcta de labels con controles
- ✅ Estructura semántica con fieldsets/legends
- ✅ Cumplimiento WCAG 2.1 AA
- ✅ Soporte para lectores de pantalla
🔄 En desarrollo
- ⏳ Notificaciones push para eventos
- ⏳ Exportación a formatos estándar (iCal, PDF)
- ⏳ Integración con calendarios externos
- ⏳ Análisis avanzado de rendimiento académico
- ⏳ Modo oscuro
- ⏳ PWA (Progressive Web App)
🚀 Próximas características
- 📱 Aplicación móvil nativa
- 🔄 Sincronización en tiempo real
- 🤖 IA para recomendaciones de estudio
- 📈 Dashboard de analíticas avanzadas
- 🎓 Integración con sistemas universitarios
- 👥 Funcionalidades colaborativas
🔗 API Endpoints
Autenticación
POST /api/auth/login
- Iniciar sesión
POST /api/auth/logout
- Cerrar sesión
GET /api/auth/me
- Información del usuario actual
Usuarios
GET /api/users/profile
- Perfil del usuario
PUT /api/users/profile
- Actualizar perfil
DELETE /api/users/account
- Eliminar cuenta
Horarios
GET /api/schedule
- Obtener horario
POST /api/schedule/subjects
- Crear materia
PUT /api/schedule/subjects/:id
- Actualizar materia
DELETE /api/schedule/subjects/:id
- Eliminar materia
Notas
GET /api/grades
- Obtener notas
POST /api/grades
- Crear nota
PUT /api/grades/:id
- Actualizar nota
DELETE /api/grades/:id
- Eliminar nota
POST /api/grades/calculate
- Calcular predicciones
Eventos
GET /api/events
- Listar eventos
POST /api/events
- Crear evento
PUT /api/events/:id
- Actualizar evento
DELETE /api/events/:id
- Eliminar evento
Utilidades
GET /api/health
- Estado de la API
POST /api/data/export
- Exportar datos
POST /api/data/import
- Importar datos
🎓 Para desarrolladores
Comandos útiles
# Desarrollo
bun run dev # Ejecutar en modo desarrollo
bun run dev:frontend # Solo frontend
bun run dev:backend # Solo backend
# Construcción
bun run build:all # Construir todo
bun run build:frontend # Solo frontend
bun run build:backend # Solo backend
# Utilidades
bun run clean # Limpiar archivos de construcción
bun run install:all # Instalar dependencias en todo el monorepo
bun run type-check # Verificar tipos TypeScript
Estructura de componentes
La aplicación sigue un patrón de componentes reutilizables:
- Páginas (
/routes
): Componentes de nivel superior para cada ruta
- Componentes (
/lib/components
): Componentes reutilizables organizados por función
- Stores (
/lib/stores
): Estado global de la aplicación
- Utilidades (
/lib/utils
): Funciones helper y utilidades
- Tipos (
/packages/shared
): Definiciones de tipos compartidas
Contribuir
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-caracteristica
)
- Realiza tus cambios siguiendo las convenciones del proyecto
- Asegúrate de que todos los tests pasen y no hay errores de TypeScript
- Commit tus cambios (
git commit -am 'Agrega nueva característica'
)
- Push a la rama (
git push origin feature/nueva-caracteristica
)
- Crea un Pull Request
📄 Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
🤝 Agradecimientos
- SvelteKit por el framework frontend moderno y eficiente
- Bun por el runtime JavaScript ultrarrápido
- Hono por el framework web minimalista
- Tailwind CSS por el sistema de diseño utility-first
- Comunidad open source por las herramientas y librerías utilizadas
Ramo Libre - Gestión académica hecha simple. 🎓✨