Plataforma web para la gestión escolar con vistas y permisos por rol (administrador, docente y representante) y un chat interno entre los distintos roles para coordinar actividades, resolver dudas y compartir novedades.
Nota: este README está pensado como base profesional para tu portfolio. Ajusta cualquier parte si tu repositorio difiere en nombres de carpetas, scripts o variables.
Centralizar procesos y visualizaciones típicas de un entorno escolar:
- Gestión de usuarios por rol (admin, docente, representante).
- Visualización de notas y próximos exámenes (representantes).
- Paneles para docentes (carga/edición de calificaciones, próximos exámenes).
- Panel para administradores (altas/bajas de usuarios, cursos, materias).
- Chat interno entre roles (mensajería 1:1 y/o por grupos de curso/materia).
- Notificaciones básicas en la navbar (a futuro).
Varias funcionalidades pueden estar en desarrollo. Mantén este listado sincronizado con el estado real del repo.
- Frontend: React + Webpack (Node 14+ o superior).
- Backend: Python Flask + SQLAlchemy.
- DB & Migraciones: SQLAlchemy + Alembic con scripts de
migrate/upgrade/downgrade. - Entorno: archivo
.env(basado en.env.example). - Deploy: archivos listos para Render/Heroku (
render.yaml,Procfile,Dockerfile.render).
- Python 3.8+ (recomendado 3.10).
- Pipenv para gestionar dependencias del backend.
- Node.js 14+ para el frontend.
- Motor de base de datos (SQLite para dev; PostgreSQL recomendado para producción).
# Instalar dependencias del backend
pipenv install
# Copiar variables de entorno base
cp .env.example .env
# Edita .env y define al menos:
# DATABASE_URL (sqlite/mysql/postgres), por ejemplo:
# SQLite: sqlite:////dev.db
# Postgres: postgres://usuario:password@localhost:5432/schoolhubMigraciones y arranque:
# Generar migración (si cambiaste modelos)
pipenv run migrate
# Aplicar migraciones
pipenv run upgrade
# Levantar API
pipenv run startTip: revertir la última migración con
pipenv run downgrade.
# Instalar dependencias del frontend
npm install
# Levantar entorno de desarrollo (Webpack Dev Server)
npm run startAsegúrate de que el backend esté corriendo y que el frontend apunte al backend correcto (ver Variables de Entorno).
Crea un .env a partir de .env.example y completa según tu escenario:
Backend:
DATABASE_URL— cadena de conexión (SQLite/MySQL/Postgres).CORS_ORIGINS— orígenes permitidos para el frontend (ej.:http://localhost:3000).JWT_SECRET— clave para firmar tokens (si implementas auth JWT).
Frontend (si aplica en tu build):
BACKEND_URL— URL base del API (ej.:http://127.0.0.1:3001o similar).- Si usas Vite, podría ser
VITE_BACKEND_URLy deberás referenciarimport.meta.env.VITE_BACKEND_URL.
- Si usas Vite, podría ser
Los nombres pueden variar según el boilerplate. Mantén consistencia entre código y
.env.
.
├─ src/
│ ├─ api/ # Flask: modelos, rutas, servicios, commands
│ └─ front/ # React: views, store, componentes
├─ migrations/ # Alembic
├─ public/ # Assets estáticos
├─ dist/ # Build del frontend
├─ render.yaml # Config de Render
├─ Procfile # Config de Heroku
├─ Dockerfile.render # Imagen de despliegue (Render)
├─ Pipfile / Pipfile.lock
├─ package.json
└─ README.md
Ajusta los nombres si tu repo usa una estructura distinta.
-
Administrador
- ABM de usuarios, cursos, materias.
- Gestión de permisos y roles.
- Supervisión general (métricas básicas).
-
Docente
- Carga/edición de calificaciones.
- Gestión de próximos exámenes.
- Comunicación vía chat interno con representantes y admin.
-
Representante
- Visualización de notas del representado.
- Consulta de próximos exámenes.
- Comunicación vía chat interno con docentes y admin.
- Objetivo: facilitar la coordinación diaria entre administradores, docentes y representantes.
- Posibles modalidades: mensajes 1:1 y/o grupos por curso/materia.
- Señales de UI: contador/badge de no leídos en la navbar.
- Implementación: puede resolverse con WebSockets (push en tiempo real) o long‑polling (pull periódico) según el stack y el hosting. Documenta aquí el enfoque real que utilices.
Si cuentas con commands.py u otro mecanismo de seed, documenta aquí los atajos. Por ejemplo:
# Insertar usuarios de prueba (si existe el comando)
flask insert-test-users 5Mantén estos comandos actualizados tras cambios de modelos.
- Autenticación y autorización por rol (admin/docente/representante).
- CRUD de cursos, materias, alumnos y calificaciones.
- Panel representante: notas y próximos exámenes del “representado”.
- Chat interno: canales por curso/materia, adjuntos livianos, estado de lectura.
- Notificaciones en navbar (badge/indicador).
- Tests (PyTest/React Testing Library) + GitHub Actions.
- Docker Compose para dev local (API + DB + frontend).
- Documentación de API (OpenAPI/Swagger + colección de Postman).
- Configura variables de entorno (
DATABASE_URL,BACKEND_URL, etc.) en el panel del proveedor. - Usa los archivos del repo (
render.yaml,Dockerfile.render,Procfile) como base. - Verifica que los scripts de start del backend y frontend coincidan con la configuración del proveedor.
En producción, utiliza PostgreSQL gestionado y activa CORS/HTTPS según corresponda.
- Crea un branch desde
main(feat/...,fix/...). - Asegura linters/tests (si aplica).
- Abre un Pull Request con descripción clara y capturas si corresponde.
Agrega tu licencia preferida (MIT/Apache‑2.0). Si el proyecto parte de un template open‑source, respeta sus condiciones.
- Ezequiel “Zeqe” Bellino — Desarrollo full‑stack.
- Santiago Montoya — Desarrollo full‑stack. (https://github.com/santgeek)
- Yuneido Chacin — Desarrollo full‑stack. (https://github.com/yjchf)
- Documentación de Flask, SQLAlchemy, Alembic y React.
- Guías de despliegue en Render/Heroku.
- Patrones de WebSockets/long‑polling para chat en tiempo real.