Sistema completo de automatización de control de asistencia para el Colegio de Estudios Científicos y Tecnológicos del Estado (CECYTE).
- ✅ Sistema de autenticación con JWT
- ✅ Gestión de grupos y alumnos
- ✅ Registro de asistencia (Asistencia, Retardo, Falta)
- ✅ Consultas y reportes de asistencia
- ✅ Exportación a CSV
- ✅ Interfaz moderna y responsive
- ✅ Arquitectura modular y escalable
- Node.js 18+ y npm
- XAMPP (Apache + MySQL)
- Git
- Inicia XAMPP y asegúrate de que MySQL esté corriendo
- Abre phpMyAdmin (http://localhost/phpmyadmin)
- Importa el archivo
database/cecyte_aas.sql- O ejecuta el script SQL directamente en MySQL
-- El archivo database/cecyte_aas.sql contiene todo el esquema y datos de prueba- Navega a la carpeta backend:
cd backend- Instala las dependencias:
npm install- Copia el archivo de configuración:
# Windows
copy env.example.txt .env
# Linux/Mac
cp env.example.txt .env- Edita el archivo
.envcon tus credenciales:
PORT=3001
NODE_ENV=development
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD= # Tu contraseña de MySQL (vacío si no tienes)
DB_NAME=cecyte_aas
JWT_SECRET=tu_secreto_jwt_super_seguro_cambiar_en_produccion
JWT_EXPIRES_IN=24h
CORS_ORIGIN=http://localhost:5173- Configura las contraseñas de los profesores de prueba:
node scripts/createAdmin.js EMP001 password123
node scripts/createAdmin.js EMP002 password123
node scripts/createAdmin.js EMP003 password123- Inicia el servidor backend:
npm run devEl backend estará disponible en http://localhost:3001
- En la raíz del proyecto, instala las dependencias:
npm install- Copia el archivo de configuración:
# Windows
copy .env.example .env
# Linux/Mac
cp .env.example .env- Edita el archivo
.envsi es necesario (por defecto apunta a localhost:3001):
VITE_API_URL=http://localhost:3001/api- Inicia el servidor de desarrollo:
npm run devEl frontend estará disponible en http://localhost:5173
cecyte-aas/
├── backend/ # API Node.js + Express
│ ├── config/ # Configuración de base de datos
│ ├── controllers/ # Controladores de rutas
│ ├── middleware/ # Middlewares (auth, error handling)
│ ├── routes/ # Definición de rutas
│ ├── scripts/ # Scripts utilitarios
│ ├── server.js # Punto de entrada del servidor
│ └── package.json
│
├── database/ # Scripts SQL
│ └── cecyte_aas.sql # Esquema completo de BD
│
├── src/ # Frontend React
│ ├── components/ # Componentes reutilizables
│ │ ├── ui/ # Componentes UI básicos
│ │ └── layout/ # Componentes de layout
│ ├── context/ # Context API (Auth)
│ ├── pages/ # Páginas principales
│ ├── services/ # Servicios de API
│ ├── config/ # Configuración (API, etc.)
│ └── App.jsx # Componente principal
│
└── README.md
El sistema incluye datos de prueba:
Profesores:
- Número de empleado:
EMP001, Contraseña:password123 - Número de empleado:
EMP002, Contraseña:password123 - Número de empleado:
EMP003, Contraseña:password123
Grupos de ejemplo:
- 1A, 1B, 1C (matutino, semestre 1)
- 1D, 1E, 1F (vespertino, semestre 1)
- 2A, 2B, 2C (semestre 2 con carreras)
POST /api/auth/login- Iniciar sesiónGET /api/auth/verify- Verificar token
GET /api/grupos/profesores/:id/grupos- Obtener grupos de un profesorGET /api/grupos/:id/alumnos- Obtener alumnos de un grupoGET /api/grupos/:id- Obtener información de un grupoGET /api/grupos- Obtener todos los grupos
POST /api/asistencias/registrar- Registrar asistenciasGET /api/asistencias/consultar- Consultar asistencias con filtrosGET /api/asistencias/grupo/:grupo_id/fecha/:fecha- Obtener asistencias por fecha
- React 19
- React Router DOM
- TailwindCSS 4
- Axios
- Lucide React (iconos)
- date-fns
- Node.js
- Express
- MySQL2
- bcryptjs (hashing de contraseñas)
- jsonwebtoken (JWT)
- CORS
- MySQL (XAMPP)
npm start # Inicia el servidor en producción
npm run dev # Inicia el servidor en modo desarrollo (nodemon)npm run dev # Inicia el servidor de desarrollo
npm run build # Construye para producción
npm run preview # Previsualiza el build de producción- Iniciar Sesión: Usa tu número de empleado y contraseña
- Ver Grupos: Accede a "Mis Grupos" para ver tus grupos asignados
- Tomar Asistencia:
- Selecciona un grupo
- Elige la fecha
- Marca cada alumno (Asistencia, Retardo, Falta)
- Guarda los registros
- Consultar Reportes:
- Ve a "Reportes"
- Aplica filtros (grupo, fecha, estado)
- Exporta a CSV si lo necesitas
- Contraseñas hasheadas con bcrypt
- Autenticación JWT
- Validación de datos en backend
- Protección contra SQL injection (prepared statements)
- CORS configurado
- Rutas protegidas en frontend
- Verifica que XAMPP/MySQL esté corriendo
- Revisa las credenciales en
.env - Asegúrate de que la base de datos
cecyte_aasexista
- Verifica que
CORS_ORIGINen backend.envcoincida con la URL del frontend - Por defecto:
http://localhost:5173
- El token JWT expira en 24 horas por defecto
- Inicia sesión nuevamente
Este proyecto es de uso interno para CECYTE.
Para problemas o preguntas, contacta al equipo de desarrollo.
Versión: 1.0.0
Última actualización: 2024