Find your next course, plan your semester, and keep track of your degree at the University of Tübingen. StudyPlanner is an independent student project for Computer Science and related study programs.
Open the course catalog · Local setup · Documentation
- Browse and filter the public ALMA catalog, with course details and schedules.
- Save favorites and build semester plans with a weekly calendar and calendar export.
- Import a Transcript of Records PDF in your browser, review results, and track progress.
- Check course assignments against your examination regulation and balance planned courses.
- Search the public catalog through the read-only AI integrations.
Catalog browsing is public. Personal plans and progress use an account. Tour examples are isolated from real account data.
The public integration is read-only and requires no authentication. It supports catalog search, course-number resolution and course details, with no access to accounts, profiles, progress, semester plans, transcripts or credentials.
| Link | Purpose |
|---|---|
| Web app and public gateway | Main application and integration gateway |
| AI metadata | Integration metadata and discovery |
| OpenAPI schema | Import URL for ChatGPT Custom GPT Actions; authentication: None |
| MCP endpoint | Remote Claude/MCP connector URL; authentication: None |
| SSE discovery | Compatibility discovery URL for older MCP clients |
| Privacy policy | Privacy URL for integration setup |
The full ChatGPT setup retains the suggested GPT instructions and example prompts. The Claude/MCP setup includes the Claude Desktop bridge configuration and discovery troubleshooting. For the three-terminal backend/MCP/Pages workflow and request examples, use the local AI gateway smoke test.
First time here? Follow the one-time setup to install dependencies, configure a local auth secret, and prepare local D1. Use Node.js 22.13+ and Python 3.11+. The setup guide records a known large-seed import failure on fresh local databases; existing populated local databases can use the daily commands below.
Then open two terminals, both starting at the repository root:
# Frontend — http://localhost:5173
cd .\frontend\
npm run dev# Backend — http://localhost:8787
cd .\backend\
npx wrangler devOpen localhost:5173/catalog.
These commands run development servers; they do not deploy to Cloudflare.
With VITE_API_BASE_URL unset, the local frontend uses http://localhost:8787.
Keep both servers running. See troubleshooting
if the catalog or login does not load.
| Directory | Purpose |
|---|---|
| frontend/ | React 19, Vite, TypeScript, Tailwind CSS 4 and Pages Functions |
| backend/ | Python Cloudflare Worker, D1 migrations and import helpers |
| data_collection/ | Local ALMA and learning-platform collection tools |
| integrations/studyplanner-mcp/ | Public MCP adapter |
| docs/ | Setup, deployment, feature contracts and operational notes |
Run from the repository root:
npm run test:frontend
npm --prefix frontend run lint
npm --prefix frontend run build
npm run db:verify-configFor transcript parser changes, also run npm --prefix frontend run validate:transcripts
with the local fixtures described in the frontend guide.
See AGENTS.md for branch, test and commit conventions.
Use the deployment guide for Pages and Worker commands.
The active D1 database is studyplanner-db, bound as DB. Do not recreate or swap
it during deployment. Keep AUTH_TOKEN_SECRET out of Git.
Runtime configuration documents resource names, catalog refresh safeguards and the production-wide simulated-semester toggle. Authentication explains cookies and CSRF protection.
| Database | Name | ID |
|---|---|---|
Active, binding DB |
studyplanner-db |
80ca9092-ddc6-454a-b04a-8ccae85ef2f5 |
| Previous test database | studyplaner-db-test |
297f7a28-9069-431d-b989-49acf2537513 |
Changing the active binding requires explicit approval. Database IDs are public configuration; signing secrets and generated credentials must never be committed.
The existing onboarding test toggle sets SS 2025, so the upcoming winter is
WS 2025/26. These commands run from the repository root:
npm run sim:status # read the current production setting
npm run sim:on # set the simulated current semester to SS 2025
npm run sim:off # restore the real, date-derived semestersim:on and sim:off write to production D1 and affect all visitors after reload,
without a redeploy. See runtime configuration
for the setting and how to choose a different semester.
- AI integration setup
- Runtime configuration and catalog refresh
- Local development and database setup
- Authentication and request security
- Mobile testing
- Backend routes and tooling
- July repository overhaul report — historical
- July code simplification audit — historical
All documents previously listed in this README remain available above. Detailed setup examples live in their linked guides; the documentation index covers the rest of the repository.
