From first commit to running server: I build web apps and keep them running.
Full-stack developer with 10 years of experience as a system administrator.
📍 Saxony-Anhalt, Germany · 💼 Open to junior full-stack roles, remote or hybrid · 🗣️ German (native), English (professional)
I build with Angular and TypeScript on the frontend and Django / Django REST Framework on the backend. Then I containerize what I build, ship it through CI/CD and run it on my own Linux server.
Since 2016 I've been a system administrator at a large social services organization: 7 sites, 600 employees, 1,000 students and more than 600 devices. Between mid-2024 and early 2026 I completed an 18-month web developer program at Developer Akademie. That combination is what I bring to a dev team: I know what happens after the merge. It's especially useful in small teams without a dedicated ops person.
Turns a docker-compose.yml into an interactive graph of your stack: containers, networks, volumes, dependencies and exposed ports. Runs entirely in the browser, nothing gets uploaded.
- Angular with Signals for state and RxJS for the parse → layout pipeline
- ELK for automatic layout, custom SVG for rendering, interaction and export
- Strict TypeScript, Vitest, ESLint and Prettier, all enforced in CI
- Multi-stage Docker build (Node → nginx), running behind Caddy on my own VPS
| Project | What it does | My part |
|---|---|---|
| Videoflix Code |
Video streaming backend with HLS conversion via ffmpeg as background jobs. Four containers: Django with Gunicorn, RQ worker, PostgreSQL, Redis. Django · RQ · PostgreSQL · Redis · ffmpeg · Docker Compose |
Course project. Frontend provided by Developer Akademie, backend and operations by me. |
| Coderr Code |
Marketplace backend connecting customers with business partners: REST API with roles, permissions and domain rules. Django · Django REST Framework |
Course project. Frontend provided by Developer Akademie, backend and operations by me. |
| Join Live · Code |
Task management app with a drag-and-drop board. JavaScript · Firebase |
Team project (3 people), design by Developer Akademie. I coordinated the team, built the Firebase integration, login and registration and the drag-and-drop board, and helped with bug fixes. |
| Sharkie Live · Code |
2D browser game. Vanilla JavaScript · OOP |
Course project. Graphics by Developer Akademie, sounds from Freesound.org. |
My new portfolio runs through the kind of pipeline I'd want in a team (source):
pull request → CI: lint · format · tests · build → merge
→ Docker image on GHCR, tagged with the commit hash
→ deploy via SSH forced command: GitHub sends a tag, the server decides what runs
→ health check → automatic rollback if the new container isn't healthy
- Staging and production:
developdeploys to a password-protected staging site,mainto production - Least privilege: the job that pushes images never sees a deploy key, and deploy keys can't open a shell
- Supply chain: GitHub Actions pinned to commit SHAs, updated by Dependabot with a 7-day cooldown
- Hardened containers: non-root, read-only filesystem, all capabilities dropped
- Around it: Caddy as reverse proxy, Uptime Kuma for monitoring with push alerts, self-hosted Umami for cookie-free analytics
| Area | Tools | Where to see it |
|---|---|---|
| Frontend | StackGraph, Join, Sharkie | |
| Backend | Videoflix, Coderr, Join | |
| Infrastructure | StackGraph, Videoflix, Portfolio | |
| CI/CD and quality | StackGraph, Portfolio |
- Building my new portfolio, launching at the end of 2026 at tobias-klanert.de
- Moving StackGraph's deployment to the same locked-down pattern as the portfolio
- Getting stronger at automated testing and clean API design
Looking for a junior developer who builds features and also knows how to run them? I'd love to hear from you.
📧 kontakt@tobias-klanert.de · 💼 LinkedIn · 🌐 tobias-klanert.de
Fun fact: I get strangely excited about tidy folder structures, which is probably why my repos and my server both look the way they do.

