Este microservicio forma parte del Sistema de Información Académica (SIA) para colegios, proporcionando una API REST para la gestión de estudiantes y cursos.
- API REST completa para la gestión de estudiantes y cursos
- Persistencia en PostgreSQL con soporte para caracteres especiales
- Contenerización con Docker para facilitar el despliegue
- Documentación de API integrada
- CRUD completo para todas las entidades
-
Backend:
- Django 4.2.x
- Django REST Framework 3.14.x
- PostgreSQL 17
- Gunicorn para producción
-
Contenerización:
- Docker
- Docker Compose
La forma más rápida y recomendada para ejecutar este microservicio es utilizando Docker.
- Docker y Docker Compose instalados
- Git instalado
-
Clona este repositorio:
git clone <repositorio> cd sia_colegios
-
Dale permisos de ejecución al script de gestión:
chmod +x manage.sh
-
Inicia los contenedores:
./manage.sh start
-
La aplicación estará disponible en:
- API REST: http://localhost:8000/api/
- Administración: http://localhost:8000/admin/
El script manage.sh proporciona varios comandos útiles:
./manage.sh start # Iniciar los contenedores
./manage.sh stop # Detener los contenedores
./manage.sh restart # Reiniciar los contenedores
./manage.sh logs # Ver los logs
./manage.sh clean # Limpiar todo (incluyendo volúmenes)
./manage.sh help # Mostrar ayuda-
Error de conexión a PostgreSQL
- Verifica que los contenedores estén corriendo:
docker-compose ps - Revisa los logs:
./manage.sh logs - Limpia todo y vuelve a intentar:
./manage.sh clean && ./manage.sh start
- Verifica que los contenedores estén corriendo:
-
Error de permisos
- Asegúrate de que el script
manage.shtenga permisos de ejecución - En Windows, ejecuta PowerShell como administrador
- Asegúrate de que el script
-
Error de puertos en uso
- Verifica que los puertos 8000 y 5432 no estén en uso
- Puedes cambiar los puertos en el
docker-compose.yml
-
Error de datos duplicados
- Limpia los volúmenes:
./manage.sh clean - Reinicia los contenedores:
./manage.sh start
- Limpia los volúmenes:
Puedes personalizar la configuración mediante variables de entorno en el docker-compose.yml:
DB_HOST: Host de la base de datos (por defecto: db)DB_NAME: Nombre de la base de datos (por defecto: sia_colegios)DB_USER: Usuario de la base de datos (por defecto: postgres)DB_PASSWORD: Contraseña de la base de datos (por defecto: postgres)DB_PORT: Puerto de la base de datos (por defecto: 5432)
GET /api/cursos/- Listar todos los cursosPOST /api/cursos/- Crear un nuevo cursoGET /api/cursos/{id}/- Obtener detalles de un cursoPUT /api/cursos/{id}/- Actualizar un cursoDELETE /api/cursos/{id}/- Eliminar un cursoGET /api/cursos/{id}/estudiantes/- Obtener estudiantes de un curso
GET /api/estudiantes/- Listar todos los estudiantesPOST /api/estudiantes/- Crear un nuevo estudianteGET /api/estudiantes/{id}/- Obtener detalles de un estudiantePUT /api/estudiantes/{id}/- Actualizar un estudianteDELETE /api/estudiantes/{id}/- Eliminar un estudianteGET /api/estudiantes/por_curso/?codigo=11-A- Filtrar estudiantes por código de curso
- Búsqueda: Usar parámetro
?search=para buscar en todos los endpoints - Ordenamiento: Usar parámetro
?ordering=campoo?ordering=-campo(orden descendente) - Paginación: Todas las respuestas de listado vienen paginadas con
count,next,previousyresults
Desarrollado como parte del proyecto de Arquitectura de Software 2025-1.