An assignment platform that integrates with Google Classroom as an Add-On.
Early development. Login page implemented; assignment creation and Classroom integration coming soon.
-
Install dependencies:
poetry install
-
Configure environment:
cp .env.example .env # Edit .env with your Campus API credentialsPUBLIC_URLis required for login: it is the canonical origin of this service and determines the OAuth callback ({PUBLIC_URL}/finalize_login), which must be registered on the campus client before login works (see "Redirect URI Registration Contract" in AGENTS.md). Locally usePUBLIC_URL=http://localhost:5000. -
Run the development server:
poetry run python main.py
-
Visit: http://localhost:5000
Set AUDIT_TRACING_ENABLED=1 and AUDIT_API_KEY=<producer key> to make
classroom a campus audit trace producer (campus#816): classroom requests
are recorded as spans and campus SDK calls made while handling a request
land as child spans, so the audit waterfall shows which classroom route
fired each campus call. Key minting and the producer runbook live in the
campus repo's docs/audit-tracing.md. Tracing is fail-safe — without a
valid key only spans are lost, never requests.
campus-classroom/
├── apps/classroom/
│ ├── __init__.py # Flask app factory
│ ├── static/
│ │ └── css/style.css # Custom styles
│ └── templates/ # Jinja2 templates
├── main.py # Entry point
├── pyproject.toml # Dependencies
└── docs/ # PRD and design docs
- PRD Draft - Product Requirements
- Schema Proposal - Database schema
- Feedback Taxonomy - Feedback design framework