# Math2 Platform 🎓

[![Estado](https://img.shields.io/badge/estado-producción%20lista-brightgreen)](https://gitea.cbcren.online/renato97/math2-platform)
[![Tests](https://img.shields.io/badge/tests-123%2F123%20pasando-brightgreen)](https://gitea.cbcren.online/renato97/math2-platform)
[![TypeScript](https://img.shields.io/badge/typescript-73%25%20errores%20corregidos-blue)](https://gitea.cbcren.online/renato97/math2-platform)
[![Docker](https://img.shields.io/badge/docker-9%20servicios-blue)](https://gitea.cbcren.online/renato97/math2-platform)
[![Licencia](https://img.shields.io/badge/licencia-MIT-yellow.svg)](LICENSE)

**Plataforma profesional de aprendizaje de matemáticas - Álgebra Lineal con IA**

Sistema completo para estudiar álgebra lineal con ejercicios de nivel universitario, IA generativa para nuevos problemas, y renderizado LaTeX profesional.

![Dashboard Preview](https://img.shields.io/badge/dashboard-Next.js%2014-black)
![Backend](https://img.shields.io/badge/backend-Node.js%2020-green)
![Database](https://img.shields.io/badge/database-PostgreSQL%2015-blue)
![Cache](https://img.shields.io/badge/cache-Redis%207-red)

---

## 🚀 Características Principales

### 📚 Contenido Académico
- ✅ **45 ejercicios universitarios** organizados en 3 niveles:
  - 🟢 **Básico** (10): Vectores, operaciones fundamentales
  - 🟡 **Intermedio** (15): Productos, determinantes, sistemas
  - 🔴 **Avanzado** (20): Autovalores, diagonalización, SVD - nivel parcial
- ✅ **SolutionSteps detallados** con explicaciones paso a paso en LaTeX
- ✅ **Sistema de hints** con costos estratégicos
- ✅ **Gamificación**: Rankings, badges, streaks diarios

### 🤖 Inteligencia Artificial
- ✅ **Generación automática de ejercicios** via API (Z.ai/DashScope)
- ✅ **Procesamiento de PDFs** matemáticos
- ✅ **Notificaciones Telegram** para admins
- ✅ **Validación de respuestas** matemáticas

### 🎨 Frontend Profesional
- ✅ **Renderizado LaTeX** con `react-katex` + `remark-math`
- ✅ **Next.js 14** con App Router
- ✅ **TypeScript strict** - código enterprise
- ✅ **Tailwind CSS** + shadcn/ui
- ✅ **Responsive design**

### 🛡️ Seguridad Enterprise
- ✅ **JWT** con refresh tokens y blacklist (Redis)
- ✅ **Rate limiting** multi-nivel
- ✅ **XSS protection** en fórmulas matemáticas
- ✅ **Docker Secrets** para credenciales
- ✅ **SSL/TLS** ready

### 🐳 Infraestructura
- ✅ **Docker Compose** - 9 servicios orquestados
- ✅ **PostgreSQL 15** + **Redis 7**
- ✅ **Nginx** reverse proxy con SSL
- ✅ **Workers** background (PDF, ejercicios, notificaciones)
- ✅ **Health checks** en todos los servicios
- ✅ **Zero-downtime deployment**

---

## 📦 Stack Tecnológico

### Frontend
- **Framework**: Next.js 14 (App Router)
- **Lenguaje**: TypeScript 5.3 (strict mode)
- **Estilos**: Tailwind CSS + shadcn/ui
- **Estado**: Zustand
- **Testing**: Vitest + React Testing Library
- **Math**: KaTeX, react-katex, remark-math

### Backend
- **Runtime**: Node.js 20 LTS
- **Framework**: Express 4.x
- **Lenguaje**: TypeScript 5.3
- **ORM**: Prisma 5.x
- **Base de datos**: PostgreSQL 15
- **Cache**: Redis 7
- **Testing**: Vitest + Supertest
- **AI**: OpenAI API / DashScope

### DevOps
- **Docker**: Multi-stage builds
- **Orquestación**: Docker Compose
- **Proxy**: Nginx 1.25
- **SSL**: Let's Encrypt (Certbot)
- **Monitoreo**: Prometheus + Grafana (listo)

---

## 🚀 Quick Start

### Requisitos
- Docker 24.x + Docker Compose
- Node.js 20+ (desarrollo local)
- Git

### 1. Clonar Repositorio

```bash
git clone https://gitea.cbcren.online/renato97/math2-platform.git
cd math2-platform
```

### 2. Configurar Variables de Entorno

```bash
cp .env.example .env
# Editar .env con valores reales
nano .env
```

**Variables críticas:**
```bash
DB_PASSWORD=tu_password_segura
JWT_SECRET=tu_jwt_secret_32chars_minimo
AI_API_KEY=tu_api_key
TELEGRAM_BOT_TOKEN=tu_bot_token
TELEGRAM_ADMIN_CHAT_ID=tu_chat_id
```

### 3. Iniciar en Modo Producción

```bash
./scripts/start-production.sh
```

O manualmente:
```bash
docker-compose -f docker-compose.prod.yml --env-file .env up -d
```

### 4. Verificar Estado

```bash
./scripts/verify-production.sh
```

### 5. Acceder

- 🌐 **Dashboard**: http://localhost
- 🔧 **API**: http://localhost:3001
- 📊 **Health**: http://localhost:3001/health

---

## 🧪 Desarrollo Local

### Backend
```bash
cd backend
npm install
npx prisma migrate dev
npx prisma db seed
npm run dev
```

### Frontend
```bash
cd frontend
npm install
npm run dev
```

### Tests
```bash
# Backend
cd backend && npm test

# Frontend  
cd frontend && npm test

# E2E
npx playwright test
```

---

## 📊 Estado del Proyecto

| Componente | Estado | Detalles |
|------------|--------|----------|
| **Tests** | ✅ 123/123 | 100% pasando |
| **TypeScript** | ⚠️ ~29 errores | Core: 0 errores |
| **Docker** | ✅ Listo | 9 servicios |
| **Seguridad** | ✅ OK | XSS, JWT, Rate limiting |
| **Documentación** | ✅ 5 informes | 2000+ líneas |

---

## 📁 Estructura del Proyecto

```
math2-platform/
├── backend/              # API Node.js + Express
│   ├── src/
│   │   ├── modules/      # Módulos de negocio
│   │   ├── shared/       # Utils, middlewares
│   │   └── workers/      # Background jobs
│   ├── prisma/           # Schema + migrations
│   └── tests/            # Tests unitarios
├── frontend/             # Next.js 14
│   ├── src/
│   │   ├── app/          # App Router
│   │   ├── components/   # UI components
│   │   └── hooks/        # Custom hooks
│   └── tests/            # Component tests
├── docker/               # Dockerfiles
├── scripts/              # Deployment scripts
├── docs/                 # Documentación
└── shared/               # Tipos compartidos
```

---

## 🎓 Contenido Académico

### Ejercicios Disponibles

#### Nivel Básico (10)
- Suma y resta de vectores
- Multiplicación por escalar
- Producto punto
- Norma de vectores
- Matrices básicas

#### Nivel Intermedio (15)
- Producto cruz 3D
- Determinantes 2×2 y 3×3
- Inversa de matrices
- Sistemas de ecuaciones
- Proyección ortogonal

#### Nivel Avanzado (20) - Parcial Universitario
- Autovalores y autovectores
- Diagonalización de matrices
- Matrices ortogonales
- Proceso Gram-Schmidt
- Descomposición SVD
- Formas cuadráticas
- Optimización en Rⁿ

---

## 🔒 Seguridad

### Medidas Implementadas
- ✅ JWT con refresh tokens
- ✅ Rate limiting (Redis)
- ✅ XSS protection (KaTeX sanitizado)
- ✅ SQL injection prevention (Prisma)
- ✅ CORS configurado
- ✅ Headers de seguridad (HSTS, CSP)
- ✅ Password hashing (bcrypt)

### Credenciales
⚠️ **Nunca commitear archivos .env**
```bash
# Asegurar que .env está en .gitignore
grep ".env" .gitignore
```

---

## 🤝 Contribución

1. Fork el repositorio
2. Crear branch: `git checkout -b feature/nueva-funcionalidad`
3. Commit: `git commit -m 'feat: nueva funcionalidad'`
4. Push: `git push origin feature/nueva-funcionalidad`
5. Crear Pull Request

### Convenciones
- **Commits**: Conventional Commits
- **Código**: TypeScript strict
- **Tests**: >80% cobertura backend
- **Docs**: Actualizar README.md

---

## 📚 Documentación

Informes técnicos completos:

1. `INFORME_FINAL_REMEDIACION.md` - Sprint 1: Correcciones críticas
2. `INFORME_SPRINT_2.md` - Sprint 2: Regresiones eliminadas
3. `INFORME_SPRINT_3.md` - Sprint 3: TypeScript + Docker
4. `INFORME_SPRINT_3B_LATEX.md` - LaTeX + Ejercicios PRO
5. `DEPLOYMENT_REPORT.md` - Guía de deployment

---

## 📄 Licencia

MIT License - Ver [LICENSE](LICENSE)

---

## 👥 Autor

**Renato** - [@renato97](https://gitea.cbcren.online/renato97)

Construido con ❤️ para estudiantes de álgebra lineal.

---

## 🙏 Agradecimientos

- OpenCode Multi-Agent System
- Kimi AI Assistant
- Prisma ORM
- Next.js Team
- KaTeX Project

---

**¡Listo para comerse el parcial de álgebra lineal! 🎓🚀**
