CASE STUDY
KLICKin
The career platform of Aalen University – in production since launch and now used by more than 550 registered users.
- Role
- Fullstack development, DevOps and operations
- Status
- Running in production
- CLIENT


STARTING POINT
Problem
Students, alumni and companies around Aalen University could only find each other through scattered point solutions: a job board here, profiles there, career fairs somewhere else again. What was needed was one product that brings all of it together – and that a university can keep running on its own. So not a prototype, but a system that survives everyday use without constant babysitting.
HOW IT WORKS
Solution & architecture
Platform
One product instead of four point solutions
I built the platform as a fullstack system: Next.js on the front end, an Express backend, and PostgreSQL driven by hand-written SQL across 25 migrations — deliberately without an ORM, so queries and indexes stay under my control. Real-time chat runs on Socket.IO, secured by a JWT handshake when the connection opens.
- Real-time chat with a JWT handshake
- Presence in Redis, longer work through BullMQ
- OAuth via Google and LinkedIn, admin accounts with TOTP 2FA

Operations
Every commit takes the same path
Operations are what actually carries the platform. Every commit goes through tests, Playwright end-to-end runs and a Gitleaks scan for secrets before images reach the GitHub Container Registry and are rolled out to Hetzner automatically.
- Health checks and automatic rollback on deployment
- Containers run read-only with cap_drop
- 464 of the 467 commits in the repository are mine

ARCHITECTURE
The path through the system
Next.js frontend
Job board, profiles, virtual fair
Express API
OAuth (Google, LinkedIn), admin TOTP 2FA
PostgreSQL
Raw SQL, 25 migrations
Real time
Socket.IO with JWT handshake, presence in Redis
Background jobs
BullMQ on Redis
CI/CD: tests, Playwright E2E and a Gitleaks scan → GHCR images → automated Hetzner deployment with health check and rollback, containers read-only with cap_drop
Results
- registered users
- 550+registered users
- commits written by me
- 464/467commits written by me
- SQL migrations
- 25SQL migrations
- in production on klick-in.de
- Livein production on klick-in.de
EVIDENCE & SCOPE
What is evidenced — and where the claim ends
These four fields separate my contribution, the project context, the measurement basis and the limits of the results.
- My contribution
- Fullstack development, DevOps and operations. I authored 464 of the repository's 467 commits, covering the front end, backend, database migrations, real-time features and deployment pipeline.
- Team & context
- KLICKin is Aalen University's career platform. The commit count makes my code contribution visible, but says nothing about subject-matter, organisational or editorial contributions outside the repository.
- Measurement basis
- The case study documents 550+ registered accounts, 464 of 467 commits, 25 SQL migrations and the live production system on klick-in.de.
- Limitations
- 550+ means registered users, not monthly active users. The source is private, so repository history and implementation details cannot be independently inspected in public. Uptime, usage frequency and conversion are not reported here.
BUILT WITH
Tech stack
- Next.js
- Express
- PostgreSQL
- Raw SQL
- Redis
- BullMQ
- Socket.IO
- Docker
- GitHub Actions
- Playwright
Does this match what you have in mind?
I build systems that are meant to run in production, not just to demo. If that matches what you have in mind, get in touch.
All case studies