Skip to content
VS
All work
01 /

Student Service Platform

A contracted university information system, rebuilt for the web.

Kind
client project
Context
In development for a higher-education client
Domain
PLATFORMS

Client project — source code is private.

Student Service Platform
Student Service Platform overview showing student, administrator and professor portals

Overview

A modular-monolith web replacement for an existing desktop student-service application, developed for a contracted higher-education client. The system carries the workflows of a real registrar office: enrollment, courses, exams, grading, finances, documents, scheduling, notifications and reporting.

Four role types use the same platform with different authority — students, professors, administrators and head administrators — so authorization is a first-class part of the domain model rather than a filter applied at the edge.

The interesting engineering is not the forms. It is guaranteeing that two people cannot take the last seat in a course, that a grade cannot be silently rewritten, and that a financial operation cannot be applied twice.

Request path

  1. React
  2. REST API
  3. Spring Boot
  4. Modular monolith
  5. JPA / Hibernate
  6. MySQL

Technical challenge

Enrollment, examination and financial operations are all contended: many users act on the same rows at the same moment, and the correct outcome is not "last write wins".

Replacing a desktop application means the new system has to be at least as trustworthy as the one people already rely on, which pushed the work toward explicit transactional boundaries, database-level constraints and pessimistic locking on the contended paths.

Because the records are academic and financial, every privileged action needs to leave a trail that cannot be quietly edited after the fact.

Security

Authentication is session-based with CSRF protection on state-changing requests. Authorization is permission-based on top of roles, so a head administrator and an administrator differ by the permissions they hold rather than by branches scattered through the code.

  • 01Session-based authentication
  • 02CSRF protection
  • 03Role-based access control
  • 04Permission-based authorization
  • 05BCrypt password hashing
  • 06Rate limiting
  • 07Tamper-evident audit logging

Concurrency and reliability

The contended paths — taking a course seat, registering an exam result, applying a payment — run inside explicit transactional boundaries with database constraints as the final guarantee. Pessimistic locking is used where two transactions genuinely cannot both proceed, and idempotency keys stop a retried request from applying an operation twice.

  • 01Transactional workflows
  • 02Database constraints
  • 03Pessimistic locking
  • 04Idempotency
  • 05Protected enrollment, examination and financial operations

Testing and delivery

Schema changes are versioned with Flyway. Integration tests run against a real MySQL container rather than an in-memory substitute, so constraint and locking behaviour is exercised as it will actually behave. Playwright covers the workflows end to end, and the API is validated against its OpenAPI contract.

  • 01Docker
  • 02nginx
  • 03Flyway migrations
  • 04GitHub Actions
  • 05Testcontainers
  • 06Playwright
  • 07OpenAPI contract validation
  • 08CodeQL
  • 09Trivy

What it does

  • 01Modular-monolith backend built with Java 21 and Spring Boot
  • 02Role-based access control with permission-based authorization across students, professors, administrators and head administrators
  • 03Session-based authentication with CSRF protection, BCrypt password hashing and rate limiting
  • 04Tamper-evident audit logging for privileged actions
  • 05Transactional workflows protected by database constraints and pessimistic locking
  • 06Idempotency on operations that must not apply twice
  • 07Concurrency protection across enrollment, examination and financial operations
  • 08OpenAPI contract validation in CI
  • 09Integration tests on real database containers via Testcontainers, end-to-end tests via Playwright
  • 10CodeQL and Trivy scanning in the delivery pipeline

Technologies

Backend

Java 21

Spring Boot

JPA

Hibernate

Frontend

React

TypeScript

Data

MySQL

Flyway

Infrastructure & quality

Docker

nginx

GitHub Actions

Testcontainers

Playwright

OpenAPI

CodeQL

Trivy

More

Year-enrollment approvals
Head administrator reviewing student year-enrollment requests
Pre-exam activities and grading
Professor entering points for pre-exam activities
Student academic overview
Student profile with exam, ECTS and grade statistics