Chat English App - Reporte Técnico del Proyecto
Resumen Ejecutivo
Chat English App es una aplicación web full-stack desarrollada para la práctica conversacional en inglés, utilizando inteligencia artificial y reconocimiento de voz. La aplicación implementa un sistema de conversación interactiva que permite a los usuarios practicar inglés mediante diálogos guiados por IA, con funcionalidades avanzadas de síntesis de voz, seguimiento de progreso y un modelo de negocio freemium.
Arquitectura del Sistema
Stack Tecnológico
Frontend:
- React 18.3.1 - Biblioteca principal para la interfaz de usuario
- Vite 5.4.10 - Bundler y servidor de desarrollo moderno
- React Router DOM 6.28.0 - Navegación client-side
- Tailwind CSS 3.4.14 - Framework de utilidades CSS
- Axios 1.7.7 - Cliente HTTP para comunicación con API
Backend:
- Node.js con Express.js 4.21.2 - Servidor web y API REST
- MongoDB con Mongoose 8.9.2 - Base de datos NoSQL y ODM
- JWT (jsonwebtoken 9.0.2) - Autenticación basada en tokens
- BCrypt 5.1.1 - Encriptación de contraseñas
Servicios Externos:
- OpenAI API 4.71.1 - Generación de conversaciones y síntesis de voz (TTS)
- Stripe 18.2.0 - Procesamiento de pagos
- Resend 4.5.1 - Servicio de email transaccional
Características Principales
1. Sistema de Conversación IA
- Conversaciones contextuales generadas por OpenAI GPT
- Múltiples temas predefinidos (música, deportes, viajes, películas, etc.)
- Progresión inteligente de diálogo basada en el nivel del usuario
- Feedback automático con correcciones y sugerencias al finalizar sesiones
2. Reconocimiento y Síntesis de Voz
- Implementación nativa del Web Speech API para reconocimiento de voz
- Síntesis de voz con OpenAI TTS API (modelo tts-1) para respuestas del bot
- Detección automática de dispositivos móviles para optimizar UX
- Control inteligente de estados de audio para evitar interferencias
- Sistema de caché de audio para optimizar performance
3. Gestión de Usuarios y Autenticación
- Registro y login con validación robusta usando express-validator
- Sistema de niveles de inglés (Beginner, Basic, Pre-Intermediate, etc.)
- Autenticación JWT con middleware de protección
- Sistema de recuperación de contraseñas con tokens seguros
4. Modelo Freemium
- Usuarios gratuitos: 1 sesión de 2 minutos por día
- Usuarios premium: sesiones ilimitadas
- Integración completa con Stripe para pagos seguros
- Webhooks para actualización automática de estatus premium
5. Seguimiento de Progreso
- Sistema de logros diarios automáticos
- Persistencia de conversaciones por tópico
- Conteo inteligente de palabras y duración de sesiones
- Historial de conversaciones recuperable
Principios de Desarrollo Aplicados
Arquitectura Limpia
chat-backend/
├── controllers/ # Lógica de controladores
├── services/ # Lógica de negocio
├── repositories/ # Acceso a datos
├── models/ # Modelos de datos
├── middlewares/ # Middleware personalizado
└── routes/ # Definición de rutas
Separación de Responsabilidades
- Controladores: Manejo de requests/responses HTTP
- Servicios: Lógica de negocio (chatService, achievementService)
- Repositorios: Operaciones de base de datos abstraídas
- Middlewares: Autenticación, rate limiting, validación
Principios SOLID
- Single Responsibility: Cada servicio tiene una responsabilidad específica
- Dependency Inversion: Uso de interfaces para servicios externos (OpenAI, Stripe)
- Open/Closed: Arquitectura extensible para nuevos tipos de logros y funcionalidades
Implementaciones Técnicas Destacadas
1. Sistema de Rate Limiting Inteligente
export const chatLimiter = rateLimit({
windowMs: 10 * 60 * 1000,
max: 30,
message: 'Demasiados mensajes, espera un momento.'
});
2. Gestión de Sesiones de Chat
- Control de duración de sesiones con persistencia en MongoDB
- Límites inteligentes basados en conteo de palabras (500, 800 palabras)
- Generación automática de feedback al finalizar sesiones
3. Hook Personalizado para Speech Recognition
const useSpeechRecognition = () => {
// Detección automática de móvil
// Control de estados de reconocimiento
// Manejo de transcripciones en tiempo real
};
4. Validación y Sanitización Robusta
router.post('/register', [
body('name').trim().notEmpty(),
body('email').isEmail().normalizeEmail(),
body('password').isLength({ min: 6 })
], registerUser);
Seguridad Implementada
Autenticación y Autorización
- JWT con expiración de 30 días
- Middleware de protección para rutas sensibles
- Validación de tokens en cada request autenticado
Protección contra Ataques
- Rate Limiting: Prevención de spam y ataques de fuerza bruta
- CORS configurado: Origen controlado para prevenir ataques cross-origin
- Validación de entrada: Sanitización con express-validator
- Hash de contraseñas: BCrypt con salt de 10 rounds
Gestión Segura de Datos
- Variables de entorno para API keys y secretos
- Tokens de recuperación de contraseña con expiración
- Trust proxy configurado para entornos de producción
Optimizaciones UX/UI
Responsive Design
- Tailwind CSS para diseño mobile-first
- Componentes optimizados para pantallas táctiles
- Detección automática de dispositivos móviles
Gestión de Estados
- Context API para autenticación global
- Estados locales optimizados para performance
- Manejo inteligente de errores con contexto global
Accesibilidad
- Botones con tamaños mínimos táctiles (44px)
- Feedback visual y auditivo
- Navegación por teclado en formularios
Escalabilidad y Mantenibilidad
Arquitectura Modular
- Componentes React reutilizables
- Servicios backend independientes y testeable
- API RESTful bien estructurada
Configuración de Entorno
- Variables de entorno para diferentes stages
- Configuración separada para desarrollo y producción
- Scripts automatizados para deployment
Monitoring y Logs
- Manejo centralizado de errores
- Logs estructurados para debugging
- Interceptors de Axios para manejo de errores HTTP
Métricas del Proyecto
- Frontend: 20+ componentes React modulares
- Backend: 15+ endpoints RESTful
- Base de Datos: 5 modelos principales (User, Conversation, ChatSession, Achievement)
- Servicios Externos: 3 integraciones principales (OpenAI, Stripe, Resend)
- Líneas de Código: ~3,000 líneas (aprox.)
Tecnologías de Deployment
Frontend:
- Vercel para deployment automático
- Variables de entorno configuradas para producción
Backend:
- Configurado para Render u otros servicios cloud
- MongoDB Atlas para base de datos en la nube
- Variables de entorno seguras para API keys
Conclusión
Este proyecto demuestra la implementación de una aplicación web moderna y escalable, aplicando las mejores prácticas de desarrollo full-stack. La arquitectura limpia, el uso de tecnologías actuales y la implementación de funcionalidades avanzadas como IA conversacional y reconocimiento de voz, evidencian competencias técnicas sólidas en desarrollo web profesional.
La aplicación no solo resuelve un problema real (práctica de inglés conversacional) sino que implementa un modelo de negocio viable con características empresariales como autenticación, pagos y analytics de usuario.
Desarrollado por Manuel Peña
Full Stack Developer
Stack Principal: React.js, Node.js, MongoDB, OpenAI API
Período de Desarrollo: 2024-2025