docs: Simplify README - short and concise version

- Remove extensive documentation - Keep only essential information - Quick start guide for backend and frontend - Technology stack summary - 8 modules overview table - Installation links and requirements Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Daniel Silva committed Aug 17, 2026 at 18:25 UTC 99a035118cb9a3985c13dd2a51fce3d1f79bcb55
1 file changed +68 -688
README.md
+68 -688
@@ -1,722 +1,102 @@
1 -# MAPS Connect - Backend API
1 +# MAPS Connect
2
3 -[![Java](https://img.shields.io/badge/Java-25-ED8B00?style=flat-square&logo=openjdk)](https://www.oracle.com/java/)
4 -[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.3.0-6DB33F?style=flat-square&logo=spring-boot)](https://spring.io/projects/spring-boot)
5 -[![MySQL](https://img.shields.io/badge/MySQL-8.0-4479A1?style=flat-square&logo=mysql)](https://www.mysql.com/)
6 -[![Maven](https://img.shields.io/badge/Maven-3.8%2B-C71A36?style=flat-square&logo=apache-maven)](https://maven.apache.org/)
3 +**Plataforma Académica y de Mentoría** para Universidad Tecmilenio que conecta estudiantes, docentes y egresados.
4
8 -**MAPS Connect** es una plataforma académica y de mentoría integral para la Universidad Tecmilenio que conecta estudiantes, docentes y egresados mediante un sistema colaborativo de redes de conocimiento, círculos de estudio y asesorías personalizadas.
5 +## 🎯 ¿Qué es?
6
10 -## 📋 Tabla de Contenidos
7 +MAPS Connect es una red colaborativa que permite:
8 +- 💬 Foro de dudas académicas
9 +- 💡 Compartir tips de estudio
10 +- 📚 Repositorio de apuntes
11 +- 👥 Círculos de estudio
12 +- 💌 Mensajería privada
13 +- 🏢 Reseñas de empresas (Semestre Empresarial)
14 +- 🎓 Gestión del modelo académico MAPS
15
12 -- [Visión General](#visión-general)
13 -- [Características Principales](#características-principales)
14 -- [Requisitos Previos](#requisitos-previos)
15 -- [Instalación y Configuración](#instalación-y-configuración)
16 -- [Arquitectura del Sistema](#arquitectura-del-sistema)
17 -- [Módulos Funcionales](#módulos-funcionales)
18 -- [Estructura del Proyecto](#estructura-del-proyecto)
19 -- [Endpoints de API](#endpoints-de-api)
20 -- [Seguridad y Autenticación](#seguridad-y-autenticación)
21 -- [Base de Datos](#base-de-datos)
22 -- [Desarrollo](#desarrollo)
23 -- [Contacto](#contacto)
16 +## 🏗️ Tecnología
17
25 -## 🎯 Visión General
18 +| Capa | Tecnología |
19 +|------|-----------|
20 +| **Backend** | Java 25, Spring Boot 3.3.0 |
21 +| **Frontend** | HTML5, CSS3, JavaScript Vanilla |
22 +| **BD** | MySQL 8.0 (22 entidades, 3FN) |
23
27 -En el modelo educativo de Universidad Tecmilenio, los estudiantes del programa **MAPS (Modelo de Aprendizaje Personalizado y Significativo)** combinan materias disciplinares, componentes de bienestar, certificados de especialización y participan en el Semestre Empresarial. Sin embargo, frecuentemente enfrentan:
28 -
29 -- ❌ Incertidumbre al seleccionar certificados especializados
30 -- ❌ Dificultad para resolver dudas académicas específicas
31 -- ❌ Falta de grupos de estudio organizados
32 -- ❌ Desconocimiento sobre opciones de empresas para vinculación
33 -
34 -**MAPS Connect** resuelve estos desafíos centralizando el intercambio de conocimiento académico, fomentando el aprendizaje colaborativo y facilitando decisiones curriculares informadas.
35 -
36 -## ✨ Características Principales
37 -
38 -### 🔐 Autenticación y Usuarios
39 -- Registro seguro mediante correo institucional (@tecmilenio.mx)
40 -- Autenticación con **JWT (JSON Web Tokens)**
41 -- Perfiles especializados: **Estudiantes**, **Profesores** y **Administradores**
42 -- Gestión de credenciales y sesiones seguras
43 -- Validación de dominios institucionales
44 -
45 -### 💬 Foro Colaborativo
46 -- Dudas académicas segmentadas por carrera y materia
47 -- Respuestas de la comunidad con sistema de soluciones verificadas
48 -- Insignias automáticas para aportaciones de docentes
49 -- Reputación basada en participación
50 -
51 -### 💡 Tips Académicos
52 -- Microconsejos y metodologías de estudio por materia
53 -- Sistema de votación única por usuario
54 -- Ranking dinámico de mejores consejos
55 -- Contenido enfocado en técnicas probadas
56 -
57 -### 📚 Repositorio de Recursos
58 -- Biblioteca centralizada de apuntes y material (PDFs, diagramas, resúmenes)
59 -- Clasificación por materia y tema
60 -- Control de descargas y reportes
61 -- Validación automática de cumplimiento comunitario
62 -
63 -### 👥 Círculos de Estudio
64 -- Comunidades colaborativas por materia, certificado o carrera
65 -- Privacidad configurable (pública/privada)
66 -- Integración con salas virtuales (Microsoft Teams/Google Meet)
67 -- Muro interno de avisos y discusiones
68 -
69 -### 💌 Mensajería Privada
70 -- Canal 1 a 1 entre estudiantes o profesor-estudiante
71 -- Asesorías académicas personalizadas
72 -- Trazabilidad completa de conversaciones
73 -- Respeto a disponibilidad horaria docente
74 -
75 -### 🏢 Semestre Empresarial
76 -- Directorio de empresas vinculadas
77 -- Reseñas y evaluaciones de experiencias reales
78 -- Consejos de postulación y acreditación
79 -- Retroalimentación de estudiantes avanzados
80 -
81 -### 🎓 Gestión Académica MAPS
82 -- Catálogo de carreras y certificados de especialización
83 -- Estructura de malla curricular por programa
84 -- Materias tronco común, disciplinares, certificados y bienestar
85 -- Modelado de microcredenciales
86 -
87 -## 📦 Requisitos Previos
88 -
89 -- **Java 25** o superior
90 -- **Maven 3.8** o superior
91 -- **MySQL 8.0** o superior
92 -- **Git** para control de versiones
93 -- **IDE** recomendado: IntelliJ IDEA Community Edition
94 -
95 -### Validar Instalación
96 -
97 -```bash
98 -java -version
99 -mvn -version
100 -mysql --version
101 -```
102 -
103 -## 🚀 Instalación y Configuración
104 -
105 -### 1. Clonar el Repositorio
106 -
107 -```bash
108 -git clone https://github.com/danielsilva7577-bit/maps-conect.git
109 -cd maps-conect
110 -```
111 -
112 -### 2. Crear Bases de Datos
113 -
114 -```sql
115 -CREATE DATABASE maps_conect CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
116 -CREATE DATABASE maps_conect_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
117 -```
118 -
119 -### 3. Configurar Credenciales
120 -
121 -Editar `src/main/resources/application.yml`:
122 -
123 -```yaml
124 -spring:
125 - application:
126 - name: MAPS Connect
127 -
128 - datasource:
129 - url: jdbc:mysql://localhost:3306/maps_conect
130 - username: root
131 - password: tu_contraseña
132 - driver-class-name: com.mysql.cj.jdbc.Driver
133 -
134 - jpa:
135 - hibernate:
136 - ddl-auto: update
137 - show-sql: false
138 - properties:
139 - hibernate:
140 - dialect: org.hibernate.dialect.MySQL8Dialect
141 - format_sql: true
142 -
143 -server:
144 - port: 8080
145 - servlet:
146 - context-path: /api
147 -
148 -jwt:
149 - secret: tu_clave_secreta_muy_segura_aqui
150 - expiration: 86400000 # 24 horas en milisegundos
151 -
152 -cors:
153 - allowed-origins: http://localhost:3000,http://localhost:5173
154 -```
155 -
156 -### 4. Compilar el Proyecto
24 +## 🚀 Quick Start
25
26 +### Backend
27 ```bash
159 -mvn clean install
160 -```
28 +# Crear bases de datos
29 +CREATE DATABASE maps_conect;
30 +CREATE DATABASE maps_conect_dev;
31
162 -### 5. Ejecutar la Aplicación
32 +# Editar: src/main/resources/application.yml
33 +# (actualizar credenciales MySQL)
34
164 -**Desarrollo (con perfil dev):**
165 -```bash
35 +# Ejecutar
36 mvn spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=dev"
37 +# API en: http://localhost:8080/api
38 ```
39
169 -**Producción (con perfil prod):**
170 -```bash
171 -mvn spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=prod"
172 -```
173 -
174 -La aplicación estará disponible en: `http://localhost:8080/api`
175 -
176 -### 6. Verificar Salud de la API
177 -
40 +### Frontend
41 ```bash
179 -curl http://localhost:8080/api/health
180 -```
42 +# Abrir en Visual Studio Code
43 +code frontend/
44
182 -Respuesta esperada:
183 -```json
184 -{
185 - "status": "UP",
186 - "components": {
187 - "db": {
188 - "status": "UP"
189 - }
190 - }
191 -}
45 +# Live Server (extensión VS Code)
46 +# Clic derecho en index.html > "Open with Live Server"
47 +# En: http://localhost:5500
48 ```
49
194 -## 🏗️ Arquitectura del Sistema
50 +## 📋 Requisitos
51
196 -MAPS Connect implementa una **arquitectura de 3 capas**:
52 +- Java 25+
53 +- Maven 3.8+
54 +- MySQL 8.0+
55 +- Node.js (opcional, para frontend)
56
198 -### Capa de Presentación (Frontend)
199 -- **Tecnologías**: HTML5, CSS3, JavaScript Vanilla
200 -- **Responsabilidades**:
201 - - Renderizado dinámico del DOM
202 - - Interfaz minimalista con contornos rectos
203 - - Menú colapsable
204 - - Validación de formularios en cliente
205 - - Consumo asincrónico de endpoints REST vía JSON
57 +## 🔐 Autenticación
58
207 -### Capa de Aplicación (Backend)
208 -- **Tecnologías**: Java, Spring Boot, Spring Security
209 -- **Responsabilidades**:
210 - - Implementación de reglas de negocio
211 - - Validación de dominios institucionales
212 - - Manejo de sesiones y seguridad
213 - - Orquestación de servicios y repositorios
214 - - Procesamiento de requests y responses
59 +- **JWT Tokens** (24 horas)
60 +- Email institucional: `@tecmilenio.mx`
61 +- Contraseña segura: 8+ caracteres, mayúscula, número
62
216 -### Capa de Datos (Base de Datos)
217 -- **Tecnologías**: MySQL 8.0
218 -- **Responsabilidades**:
219 - - Almacenamiento persistente normalizado en 3FN
220 - - Integridad referencial con claves foráneas
221 - - Restricciones de dominio y lógica
222 - - Vistas operativas para consultas complejas
223 -
224 -```
225 -┌─────────────────────────────────┐
226 -│ Frontend (Web Browser) │
227 -│ HTML5 | CSS3 | JavaScript │
228 -└──────────────┬──────────────────┘
229 - │ REST JSON
230 -┌──────────────▼──────────────────┐
231 -│ Spring Boot REST API │
232 -│ Controllers | Services | DAO │
233 -│ JWT Security | Validation │
234 -└──────────────┬──────────────────┘
235 - │ SQL
236 -┌──────────────▼──────────────────┐
237 -│ MySQL 8.0 Database │
238 -│ 22 Tablas | 3FN | Constraints │
239 -└─────────────────────────────────┘
240 -```
241 -
242 -## 📚 Módulos Funcionales
243 -
244 -### 1️⃣ Gestión Académica y Modelo MAPS
245 -Administra el catálogo académico de la institución.
246 -
247 -**Entidades**:
248 -- `carreras` - Programas profesionales ofertados
249 -- `certificados` - Especializaciones y microcredenciales MAPS
250 -- `materias` - Asignaturas curriculares
251 -- `plan_estudios` - Relación N:M de materias por carrera/semestre
252 -- `certificado_materias` - Asignaturas que integran certificados
253 -
254 -**Funcionalidades**:
255 -- ✅ Definir carreras y planes de estudio
256 -- ✅ Configurar certificados de especialización
257 -- ✅ Asignar materias a carreras y certificados
258 -- ✅ Estructurar malla curricular
259 -
260 -### 2️⃣ Usuarios, Perfiles y Roles
261 -Administración integral de credenciales e identidades.
262 -
263 -**Entidades**:
264 -- `usuarios` - Credenciales y autenticación
265 -- `estudiantes` - Datos específicos del alumno (matrícula, semestre, propósito)
266 -- `estudiante_certificados` - Ruta MAPS (hasta 3 certificados)
267 -- `profesores` - Datos de nómina, especialidad y horarios
268 -- `profesores_materias` - Relación N:M de materias impartidas
269 -
270 -**Roles y Permisos**:
271 -| Operación | Estudiante | Profesor | Admin |
272 -|-----------|-----------|----------|-------|
273 -| Editar Perfil | ✅ | ✅ | ✅ |
274 -| Publicar Duda | ✅ | ❌ | 🔧 |
275 -| Responder Dudas | ✅ | ✅ (con insignia) | 🔧 |
276 -| Crear Círculos | ✅ | ✅ (Líder) | 🔧 |
277 -| Moderación | ❌ | ✅ | ✅ |
278 -| Administrar Catálogos | ❌ | ❌ | ✅ |
279 -
280 -### 3️⃣ Foro de Dudas y Respuestas Colaborativas
281 -Canal principal de interacción académica.
282 -
283 -**Entidades**:
284 -- `publicaciones` - Dudas académicas por carrera/materia
285 -- `respuestas` - Soluciones y comentarios de la comunidad
286 -
287 -**Características**:
288 -- Dudas asociadas a materias (opcional)
289 -- Comunidad aporta respuestas
290 -- Autor marca solución definitiva
291 -- Sistema automático de insignias para docentes
292 -- Ranking de respuestas por utilidad
293 -
294 -### 4️⃣ Tips Académicos y Sistema de Reputación
295 -Microconsejos y metodologías de estudio.
296 -
297 -**Entidades**:
298 -- `tips_academicos` - Recomendaciones y técnicas
299 -- `votos_tips` - Control de votos únicos por usuario
300 -
301 -**Características**:
302 -- Tips por materia
303 -- Voto único por usuario (evita manipulación)
304 -- Sistema de reputación basado en contribuciones
305 -- Feed ranking por utilidad
306 -
307 -### 5️⃣ Repositorio de Apuntes y Material de Estudio
308 -Biblioteca centralizada de recursos.
309 -
310 -**Entidades**:
311 -- `recursos_academicos` - Metadatos de archivos y apuntes
312 -
313 -**Características**:
314 -- Clasificación por materia
315 -- Monitoreo de descargas
316 -- Reportes de calidad
317 -- Ocultamiento automático de material no conforme
318 -
319 -### 6️⃣ Mensajería Directa y Asesorías Privadas
320 -Canal 1 a 1 para comunicación personalizada.
321 -
322 -**Entidades**:
323 -- `conversaciones` - Canales 1 a 1
324 -- `mensajes` - Mensajes individuales
325 -
326 -**Características**:
327 -- Entre estudiantes o estudiante-profesor
328 -- Trazabilidad completa
329 -- Confirmación de lectura
330 -- Respeto a disponibilidad docente
331 -
332 -### 7️⃣ Semestre Empresarial
333 -Retroalimentación y experiencias de vinculación.
334 -
335 -**Entidades**:
336 -- `empresas_vinculadas` - Directorio de empresas
337 -- `resenas_empresarial` - Evaluaciones y aprendizajes
338 -
339 -**Características**:
340 -- Reseñas de experiencias reales
341 -- Evaluación de 1 a 5 estrellas
342 -- Consejos de postulación
343 -- Recomendaciones de acreditación
344 -
345 -### 8️⃣ Comunidades y Círculos de Estudio
346 -Espacios colaborativos para aprendizaje grupal.
347 -
348 -**Entidades**:
349 -- `comunidades_estudio` - Grupos de estudio
350 -- `miembros_comunidad` - Relación N:M de usuarios
351 -- `mensajes_comunidad` - Muro de publicaciones internas
352 -
353 -**Características**:
354 -- Por materia, certificado o carrera
355 -- Privacidad configurable (pública/privada)
356 -- Integración con salas virtuales (Teams/Meet)
357 -- Muro interno de avisos
358 -- Liderazgo y modración
359 -
360 -## 📂 Estructura del Proyecto
63 +## 📂 Estructura
64
65 ```
66 maps-conect/
364 -├── src/
365 -│ ├── main/
366 -│ │ ├── java/com/tecmilenio/mapsconect/
367 -│ │ │ ├── MapsConectApplication.java # Punto de entrada
368 -│ │ │ │
369 -│ │ │ ├── config/
370 -│ │ │ │ ├── CorsConfig.java # Configuración CORS
371 -│ │ │ │ └── SecurityConfig.java # Configuración seguridad
372 -│ │ │ │
373 -│ │ │ ├── controller/
374 -│ │ │ │ ├── AuthController.java # Endpoints autenticación
375 -│ │ │ │ └── HealthController.java # Health check
376 -│ │ │ │
377 -│ │ │ ├── service/
378 -│ │ │ │ └── UsuarioService.java # Lógica usuarios
379 -│ │ │ │
380 -│ │ │ ├── repository/
381 -│ │ │ │ └── UsuarioRepository.java # Acceso a datos
382 -│ │ │ │
383 -│ │ │ ├── entity/
384 -│ │ │ │ └── Usuario.java # Entidades JPA
385 -│ │ │ │
386 -│ │ │ ├── dto/
387 -│ │ │ │ ├── LoginDTO.java
388 -│ │ │ │ ├── RegistroDTO.java
389 -│ │ │ │ ├── TokenDTO.java
390 -│ │ │ │ ├── UsuarioDTO.java
391 -│ │ │ │ └── ApiResponse.java
392 -│ │ │ │
393 -│ │ │ ├── security/
394 -│ │ │ │ ├── JwtTokenProvider.java # Generación JWT
395 -│ │ │ │ └── JwtAuthenticationFilter.java # Filtro JWT
396 -│ │ │ │
397 -│ │ │ ├── exception/
398 -│ │ │ │ ├── GlobalExceptionHandler.java # Manejo global excepciones
399 -│ │ │ │ └── ResourceNotFoundException.java # Excepciones custom
400 -│ │ │ │
401 -│ │ │ └── util/
402 -│ │ │ └── (utilidades compartidas)
403 -│ │ │
404 -│ │ └── resources/
405 -│ │ ├── application.yml # Config principal
406 -│ │ ├── application-dev.yml # Config desarrollo
407 -│ │ └── application-prod.yml # Config producción
408 -│ │
409 -│ └── test/
410 -│ └── java/com/tecmilenio/mapsconect/
411 -│ └── (tests unitarios e integración)
412 -│
413 -├── .gitignore
414 -├── pom.xml # Dependencias Maven
415 -├── README.md # Este archivo
416 -└── target/ # Artifacts compilados
417 -```
418 -
419 -## 🔌 Endpoints de API
420 -
421 -### Autenticación
422 -```http
423 -POST /api/auth/register
424 -Content-Type: application/json
425 -
426 -{
427 - "nombre": "Juan Pérez",
428 - "email": "juan.perez@tecmilenio.mx",
429 - "password": "Password123!",
430 - "rol": "STUDENT"
431 -}
432 -```
433 -
434 -```http
435 -POST /api/auth/login
436 -Content-Type: application/json
437 -
438 -{
439 - "email": "juan.perez@tecmilenio.mx",
440 - "password": "Password123!"
441 -}
442 -```
443 -
444 -**Respuesta (200 OK)**:
445 -```json
446 -{
447 - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
448 - "tipo": "Bearer",
449 - "expiresIn": 86400000,
450 - "usuario": {
451 - "id": 1,
452 - "nombre": "Juan Pérez",
453 - "email": "juan.perez@tecmilenio.mx",
454 - "rol": "STUDENT"
455 - }
456 -}
457 -```
458 -
459 -### Health Check
460 -```http
461 -GET /api/health
462 -```
463 -
464 -**Respuesta**:
465 -```json
466 -{
467 - "status": "UP",
468 - "timestamp": "2024-08-17T18:00:00Z"
469 -}
67 +├── src/main/java/... # Backend Java/Spring
68 +├── frontend/ # Frontend HTML/CSS/JS
69 +│ ├── index.html
70 +│ ├── css/
71 +│ ├── js/
72 +│ └── pages/
73 +└── pom.xml
74 ```
75
472 -## 🔐 Seguridad y Autenticación
76 +## 📚 Módulos
77
474 -### JWT (JSON Web Tokens)
78 +| Módulo | Descripción |
79 +|--------|------------|
80 +| 1️⃣ Gestión MAPS | Carreras, certificados, materias |
81 +| 2️⃣ Usuarios | Login, perfiles, roles |
82 +| 3️⃣ Foro | Dudas y respuestas académicas |
83 +| 4️⃣ Tips | Consejos de estudio con votación |
84 +| 5️⃣ Recursos | Apuntes y material de estudio |
85 +| 6️⃣ Mensajes | Chat 1 a 1 estudiante-profesor |
86 +| 7️⃣ Empresarial | Reseñas y experiencias vinculación |
87 +| 8️⃣ Círculos | Grupos de estudio colaborativos |
88
476 -La aplicación utiliza **JWT** para autenticación stateless:
89 +## 🔗 Enlaces
90
478 -```
479 -Header:
480 -{
481 - "alg": "HS256",
482 - "typ": "JWT"
483 -}
484 -
485 -Payload:
486 -{
487 - "sub": "usuario@tecmilenio.mx",
488 - "id": 1,
489 - "rol": "STUDENT",
490 - "iat": 1692291600,
491 - "exp": 1692378000
492 -}
493 -
494 -Signature:
495 -HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
496 -```
497 -
498 -### Restricciones de Seguridad
499 -
500 -✅ **Dominio Institucional**: Solo correos @tecmilenio.mx o @servicios.tecmilenio.mx
501 -✅ **Contraseñas Hasheadas**: Almacenadas con bcrypt (algoritmo seguro)
502 -✅ **Expiración de Token**: 24 horas por defecto
503 -✅ **CORS**: Restringido a orígenes permitidos
504 -✅ **Validación de Entrada**: DTOs con @Valid annotations
505 -✅ **Manejo Global de Excepciones**: Respuestas consistentes
506 -
507 -### Uso del Token
508 -
509 -Incluir en todas las requests:
510 -```http
511 -Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
512 -```
513 -
514 -### Cambiar Secreto en Producción
515 -
516 -**CRÍTICO**: Cambiar `jwt.secret` en `application-prod.yml`:
517 -
518 -```yaml
519 -jwt:
520 - secret: una_clave_secreta_aleatoria_muy_larga_y_compleja
521 - expiration: 86400000
522 -```
523 -
524 -Generar clave segura:
525 -```bash
526 -# Linux/Mac
527 -openssl rand -base64 32
528 -
529 -# PowerShell
530 -[Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32))
531 -```
532 -
533 -## 💾 Base de Datos
534 -
535 -### Modelado en 3FN (Tercera Forma Normal)
536 -
537 -La base de datos implementa 3FN para garantizar:
538 -- ✅ Normalización completa
539 -- ✅ Eliminación de redundancias
540 -- ✅ Integridad referencial
541 -- ✅ Eficiencia en consultas
542 -
543 -### 22 Entidades Principales
544 -
545 -| ID | Entidad | Módulo | Propósito |
546 -|----|---------|--------|-----------|
547 -| 1 | `carreras` | Académico | Programas profesionales |
548 -| 2 | `certificados` | Académico | Microcredenciales MAPS |
549 -| 3 | `materias` | Académico | Asignaturas curriculares |
550 -| 4 | `plan_estudios` | Académico | Relación materia-carrera |
551 -| 5 | `certificado_materias` | Académico | Materias por certificado |
552 -| 6 | `usuarios` | Usuarios | Credenciales y autenticación |
553 -| 7 | `estudiantes` | Usuarios | Datos del alumno |
554 -| 8 | `estudiante_certificados` | Usuarios | Ruta MAPS del alumno |
555 -| 9 | `profesores` | Usuarios | Datos docentes |
556 -| 10 | `profesores_materias` | Usuarios | Materias por docente |
557 -| 11 | `publicaciones` | Comunidad | Dudas académicas |
558 -| 12 | `respuestas` | Comunidad | Respuestas y comentarios |
559 -| 13 | `tips_academicos` | Tips | Microconsejos de estudio |
560 -| 14 | `votos_tips` | Tips | Votos únicos por usuario |
561 -| 15 | `recursos_academicos` | Apuntes | Metadatos de archivos |
562 -| 16 | `conversaciones` | Chat | Canales 1 a 1 |
563 -| 17 | `mensajes` | Chat | Mensajes individuales |
564 -| 18 | `empresas_vinculadas` | Empresarial | Directorio de empresas |
565 -| 19 | `resenas_empresarial` | Empresarial | Evaluaciones de empresas |
566 -| 20 | `comunidades_estudio` | Círculos | Grupos de estudio |
567 -| 21 | `miembros_comunidad` | Círculos | Usuarios en comunidades |
568 -| 22 | `mensajes_comunidad` | Círculos | Muro de comunidades |
569 -
570 -### Restricciones Técnicas
571 -
572 -**1. Restricción de Dominio Institucional**
573 -```sql
574 -ALTER TABLE usuarios ADD CONSTRAINT chk_email_domain
575 -CHECK (email LIKE '%@tecmilenio.mx' OR email LIKE '%@servicios.tecmilenio.mx');
576 -```
577 -
578 -**2. Restricción de Rango Semestral**
579 -```sql
580 -ALTER TABLE estudiantes ADD CONSTRAINT chk_semestre
581 -CHECK (semestre_actual BETWEEN 1 AND 12);
582 -```
583 -
584 -**3. Límite de Ruta Curricular**
585 -```sql
586 -ALTER TABLE estudiantes ADD CONSTRAINT chk_max_certificados
587 -CHECK (LENGTH(CONCAT_WS(',', certificado_1, certificado_2, certificado_3)) > 0);
588 -```
589 -
590 -**4. Integridad en Mensajería**
591 -```sql
592 -ALTER TABLE conversaciones ADD CONSTRAINT chk_usuarios_distintos
593 -CHECK (id_usuario_1 <> id_usuario_2);
594 -ALTER TABLE conversaciones ADD CONSTRAINT uq_usuarios
595 -UNIQUE KEY (id_usuario_1, id_usuario_2);
596 -```
597 -
598 -**5. Calificaciones Numéricas (1-5)**
599 -```sql
600 -ALTER TABLE resenas_empresarial ADD CONSTRAINT chk_calificacion
601 -CHECK (calificacion BETWEEN 1 AND 5);
602 -```
603 -
604 -**6. Integridad en Cascada**
605 -```sql
606 -ALTER TABLE miembros_comunidad ADD CONSTRAINT fk_comunidad
607 -FOREIGN KEY (id_comunidad) REFERENCES comunidades_estudio(id)
608 -ON DELETE CASCADE;
609 -```
610 -
611 -## 🛠️ Desarrollo
612 -
613 -### Requisitos de Desarrollo
614 -
615 -```bash
616 -# Verificar Java
617 -java -version
618 -# Debe mostrar Java 25+
619 -
620 -# Verificar Maven
621 -mvn -version
622 -# Debe mostrar Maven 3.8+
623 -
624 -# Verificar MySQL
625 -mysql --version
626 -# Debe mostrar MySQL 8.0+
627 -```
628 -
629 -### Compilación
630 -
631 -**Build completo (ejecutar una sola vez)**:
632 -```bash
633 -mvn clean install
634 -```
635 -
636 -**Build rápido (cambios menores)**:
637 -```bash
638 -mvn compile
639 -```
640 -
641 -**Limpiar build anterior**:
642 -```bash
643 -mvn clean
644 -```
645 -
646 -### Ejecutar con Perfil Dev
647 -
648 -```bash
649 -mvn spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=dev"
650 -```
651 -
652 -Verá logs detallados y SQL ejecutado.
653 -
654 -### Ejecutar Tests
655 -
656 -```bash
657 -# Todos los tests
658 -mvn test
659 -
660 -# Test específico
661 -mvn test -Dtest=UsuarioServiceTest
662 -
663 -# Con cobertura
664 -mvn test jacoco:report
665 -```
666 -
667 -### Empaquetar para Producción
668 -
669 -```bash
670 -mvn package
671 -# Crea: target/maps-conect-1.0.0.jar
672 -```
673 -
674 -**Ejecutar JAR**:
675 -```bash
676 -java -Dspring.profiles.active=prod -jar target/maps-conect-1.0.0.jar
677 -```
678 -
679 -### IDE Recomendado: IntelliJ IDEA
680 -
681 -1. Abrir proyecto: `File > Open > maps-conect`
682 -2. Configurar SDK Java 25: `File > Project Structure > Project > SDK`
683 -3. Configurar Maven: `File > Settings > Build Tools > Maven`
684 -4. Ejecutar aplicación: `Run > Run 'MapsConectApplication'`
685 -5. Debug: `Run > Debug 'MapsConectApplication'`
686 -
687 -### Variables de Entorno
688 -
689 -Para producción, usar variables de entorno en lugar de archivos properties:
690 -
691 -```bash
692 -export SPRING_DATASOURCE_URL=jdbc:mysql://prod-db:3306/maps_conect
693 -export SPRING_DATASOURCE_USERNAME=user_prod
694 -export SPRING_DATASOURCE_PASSWORD=secure_password
695 -export JWT_SECRET=your_production_secret_key
696 -export SPRING_PROFILES_ACTIVE=prod
697 -
698 -java -jar maps-conect-1.0.0.jar
699 -```
700 -
701 -### Estructura de Carpeta de Trabajo
702 -
703 -```
704 -C:\Users\danie\
705 -├── IdeaProjects/
706 -│ ├── maps-conect/ # Este proyecto
707 -│ └── ...
708 -├── .m2/ # Maven local repository
709 -└── ...
710 -```
91 +- 📖 Backend: `http://localhost:8080/api`
92 +- 🌐 Frontend: `http://localhost:5500`
93 +- ✅ Health: `http://localhost:8080/api/health`
94
712 -## 📞 Contacto
95 +## 👨‍💻 Contacto
96
714 -**Institución**: Universidad Tecmilenio
715 -**Proyecto**: MAPS Connect - Plataforma Académica y de Mentoría
716 -**Repositorio**: [GitHub - danielsilva7577-bit/maps-conect](https://github.com/danielsilva7577-bit/maps-conect)
97 +**Universidad Tecmilenio** - Proyecto MAPS Connect
98 +[GitHub Repository](https://github.com/danielsilva7577-bit/maps-conect)
99
100 ---
101
720 -**Última actualización**: Agosto 2024
721 -**Versión**: 1.0.0
722 -**Estado**: En Desarrollo
\ No newline at end of file
102 +**v1.0.0** | Agosto 2024 | En Desarrollo