Skip to content

Repository files navigation

StudyPlanner

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

StudyPlanner's live catalog with search, course cards, ECTS and study-area badges

What you can do

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

AI integrations and public links

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.

Run locally

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 dev

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

Project layout

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

Checks

Run from the repository root:

npm run test:frontend
npm --prefix frontend run lint
npm --prefix frontend run build
npm run db:verify-config

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

Deployment and operations

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.

Simulated semester

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 semester

sim: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.

Documentation shortcuts

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.

Privacy · Imprint

About

Web study planner for Tübingen CS students with course planning, transcript import, PO tracking, and OpenAPI/MCP catalog search.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Contributors

Languages