# TAPIR - Sistema de Gestión de Asistencia Estudiantil ## Roadmap de Desarrollo ### 📋 Resumen del Proyecto TAPIR es un sistema integral de gestión de asistencia estudiantil desarrollado con Next.js 15, TypeScript, Prisma ORM y PostgreSQL. El sistema maneja tres roles principales: Administradores, Profesores y Estudiantes. --- ## ✅ Completado ### 1. Estructura Base del Proyecto ✅ - **Estado**: Completado - **Descripción**: Proyecto Next.js 15 con TypeScript configurado - **Archivos principales**: - `package.json` - Configuración de dependencias y scripts - `tsconfig.json` - Configuración de TypeScript - `next.config.ts` - Configuración de Next.js - `eslint.config.mjs` - Configuración de ESLint - `postcss.config.mjs` - Configuración de PostCSS ### 2. Base de Datos y ORM ✅ - **Estado**: Completado - **Descripción**: Prisma ORM configurado con PostgreSQL - **Archivos implementados**: - `prisma/schema.prisma` - Esquema completo de base de datos - `prisma/migrations/` - Migraciones de base de datos - `prisma/seed.ts` - Script de población inicial - `src/lib/prisma.ts` - Cliente de Prisma - **Modelos implementados**: - Users (Usuarios con roles) - Periods (Periodos académicos) - Partials (Parciales) - Classes (Materias) - Sections (Secciones) - Teachers (Profesores) - Students (Estudiantes) - TeacherAssignments (Asignaciones) - StudentEnrollments (Inscripciones) - Attendances (Asistencias) ### 3. UI Framework y Componentes ✅ - **Estado**: Completado - **Descripción**: shadcn/ui configurado con TailwindCSS v4 - **Archivos implementados**: - `components.json` - Configuración de shadcn/ui - `src/app/globals.css` - Estilos globales - `src/lib/utils.ts` - Utilidades para clases CSS - **Componentes UI disponibles**: - Button, Card, Input, Label, Form - Dialog, Alert Dialog, Sheet - Table, Separator, Switch - Tooltip, Sidebar ### 4. Sistema de Autenticación ✅ - **Estado**: Completado - **Descripción**: NextAuth.js con autenticación por credenciales - **Archivos implementados**: - `src/lib/auth.ts` - Configuración de NextAuth - `src/middleware.ts` - Middleware de protección de rutas - `src/app/api/auth/[...nextauth]/route.ts` - API de autenticación - `src/app/auth/signin/page.tsx` - Página de inicio de sesión - `src/components/providers/session-provider.tsx` - Proveedor de sesión - **Características**: - Autenticación basada en JWT - Protección de rutas por rol - Redirección automática según rol - Encriptación de contraseñas con bcrypt ### 5. Layout y Componentes Base ✅ - **Estado**: Completado - **Descripción**: Sistema de layout responsivo con sidebar - **Archivos implementados**: - `src/components/layout/main-layout.tsx` - Layout principal - `src/components/layout/sidebar.tsx` - Sidebar con navegación por rol - `src/components/layout/header.tsx` - Header con título y acciones - **Características**: - Sidebar responsivo con menús específicos por rol - Header dinámico con información de usuario - Layout adaptativo para móviles - Navegación contextual según permisos ### 6. Dashboards por Rol ✅ - **Estado**: Completado - **Descripción**: Dashboards específicos para cada tipo de usuario - **Archivos implementados**: - `src/app/admin/page.tsx` - Dashboard administrativo - `src/app/teacher/page.tsx` - Dashboard de profesor - `src/app/student/page.tsx` - Dashboard de estudiante - `src/app/page.tsx` - Página de bienvenida con redirección - **Características**: - Estadísticas específicas por rol - Datos mock para demostración - Interfaz intuitiva y moderna - Protección de acceso por rol ### 7. Datos de Prueba ✅ - **Estado**: Completado - **Descripción**: Base de datos poblada con datos iniciales - **Usuarios creados**: - Administrador: `admin@universidad.edu` / `admin123` - Profesor: `profesor@universidad.edu` / `teacher123` - Estudiante: `estudiante@universidad.edu` / `student123` - **Datos incluidos**: - Periodo académico 2024 - 3 parciales configurados - 3 materias con secciones - Usuarios de ejemplo para cada rol --- ### 8. Funcionalidades del Rol Administrador ✅ - **Estado**: Mayormente completado - **Descripción**: Implementación de funcionalidades administrativas - **Dashboard**: ✅ Completado - **Implementado**: - ✅ Gestión de usuarios (`/admin/users`) - CRUD completo con validaciones - ✅ Gestión de periodos académicos (`/admin/periods`) - CRUD completo con toggle activo/inactivo - ✅ Gestión de clases y materias (`/admin/classes`) - CRUD completo - ✅ Gestión de secciones (`/admin/sections`) - CRUD completo - ✅ Gestión de asignaciones de profesores (`/admin/teacher-assignments`) - ✅ Gestión de inscripciones de estudiantes (`/admin/student-enrollments`) - ✅ Sistema de reportes (`/admin/reports`) - **Pendiente**: - Configuración del sistema (`/admin/settings`) --- ## 📋 Pendiente ### Funcionalidades del Rol Profesor 📝 - **Estado**: Pendiente - **Descripción**: Implementación de funcionalidades para profesores - **Dashboard**: ✅ Completado - **Implementado**: - ✅ Visualización de clases/secciones asignadas (`/teacher/assignments`) - ✅ Sistema de registro de asistencia (`/teacher/attendance`) - ✅ Reportes de asistencia por clase (`/teacher/reports`) - ✅ Exportación de datos - **Por implementar**: - Gestión de perfil (`/teacher/profile`) ### Funcionalidades del Rol Estudiante 📝 - **Estado**: Pendiente - **Descripción**: Implementación de funcionalidades para estudiantes - **Dashboard**: ✅ Completado - **Implementado**: - ✅ Vista de clases matriculadas (`/student/classes`) - ✅ Historial de asistencia (`/student/attendance`) - **Por implementar**: - Consulta de horarios (`/student/schedule`) - Gestión de perfil (`/student/profile`) - Notificaciones de asistencia ### Testing y Build 📝 - **Estado**: Pendiente - **Descripción**: Pruebas y preparación para producción - **Por implementar**: - Configuración de testing (Jest/Vitest) - Pruebas unitarias para componentes - Pruebas de integración para API - Pruebas end-to-end (Playwright/Cypress) - Configuración de CI/CD - Documentación de deployment --- ## 🎯 Próximos Pasos ### Prioridad Alta 1. **Completar funcionalidades administrativas avanzadas** - Sistema de asignaciones de profesores - Sistema de inscripciones de estudiantes - Sistema de reportes básico 2. **Implementar funcionalidades de Profesor** - Sistema de registro de asistencia - Gestión de clases asignadas 3. **Implementar funcionalidades de Estudiante** - Consulta de asistencia personal - Vista de horarios ### Prioridad Media 1. **Mejoras de UX/UI** - Notificaciones en tiempo real - Mejoras de responsividad - Optimización de rendimiento 2. **Funcionalidades Avanzadas** - Exportación de reportes (PDF/Excel) - Sistema de notificaciones por email - Dashboard con gráficos avanzados ### Prioridad Baja 1. **Testing y Calidad** - Cobertura de pruebas completa - Documentación técnica - Guías de usuario --- ## 📊 Progreso General - **Completado**: 87.5% (7/8 tareas principales) - **En progreso**: 12.5% (1/8 tareas principales) - **Pendiente**: 0% (0/8 tareas principales) ### Desglose de Funcionalidades Administrativas - **Funcionalidades básicas**: ✅ 100% completado (4/4) - Gestión de usuarios, periodos, clases y secciones - **Funcionalidades avanzadas**: 🔄 0% completado (0/4) - Asignaciones, inscripciones, reportes y configuración ### Arquitectura Técnica ✅ - ✅ Next.js 15 con App Router - ✅ TypeScript para type safety - ✅ Prisma ORM con PostgreSQL - ✅ NextAuth.js para autenticación - ✅ shadcn/ui + TailwindCSS para UI - ✅ Middleware para protección de rutas - ✅ Estructura modular y escalable ### Base de Datos ✅ - ✅ Esquema completo definido - ✅ Relaciones entre entidades - ✅ Migraciones configuradas - ✅ Datos de prueba poblados - ✅ Índices y constraints --- ## 🔧 Configuración de Desarrollo ### Comandos Disponibles ```bash # Desarrollo npm run dev # Servidor de desarrollo npm run build # Build de producción npm run start # Servidor de producción npm run lint # Linting # Base de datos npm run db:seed # Poblar base de datos npx prisma studio # Interface gráfica de BD npx prisma migrate # Ejecutar migraciones ``` ### Variables de Entorno Requeridas ```env DATABASE_URL="postgresql://..." NEXTAUTH_SECRET="..." NEXTAUTH_URL="http://localhost:3000" ``` --- **Última actualización**: Enero 2025 **Versión**: 0.1.0 **Estado**: En desarrollo activo