Exposia es un asistente inteligente que ayuda a estudiantes a mejorar sus presentaciones orales mediante análisis de contenido, detección de muletillas, y recomendaciones de mejora.
- Análisis de PDF: Extrae y analiza el contenido de presentaciones
- Transcripción de Audio: Convierte presentaciones orales a texto
- Análisis Inteligente: Compara lo dicho vs. el contenido del PDF
- Detección de Muletillas: Identifica palabras refugio y repeticiones
- Recomendaciones: Sugiere conectores y mejoras en la presentación
- Futuro: Análisis de gestos mediante cámara
Este proyecto sigue Clean Architecture con una clara separación de capas:
📦 Exposia
├── 🔧 Backend (Python + FastAPI)
│ ├── Domain (Entidades y lógica de negocio)
│ ├── Application (Casos de uso)
│ ├── Infrastructure (Supabase, Groq, APIs)
│ └── Presentation (API REST)
│
└── 🎨 Frontend (React + TypeScript)
├── Domain (Modelos)
├── Application (Lógica de negocio)
├── Infrastructure (HTTP, Supabase client)
└── Presentation (Componentes UI)
- NestJS - Framework Node.js con TypeScript y Clean Architecture
- Supabase - Base de datos PostgreSQL y Storage
- Groq API - LLM para análisis de contenido
- Deepgram API - Transcripción de audio de alta precisión
- pdf-parse - Procesamiento de PDFs
- React 18 con TypeScript
- Vite - Build tool
- TailwindCSS - Estilos
- Supabase Client - Conexión con backend
- React Query - Manejo de estado asíncrono
- Node.js 18+
- Cuenta en Supabase (gratis)
- API Key de Groq (gratis)
- API Key de Deepgram (gratis)
git clone <repo-url>
cd ExposiaCleancd backend
npm installCrear archivo .env basado en .env.example:
SUPABASE_URL=tu_supabase_url
SUPABASE_KEY=tu_supabase_anon_key
GROQ_API_KEY=tu_groq_api_key
DEEPGRAM_API_KEY=tu_deepgram_api_keycd frontend
npm installCrear archivo .env basado en .env.example:
VITE_SUPABASE_URL=tu_supabase_url
VITE_SUPABASE_ANON_KEY=tu_supabase_anon_key
VITE_API_URL=http://localhost:3000cd backend
npm run start:devEl backend estará disponible en http://localhost:3000
cd frontend
npm run devEl frontend estará disponible en http://localhost:5173
ExposiaClean/
├── backend/
│ ├── src/
│ │ ├── domain/ # Entidades y reglas de negocio
│ │ │ ├── entities/ # Modelos de dominio
│ │ │ ├── repositories/ # Interfaces de repositorios
│ │ │ └── value_objects/ # Objetos de valor
│ │ ├── application/ # Casos de uso
│ │ │ ├── use_cases/ # Lógica de aplicación
│ │ │ ├── dtos/ # Data Transfer Objects
│ │ │ └── interfaces/ # Interfaces de servicios
│ │ ├── infrastructure/ # Implementaciones concretas
│ │ │ ├── database/ # Supabase DB
│ │ │ ├── storage/ # Supabase Storage
│ │ │ ├── ai/ # Groq API
│ │ │ └── audio/ # Transcripción
│ │ └── presentation/ # API REST
│ │ ├── api/ # Endpoints
│ │ └── middleware/ # Middleware
│ └── tests/
├── frontend/
│ └── src/
│ ├── domain/ # Modelos
│ ├── application/ # Lógica de negocio
│ ├── infrastructure/ # APIs y servicios
│ └── presentation/ # Componentes React
└── README.md
- Usuario sube PDF de su presentación
- Sistema extrae y almacena el contenido
- Usuario graba su presentación oral
- Sistema transcribe el audio a texto
- IA analiza y compara PDF vs. transcripción
- Sistema genera reporte con:
- Muletillas detectadas
- Desviaciones del contenido
- Conectores sugeridos
- Puntuación general
# Backend
cd backend
pytest
# Frontend
cd frontend
npm testMIT
¡Las contribuciones son bienvenidas! Por favor, abre un issue o PR.