- Docker y Docker Compose instalados
- Puerto 8000, 5432, 6379 y 8080 disponibles
# Clonar el proyecto
git clone https://github.com/MarLord06/COMSIGNS.git
cd COMSIGNS
# Iniciar servicios
./start-dev.sh- API: http://localhost:8000
- Documentación interactiva: http://localhost:8000/docs
- Redoc: http://localhost:8000/redoc
GET /api/v1/ml/model/info- Información del modeloPOST /api/v1/ml/predict- Predicción de letra (base64)POST /api/v1/ml/predict/upload- Predicción de letra (archivo)
GET /api/v1/ml/tutorial/overview- Resumen del tutorialGET /api/v1/ml/tutorial/step/{step}- Paso específico del tutorialPOST /api/v1/ml/tutorial/progress- Actualizar progreso
POST /api/v1/ml/practice/session- Crear sesión de prácticaPOST /api/v1/ml/practice/result- Enviar resultadosGET /api/v1/ml/practice/leaderboard- Tabla de clasificación
backend/
├── app/
│ ├── main.py # Aplicación principal
│ ├── core/ # Configuración y utilidades
│ │ ├── config.py
│ │ ├── supabase.py # Cliente Supabase
│ │ ├── middleware.py
│ │ └── exceptions.py
│ ├── modules/ # Módulos de funcionalidad
│ │ └── ml/ # Módulo Machine Learning
│ │ ├── schemas.py # Schemas Pydantic
│ │ ├── services.py # Lógica de negocio
│ │ └── routes.py # Endpoints FastAPI
│ └── api/ # Routers de API
│ └── v1/
│ └── api.py
├── requirements.txt
├── Dockerfile
└── .env.example
- backend: API FastAPI con Supabase
- redis: Cache y sesiones
- adminer: Interfaz web para BD
# Entorno
ENVIRONMENT=development
# Supabase
SUPABASE_URL=https://xqdlbbwavnmkewvjaget.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Redis
REDIS_URL=redis://localhost:6379/0
# Seguridad
SECRET_KEY=your-secret-key-here
CONFIDENCE_THRESHOLD=0.65
# Modelo ML
MODEL_PATH=../modelo/model.h5- Framework: TensorFlow 2.x
- Tipo: Clasificación de letras del alfabeto ecuatoriano
- Input: Landmarks de MediaPipe (21 puntos x 3 coordenadas)
- Output: 24 letras (A-Y excluyendo J y Z)
- Recepción de imagen (base64 o archivo)
- Extracción de landmarks con MediaPipe
- Normalización de coordenadas
- Predicción con modelo TensorFlow
- Validación de confianza
- Respuesta con letra y metadatos
- 24 pasos (una letra por paso)
- Orden pedagógico (fácil → difícil)
- Consejos específicos por letra
- Progreso persistente
- Usuario accede al tutorial
- Sistema muestra paso actual
- Usuario practica la seña
- Sistema valida con predicción ML
- Progreso se guarda automáticamente
- Principiante: 8 letras, 10s por letra, 70% confianza
- Intermedio: 8 letras, 8s por letra, 75% confianza
- Avanzado: 8 letras, 6s por letra, 80% confianza
- Base: 100 puntos por letra correcta
- Bonus: Multiplicador por confianza
- Penalty: Reducción por tiempo
- X-Content-Type-Options: nosniff
- X-Frame-Options: DENY
- X-XSS-Protection: 1; mode=block
- Content-Security-Policy configurado
- Pydantic para validación automática
- Límites de tamaño para imágenes
- Sanitización de inputs
- Request/Response logging
- Tiempo de procesamiento
- Errores detallados
- Tiempo de predicción promedio
- Precisión por letra
- Uso de recursos del modelo
# Dentro del contenedor
docker exec -it comsigns-backend pytest
# Con coverage
docker exec -it comsigns-backend pytest --cov=app tests/tests/
├── test_ml/
│ ├── test_services.py
│ ├── test_routes.py
│ └── test_models.py
├── test_core/
│ └── test_config.py
└── conftest.py
ENVIRONMENT=production
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-production-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-production-service-role-key
SECRET_KEY=super-secret-production-keydocker-compose -f docker-compose.prod.yml up -d- FastAPI Docs: https://fastapi.tiangolo.com/
- TensorFlow: https://tensorflow.org/
- MediaPipe: https://mediapipe.dev/
- PostgreSQL: https://postgresql.org/
Desarrollado con ❤️ para la comunidad sordomuda