Files
driving-academy/README.md
2025-10-26 23:39:49 -05:00

274 lines
8.4 KiB
Markdown

# 🚗 Balotario Licencia Clase A - Categoría I
Una aplicación web interactiva desarrollada con Flask para estudiar las preguntas del balotario oficial de la licencia de conducir Clase A - Categoría I del Perú.
## ✨ Características
- **📚 Modo Estudio**: Revisa todas las preguntas con sus respuestas correctas
- **🏋️ Modo Práctica**: Practica con preguntas aleatorias y retroalimentación inmediata
- **📝 Examen Simulado**: Simula el examen real con tiempo limitado
- **📊 Estadísticas**: Seguimiento de tu progreso y precisión
- **🖼️ Imágenes**: Incluye todas las señales de tránsito oficiales
- **📱 Responsive**: Funciona perfectamente en móviles y tablets
- **🎨 Interfaz Moderna**: Diseño atractivo y fácil de usar
## 🚀 Instalación y Configuración
### 🐳 Opción 1: Docker (Recomendado)
```bash
# Clonar el repositorio
git clone <url-del-repositorio>
cd balotario-licencia-a1
# Opción A: Docker Compose (más fácil)
docker-compose up -d
# Opción B: Docker simple
docker build -t balotario .
docker run -p 5000:5000 balotario
# Opción C: Script de utilidades
./scripts/docker.sh compose-up
```
### 🐍 Opción 2: Instalación Local
#### Prerrequisitos
- Python 3.7 o superior
- pip (gestor de paquetes de Python)
#### Pasos de instalación
1. **Clona o descarga el proyecto**
```bash
# Si tienes git instalado
git clone <url-del-repositorio>
cd balotario-licencia-a1
```
2. **Configura las variables de entorno**
```bash
# Linux/Mac
./scripts/env-setup.sh dev
# Windows
scripts\env-setup.bat dev
# O manualmente
cp .env.sample .env
# Edita .env con tus valores
```
3. **Instala las dependencias**
```bash
pip install -r requirements.txt
```
4. **Ejecuta la aplicación**
```bash
python run.py
```
5. **Abre tu navegador**
- Ve a: `http://localhost:5000`
- ¡Listo para estudiar! 🎉
### 🌐 Acceso
- **Docker**: `http://localhost:5000` (o `http://localhost` con Nginx)
- **Local**: `http://localhost:5000`
## ⚙️ Configuración de Variables de Entorno
### 🔧 Configuración Rápida
```bash
# Desarrollo local
./scripts/env-setup.sh dev
# Producción
./scripts/env-setup.sh prod
# Docker
./scripts/env-setup.sh docker
```
### 📋 Variables Principales
| Variable | Descripción | Por Defecto |
|----------|-------------|-------------|
| `SECRET_KEY` | Clave secreta de Flask | `balotario_secret_key_2024_super_secure` |
| `FLASK_ENV` | Entorno de ejecución | `development` |
| `FLASK_DEBUG` | Modo debug | `true` |
| `HOST` | Dirección del servidor | `127.0.0.1` |
| `PORT` | Puerto del servidor | `5000` |
### 📚 Documentación Completa
Ver [docs/ENVIRONMENT.md](docs/ENVIRONMENT.md) para configuración avanzada.
## 📖 Cómo usar la aplicación
### 🏠 Página Principal
- Resumen de estadísticas
- Acceso rápido a todos los modos
- Información del balotario
### 📚 Modo Estudio
- Navega por todas las preguntas secuencialmente
- Filtra por rango de preguntas
- Muestra/oculta respuestas correctas
- Navegación con teclado (flechas y espacio)
### 🏋️ Modo Práctica
- Selecciona el número de preguntas (10, 20, 30, 50)
- Preguntas aleatorias
- Retroalimentación inmediata
- Estadísticas de sesión
### 📝 Examen Simulado
- Configura número de preguntas y tiempo límite
- Cronómetro en tiempo real
- Navegador de preguntas
- Calificación final con porcentaje de aprobación
## 🛠️ Estructura del Proyecto
```
balotario-licencia-a1/
├── app.py # Aplicación Flask principal
├── run_app.py # Script de inicio mejorado
├── config.py # Configuración modular
├── requirements.txt # Dependencias Python
├── data/ # Datos y contenido
│ ├── balotario_clase_a_cat_I.md # 200 preguntas oficiales
│ ├── README.md # Documentación del contenido
│ └── backup/ # Respaldos del contenido
├── templates/ # Templates HTML
│ ├── base.html # Template base
│ ├── index.html # Página principal
│ ├── study.html # Modo estudio
│ ├── practice.html # Modo práctica
│ └── exam.html # Examen simulado
├── static/ # Archivos estáticos
│ ├── css/
│ │ └── custom.css # Estilos personalizados
│ └── js/
│ └── app.js # JavaScript principal
├── test/ # Tests y pruebas
│ ├── README.md # Documentación de tests
│ ├── test_parser.py # Tests del parser
│ ├── test_sounds.html # Tests de sonidos
│ └── ... # Otros tests
├── scripts/ # Scripts de utilidades
│ └── dev.py # Herramientas de desarrollo
├── CHANGELOG.md # Registro de cambios
├── INSTALL.md # Guía de instalación
└── README.md # Esta documentación
```
## 🎯 Funcionalidades Técnicas
### Backend (Flask)
- **API RESTful** para obtener preguntas
- **Sesiones** para estadísticas persistentes
- **Parser inteligente** del markdown con regex
- **Filtros dinámicos** por rango y modo
### Frontend
- **Bootstrap 5** para diseño responsive
- **jQuery** para interactividad
- **Font Awesome** para iconos
- **Animaciones CSS** para mejor UX
- **LocalStorage** para persistencia del lado cliente
### Características Especiales
- **Navegación por teclado** en modo estudio
- **Cronómetro visual** en examen simulado
- **Navegador de preguntas** con estado visual
- **Estadísticas en tiempo real**
- **Confirmación antes de finalizar examen**
## 📊 Datos del Balotario
- **200 preguntas** oficiales
- **Respuestas correctas** marcadas con ✅
- **Imágenes de señales** de tránsito incluidas
- **Categorías**: Reglamentarias, preventivas, informativas
- **Temas**: Normas de tránsito, señalización, seguridad vial
## 🔧 Personalización
### Modificar preguntas
Edita el archivo `balotario_clase_a_cat_I.md` siguiendo el formato:
```markdown
### [NÚMERO]
[PREGUNTA]
a) [OPCIÓN A]
b) [OPCIÓN B]
c) [OPCIÓN C]
✅ d) [OPCIÓN CORRECTA]
```
### Cambiar estilos
Los estilos CSS están en `templates/base.html` dentro de la etiqueta `<style>`.
### Agregar funcionalidades
Modifica `app.py` para agregar nuevas rutas o funcionalidades.
## 🐛 Solución de Problemas
### La aplicación no inicia
- Verifica que Python esté instalado: `python --version`
- Instala las dependencias: `pip install -r requirements.txt`
- Verifica que el puerto 5000 esté libre
### Las preguntas no se cargan
- Verifica que el archivo `balotario_clase_a_cat_I.md` esté presente
- Revisa la consola para errores de parsing
### Problemas con imágenes
- Las imágenes se cargan desde URLs externas
- Verifica tu conexión a internet
## 📝 Licencia
Este proyecto está licenciado bajo la **GNU General Public License v3.0** (GPL-3.0).
### ¿Qué significa esto?
-**Libertad de uso**: Puedes usar este software para cualquier propósito
-**Libertad de estudio**: Puedes estudiar cómo funciona y modificarlo
-**Libertad de distribución**: Puedes redistribuir copias para ayudar a otros
-**Libertad de mejora**: Puedes mejorar el programa y publicar las mejoras
### Condiciones importantes
- 📋 **Código abierto**: Si distribuyes versiones modificadas, debes mantener el código fuente disponible
- 📋 **Misma licencia**: Las obras derivadas deben usar la misma licencia GPL-3.0
- 📋 **Atribución**: Debes mantener los avisos de copyright y licencia originales
### Contenido educativo
El contenido del balotario está basado en las preguntas oficiales del **MTC (Ministerio de Transportes y Comunicaciones) del Perú** y es de dominio público para fines educativos.
Para más detalles, consulta el archivo [LICENSE](LICENSE) en este repositorio.
## 🤝 Contribuciones
¡Las contribuciones son bienvenidas! Puedes:
- Reportar bugs
- Sugerir nuevas funcionalidades
- Mejorar la documentación
- Optimizar el código
## 📞 Soporte
Si tienes problemas o preguntas:
1. Revisa este README
2. Verifica los logs de la aplicación
3. Busca en los issues del repositorio
---
**¡Buena suerte en tu examen de manejo! 🚗💨**