03 / Projekte
Was ich gebaut habe
Alles in der Freizeit selbständig umgesetzt, teils mithilfe von KI. Nach Art sortiert, damit du siehst, womit ich jeweils gearbeitet habe.
A Plattform & DevOps
Wie Software gebaut, geprüft und ausgeliefert wird. Infrastruktur als Code, Pipelines und Betrieb.
-
Kubernetes
LAUNCHPAD
Meine eigene Entwickler-Plattform auf Kubernetes. Ein Klick auf «New app» erstellt ein GitHub-Repo aus einer Vorlage, eine CI-Pipeline mit Tests und Sicherheits-Scan, ein Container-Image und ein Deployment über Argo CD. Danach läuft die App mit eigener URL, Metriken, Logs und Alarmen. Alles ist als Code beschrieben: der Cluster, die GitHub-Repos mit OpenTofu und jede App in Git. Steuerrechner, GAMBIT und Ember laufen schon darauf. Ein automatischer Test baut die ganze Plattform bei jeder Änderung neu auf.
# Deploy über GitOps: neuer Image-Tag ins Repo, Argo CD rollt aus sed -i "s/newTag: .*/newTag: $TAG/" deploy/kustomization.yaml git commit -am "deploy: $TAG [skip ci]" git push -
Python
LIFEBOAT
Backups, die jede Nacht beweisen, dass sie funktionieren. Ein GitHub-Runner startet eine leere MariaDB, stellt das verschlüsselte Backup der letzten Nacht wieder her und vergleicht jede Tabelle mit dem Fingerabdruck vom Backup. Erst dann wird das nächste Backup gemacht. Ein Manipulationstest prüft, dass ein verändertes Backup abgelehnt wird, und wenn etwas schiefgeht, öffnet sich automatisch ein Issue. Im Playground kann man selbst eine Datenbank kaputt machen und wiederherstellen.
# Ein Backup zählt erst, wenn es wiederhergestellt ist db.restore(gz) if db.fingerprint() != manifest["tables"]: raise AssertionError("Restore stimmt nicht mit dem Backup überein") -
Security
LOCKBOX
Mein eigener Secrets-Manager für Passwörter und API-Keys. Jeder Wert wird mit einem eigenen Schlüssel verschlüsselt, und dieser mit einem Master-Key, der nie gespeichert wird. Jede App sieht nur die Secrets, die ihre Regeln erlauben. Jeder Zugriff landet in einem Audit-Log, das mit Hashes verkettet ist: Wer einen Eintrag ändert, bricht die Kette. Im Playground kann man sich als Admin, App oder Angreifer anmelden und alles selbst ausprobieren.
// Envelope Encryption: ein eigener Schlüssel pro Wert const data = await seal(dek, utf8(value), `lockbox:${path}:v${version}`); const wrapped = await seal(master, dekRaw, `${aad}:dek:${masterId}`);
B Web & Apps
Komplette Websites und Web-Anwendungen, alles im Browser gerechnet.
NULLBYTE
Responsive Website mit über 40 interaktiven IT- und OSINT-Tools, komplett client-seitig.
Ember
Bild-Editor komplett im Browser: Ebenen, Looks, Kurven, Zuschneiden und echter Export. Alles lokal berechnet, nichts wird hochgeladen.
Steuerrechner
Schweizer Steuerrechner mit echten ESTV-Tarifen: Netto pro Monat, Kantonsvergleich und Progressionskurve. Rechnet lokal im Browser.
Flipper 3D Explorer
Interaktiver 3D-Teardown des Flipper Zero, gebaut mit three.js und React.
The Eye
Riesiges Auge aus Code, das sich selbst tippt, öffnet und umherschaut. Mit Sharingan, Rinnegan und mehr.
C Games
Spiele und spielerische Apps, Physik und Spiellogik selbst geschrieben.
GAMBIT
Online-Schachplattform mit eigener Schach-Engine, Bots, Puzzles und Trainingsmodi.
DRIVER
Stunt-Racing im Browser: Rampen, Loopings und Flips, 8 Autodesigns, 32 Levels und Challenges. Früher hiess das Spiel «Rider».
LEVEL UP
Gamifizierte Fitness-App im Solo-Leveling-Stil mit XP, Rängen und Quests. Früher hiess die App «Arise».
D Tools & Automatisierung
Eigene Programme und Skripte, die mir Arbeit abnehmen. Alles kannst du hier herunterladen und selbst anschauen.
-
Python
ATLAS
Mein eigenes Kontrollzentrum für alle Projekte auf dem Laptop. Ein kleiner Python-Server sucht die Projekte zusammen und zeigt sie mit Vorschaubildern in einer App, dazu alle Präsentationen, Excel- und Word-Dateien an einem Ort. Von dort starte ich Dev-Server, VirtualBox und WSL, überwache Live-Seiten und GitHub-Actions und sehe E-Mails, Discord und Spotify. Für die IT gibt es Netzwerk-Werkzeuge, Server-Verbindungen, einen Arbeitsrapport und ein Inventar mit Word-Export. Automationen laufen nach dem Muster «wenn … dann …». Auf der Website läuft die echte App als Live-Demo, mit Beispieldaten statt meinen Dateien.
# Automationen melden nur, was neu dazukommt new = [(k, v) for k, v in ev if k not in st["seen"]] for k, v in new: fire(r, v) # Was verschwindet und wiederkommt, wird wieder gemeldet st["seen"] = keys -
C#
Makro-Rekorder
Eigenes Windows-Programm, das Mausbewegungen, Klicks, Mausrad und Tastatur aufnimmt und wieder abspielt, auf Wunsch auch endlos. Es hängt sich über systemweite Low-Level-Hooks in Windows ein und spielt die Eingaben mit SendInput wieder ab. Mit F9, F10 und Esc lässt es sich aus jedem Fenster steuern, ohne dass diese Tasten in der Aufnahme landen. Tempo, Anzahl Durchläufe und Pausen sind einstellbar, Aufnahmen werden als Textdatei gespeichert und wieder geladen.
Programm + Quellcode herunterladen ZIP · 20 KB// Steuertasten abfangen, damit sie nicht in der Aufnahme landen if (vk == (int)Keys.F9) { if (down) BeginInvoke(new MethodInvoker(ToggleRecord)); return new IntPtr(1); } if (vk == (int)Keys.Escape && playing) { stopRequested = true; return new IntPtr(1); } if (recording) Add(down ? Ev.KDOWN : Ev.KUP, 0, 0, vk); -
PowerShell
Dateien-Sortierer
Räumt lose Dateien automatisch in die richtigen Ordner ein. Das Skript liest Modulnummern aus dem Dateinamen und sogar aus dem Inhalt von Word-, PowerPoint- und Excel-Dateien, erkennt Themen wie OSI oder Hyper-V und ordnet sie dem passenden Schulmodul zu. Was nicht eindeutig ist, lässt es bewusst liegen, statt es falsch abzulegen. Jede Verschiebung wird protokolliert und ist rückgängig zu machen.
Skript herunterladen PowerShell · 13 KB1. Modulnummer im DATEINAMEN ("Modul_114", "M346") 2. Modulnummer im INHALT (Doc sagt "ICT Modul 431") 3. Thema in Name ODER Inhalt ("OSI"/"VPN" -> 117, "Hyper-V" -> 190) 4. Bekannte Dateiendung (.pdf, .png, .docx ...) 5. Alles andere -> Sonstiges