Este proyecto reúne en un solo lugar herramientas para trabajar con Google Workspace. Permite crear y administrar tareas como enviar correos, organizar reuniones con Meet/Calendar y gestionar cursos en Classroom, todo de forma centralizada. Está pensado para ahorrar tiempo, evitar trabajo manual repetitivo y mantener un flujo ordenado para instituciones, equipos o comunidades.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
waready bcbd6ef9a9 first commit 20 hours ago
app first commit 20 hours ago
.env.example first commit 20 hours ago
.gitignore first commit 20 hours ago
README.md first commit 20 hours ago
requirements.txt first commit 20 hours ago

README.md

Google Workspace Hub (FastAPI + SQLite)

Proyecto base en FastAPI para centralizar acciones con Google Workspace (Gmail, Classroom, Calendar/Meet, etc.) y guardar tokens/usuarios en SQLite.

Qué incluye

  • FastAPI listo para correr
  • SQLite (con SQLModel)
  • Flujo OAuth web:
    • GET /auth/google/start genera el link de autorización
    • GET /auth/google/callback recibe el code y guarda el token en SQLite
  • Ejemplos de endpoints:
    • Gmail: GET /gmail/profile, POST /gmail/send
    • Classroom: GET /classroom/courses
    • Calendar/Meet: POST /calendar/events (crea evento con Meet)

Nota: Para que funcione necesitas crear un OAuth Client (Web application) en Google Cloud Console y descargar el client_secret.json.


Requisitos

  • Python 3.11+ (recomendado)
  • Una cuenta Google (o Workspace) y un proyecto en Google Cloud con APIs habilitadas:
    • Gmail API
    • Google Classroom API
    • Google Calendar API

1) Setup rápido (Windows PowerShell)

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env

2) Coloca tus credenciales

  1. Crea carpeta: credentials/
  2. Copia tu archivo OAuth aquí:
    • credentials/client_secret.json

No lo subas a git (ya está en .gitignore).

3) Configura el .env

Edita .env y pon:

  • GOOGLE_REDIRECT_URI (ej: http://127.0.0.1:8000/auth/google/callback)
  • GOOGLE_SCOPES (ya viene uno útil por defecto)

4) Corre el servidor

uvicorn app.main:app --reload

Abre:

5) Autoriza tu cuenta Google

  1. Ve a:
    • GET /auth/google/start
  2. Abre el auth_url que te devuelve
  3. Acepta permisos
  4. Google te redirige a GOOGLE_REDIRECT_URI
  5. Eso guarda el token en SQLite (app.db)

6) Probar endpoints

  • Gmail profile:
    • GET /gmail/profile?account_email=TU_CORREO@gmail.com
  • Enviar correo:
    • POST /gmail/send?account_email=TU_CORREO@gmail.com
  • Listar cursos:
    • GET /classroom/courses?account_email=TU_CORREO@gmail.com
  • Crear evento con Meet:
    • POST /calendar/events?account_email=TU_CORREO@gmail.com

Estructura

app/
  core/      config + DB
  google/    auth + clientes Google
  routers/   endpoints (oauth, gmail, classroom, calendar)
  models.py  tablas SQLite

Notas importantes

  • Si tu cuenta es Workspace y quieres administrar usuarios/dominio (acciones “de admin”), eso normalmente se hace con Service Account + Domain-wide delegation. Aquí te dejo el proyecto listo para OAuth (usuario) porque es lo más simple para empezar.
  • Si algo “se cae” por permisos: revisa los scopes y vuelve a autorizar (borrando el token del usuario en SQLite).

Próximos pasos sugeridos

  • Roles/usuarios internos (login propio)
  • Cola de tareas (para correos masivos): Celery/RQ/Arq
  • Logs en DB (auditoría)