Purpose
Manage Google Classroom guardian relationships by reading a CSV of students and guardians, computing required invitations/removals, and applying them via the Classroom API.
Current state
Last touched: 2025-09-08. Functionality and completeness: Add and sync modes implemented; documentation is minimal.
Next step
Add baseline automated tests to cover critical flows; Add CI pipeline for build/test/lint; Document deployment/runtime environment (or add Dockerfile); Document interfaces (CLI flags, API endpoints, file formats); Add structured logging and basic health checks.
Interfaces
Inputs- CSV input file, service-account JSON key, impersonated admin email
- Configuration files (TOML/YAML/JSON/INI/CONF)
- CSV files
Outputs- Optional plan report (JSON/CSV), guardian invitations and deletions via API
- CSV files
Reality to Action trace
Reality IngestionNot in scope.
Canonical StorageNot in scope.
Automation EnginesNot in scope.
Human InterfacesNot in scope.
Operational AdoptionContributes in this stage.
Core workflow
TBD. Document the 5-10 steps that define the core workflow.
Artifacts
- CSV expects `student_email` and `guardians` (comma/semicolon-separated)
Operational notes
Constraints and scars
- Rate limits from the Classroom API require backoff and can slow large syncs.
Reliability posture
Failure modes and safe behavior: Auth or API failures abort; dry-run allows validation before writes. Idempotency / retries / batching behavior: Exponential backoff for 429/5xx; add-only mode avoids removals.
Observability
- Logs: Rust logging framework detected (log/tracing/env_logger).
- Metrics/health checks: None documented; rely on logs and exit codes
Security and privacy
Student/guardian PII is present in CSV inputs; secure storage and access controls are required. Service-account keys and admin impersonation should be handled via secure secrets. Sensitive secret material detected in google-classroom-guardians/priv_key.json; ensure it is excluded from docs and CI. Sensitive secret material detected in google-classroom-guardians/aether-422702-7523b3cb27b9.json; ensure it is excluded from docs and CI.
Ownership
OwnersJosh Barton
UsersJosh Barton (owner)
google-classroom-guardians
Architecture & Major Components
High-level diagram (text):
- Entry/trigger -> core logic -> outputs (details per docs below)
Entry/trigger
→core logic
→outputs
Entry points: src/main.rs
Top-level folders: releases, src
Key abstractions: CLI argument parsing, CSV parsing, Google Classroom API client, retry/backoff wrapper
Setup / Build / Run