Skip to content

ezebellino/SchoolHub

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

516 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SchoolHub

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.


✨ Objetivo

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.


🧱 Stack & Arquitectura

  • 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).

✅ Requisitos

  • 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).

🚀 Puesta en marcha (local)

1) Backend (Flask)

# 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/schoolhub

Migraciones y arranque:

# Generar migración (si cambiaste modelos)
pipenv run migrate

# Aplicar migraciones
pipenv run upgrade

# Levantar API
pipenv run start

Tip: revertir la última migración con pipenv run downgrade.


2) Frontend (React)

# Instalar dependencias del frontend
npm install

# Levantar entorno de desarrollo (Webpack Dev Server)
npm run start

Asegúrate de que el backend esté corriendo y que el frontend apunte al backend correcto (ver Variables de Entorno).


🔑 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:3001 o similar).
    • Si usas Vite, podría ser VITE_BACKEND_URL y deberás referenciar import.meta.env.VITE_BACKEND_URL.

Los nombres pueden variar según el boilerplate. Mantén consistencia entre código y .env.


🗂️ Estructura de carpetas (resumen)

.
├─ 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.


🧭 Flujos por rol (visión general)

  • 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.

💬 Chat interno (alto nivel)

  • 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.

🧪 Datos de prueba (opcional)

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 5

Mantén estos comandos actualizados tras cambios de modelos.


🧭 Roadmap (propuesto)

  • 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).

📦 Despliegue

Render / Heroku (genérico)

  1. Configura variables de entorno (DATABASE_URL, BACKEND_URL, etc.) en el panel del proveedor.
  2. Usa los archivos del repo (render.yaml, Dockerfile.render, Procfile) como base.
  3. 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.


🤝 Contribuciones

  1. Crea un branch desde main (feat/..., fix/...).
  2. Asegura linters/tests (si aplica).
  3. Abre un Pull Request con descripción clara y capturas si corresponde.

🛡️ Licencia

Agrega tu licencia preferida (MIT/Apache‑2.0). Si el proyecto parte de un template open‑source, respeta sus condiciones.


👨‍💻 Autores


📚 Recursos

  • 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 64.6%
  • Python 24.6%
  • CSS 9.5%
  • HTML 0.9%
  • Dockerfile 0.2%
  • Mako 0.1%
  • Other 0.1%