Thesis Management

From proposal to archive in one place

Supervising theses involves far more than the research itself. A request has to be answered before its deadline. Then come the registration form and its signatures, the deadline, the submission to the examination office, a defense slot, a Q&A protocol, two assessments, and grades that must reach the right office. Finally, the folder has to be archived. Each step is small. Spread across dozens of theses, a few supervisors and several university offices, steps slip through the cracks.

Thesis Management is the internal web app we built at the Chair of Mobile and Distributed Systems at LMU Munich to keep all of that in one place. The video below shows the most important parts in under a minute.

All people, theses and numbers in the video and screenshots are invented demo data.

All theses at a glance

Theses overview

The start page lists every thesis with its student, title, type, supervisor, assistant supervisors, current phase and approval status. Above the table, a strip of key figures shows:

  • how many bachelor and master defenses are scheduled for the current semester,
  • how many theses were defended in the previous one,
  • how long a thesis takes on average from proposal to registration and to completion.

The table can be searched and filtered, and the filters live in the URL, so a filtered view can be shared as a link.

Applications, decided on time

Thesis Applications

Students apply through a public registration page. The page validates their input, stores the uploaded CV and transcript in object storage, numbers the request and records the average grade.

On the staff side, every application shows which supervisors are interested and how much time is left before the request is rejected automatically. A background job posts a Discord reminder 24 hours before that deadline if nobody has responded. Once the deadline passes, the job rejects the application and sends the rejection email. No request is left waiting forever.

Every thesis, every step

Thesis Phases

Each thesis moves through six phases:

  1. Proposal: created, approved and signed by student and supervisor, registration submitted.
  2. Registration: approved by the examination office, deadline set, student subscribed to the defense seminar mailing list.
  3. Submission: thesis submitted, uploaded to Uni2Work, sent to the examination office, graded.
  4. Disputation: scheduled, presentation uploaded, defended, Q&A recorded, graded.
  5. Archive: grades confirmed and sent to the examination office, thesis archived.
  6. Completed.

The detail page shows the progress through these phases and lists the concrete steps of each phase with their dates. Next to the steps sits a card with the actions that make sense in the current state, for example "Confirm grade suggestions" or "Mark grades as sent to examination office".

Registration is largely automated. The app fills the official registration PDF and sends tokenized approval links, through which student and supervisor confirm the data and sign. It can also submit the signed form to the examination office automatically.

Nothing gets lost

Every step and every field-level change lands in the thesis timeline, together with who made it and when. That includes notification emails and mailing-list subscriptions. When a question comes up months later ("when exactly was this registered?"), the answer is one scroll away.

Defenses, documented

Defenses can be scheduled as individual or panel disputations, with an ordered list of presentations. During the defense, the Q&A protocol records each question and answer together with the actual presentation start and end times. The protocol can be exported as a PDF. Reminder emails go out before the defense.

Grades calculate themselves

Thesis Grades

Assessments use templates of weighted criteria. Each criterion is a rubric of six levels, from Außerordentlich (0.7) to Mangelhaft (5.0), plus a field for the reasoning.

As soon as a cell is selected, the form recomputes the grade:

  1. Each section gets the weighted mean of its answered criteria.
  2. That mean is rounded to the German grading scale (1.0, 1.3, 1.7 … 4.0, and 5.0 above 4).
  3. The sections are combined by their weights.

In the example above, Inhalt counts 70 % and Form 30 %. Raising one criterion from Gut to Sehr gut moves the thesis from 2.0 to 1.7, and you see it happen while you grade. The finished assessment is exported as a PDF.

Running in the background

A worker inside the app runs every 30 minutes. It sends reminders for deadlines, missing signatures and upcoming submissions, rejects expired applications, and archives completed thesis folders to Nextcloud over WebDAV, with retries. Login runs through our Authentik instance via OpenID Connect, and roles are derived from group membership at every login.

Under the hood

The app is a Next.js 16 application with React 19, TypeScript, Tailwind CSS 4 and shadcn/ui. The rest of the stack:

- Data: Prisma 7 on PostgreSQL.

- Rate limiting: Redis.

- Files: MinIO (S3-compatible storage).

- PDFs: pdf-lib.

- Authentication: better-auth.

- Notifications: Webhooks.

Every mutation goes through a server action, and end-to-end tests run with Playwright in Chromium and Firefox.

Recommended