Ich baue Webseiten für kleine und mittlere Betriebe — mit Django, von Grund auf selbst, inklusive Deployment, Domain, SEO und laufender Betreuung. Daneben entstehen Werkzeuge, die echte Arbeit abnehmen: Bestellsysteme, Scraping-Pipelines, Automatisierung.
Angefangen habe ich mit 11 bei Scratch. Im Juli 2025, direkt nach dem Realschulabschluss, habe ich bewusst wieder bei hello world begonnen und seitdem nicht mehr aufgehört.
Aktuell: freiberufliche Kundenprojekte · Ab 2027: Ausbildung zum Fachinformatiker für Anwendungsentwicklung
Sieben Seiten sind produktiv im Einsatz. Jede davon habe ich vollständig selbst gebaut: Konzept, Inhalte, Django-Umsetzung, Design, Deployment und die Suchmaschinen-Optimierung danach.
flowchart LR
A["Anfrage"] --> B["Konzept<br/>Struktur · Texte"]
B --> C["Umsetzung<br/>Django"]
C --> D["Deployment<br/>Railway · Domain"]
D --> E["SEO und GEO<br/>Schema.org · llms.txt"]
E --> F["Betreuung<br/>Änderungen · Ads"]
F -. neu .-> B
![]() |
![]() |
| Rümpelwerk Mitteldeutschland Entrümpelung & Haushaltsauflösungen. Mein bestbetreutes Projekt: Seite, SEO und Google Ads aus einer Hand — es kommen laufend echte Aufträge über die Seite herein. |
WVM-IT Österreichisches IT-Unternehmen, zugleich Auftraggeber und Kooperationspartner. Dreisprachig DE/EN/RO über ein eigenes i18n-Paket ohne gettext. |
![]() |
![]() |
| Automobilzentrum Rhein-Neckar Luxus- und Sportwagenhandel und mein technisch aufwändigstes Frontend. Ein Kinovideo, dessen Wiedergabe der Scroll-Position folgt statt selbst zu laufen, und ein Showroom mit Fahrzeugen, die man mit der Maus rundherum drehen kann — sechs Modelle von Bugatti bis Lamborghini. |
Luviq Universe Vollständiger Onlineshop für handbemalte Second-Hand-Mode: Katalog, Warenkorb, PayPal-Checkout, Konten. Mein erstes Projekt für eine andere Person. |
![]() |
![]() |
| RTC-Service Technik, Installation und Modernisierung. Im Kopfbereich steht ein interaktiver 3D-Roboter (Spline, WebGL), der auf Mausbewegungen reagiert. Dazu direkte Kontaktwege über WhatsApp und Telefon. |
Flügel Haus & Gebäudeservice Gebäudereinigung und Gartenpflege. Klare Leistungsstruktur mit Angebotsanfrage als zentralem Weg. |
PyStore — hierüber verkaufe ich Webseiten. Django-Multi-App mit rund 135 eigenständigen Stadtseiten für lokale Suchanfragen, FAQ- und Breadcrumb-Auszeichnung, selbst gehostete Schriften und Skripte. Lighthouse-Barrierefreiheit 100.
Was SEO und GEO bei mir konkret heißt: strukturierte Daten als
@graphstatt loser Schnipsel,FAQPage- undBreadcrumb-Auszeichnung,llms.txtund eine für KI-Crawler geöffneterobots.txt, Antwort-zuerst-Texte, dazu Local-SEO für den deutschsprachigen Raum. Bei Rümpelwerk kommt die Google-Ads-Betreuung dazu.
Auf TikTok veröffentliche ich als @python_tutorials_de Python-Tutorials und zeige, woran ich gerade baue. Angefangen bei null.
Das war nie nur Nebensache. Erklären zwingt zum Verstehen — und der Kanal ist bis heute mein wichtigster Vertriebsweg: mehrere meiner zahlenden Kunden haben mich über TikTok gefunden, angefangen beim allerersten Auftrag, der aus einem Kommentar unter einem Video entstand.
Am besten liefen zwei Videos über meine Scraping-Dashboards mit 126.000 und 100.000 Aufrufen — gezeigte Projekte ziehen deutlich mehr als reine Tutorials.
→ Als scroll-gesteuerte Seite ansehen — dort wächst die Zeitleiste mit, während man scrollt.
Zwei Dinge in dieser Zeitleiste haben mehr verändert als alles andere.
Das erste war die Programmier-AG im Internat. Zehn bis fünfzehn Mitschülern Python beizubringen zwang mich, Konzepte so weit zu durchdringen, dass ich sie erklären konnte. Wer eine for-Schleife dreimal unterschiedlich erklären muss, bis es klick macht, versteht sie danach selbst anders.
Das zweite war ein Kommentar unter einem TikTok-Video. Jemand fragte, ob ich einen Vinted-Scraper mit Discord-Anbindung bauen könne. Ich sagte zu, lieferte — und aus „Python lernen" wurde „Software für fremde Anforderungen bauen". Alles danach folgte aus diesem einen Auftrag.
Die Einstufungen sind aus gemessener Nutzung abgeleitet, nicht geschätzt: Codezeilen, Testfunktionen und produktive Projekte. Wo ich schwach bin, steht das genauso da wie das, was ich kann.
Neben den Webseiten entstehen Werkzeuge, die konkrete Arbeit abnehmen.
FastAPI-Backend mit PostgreSQL und Redis, dazu eine native Android-App in Kotlin und Jetpack Compose. Bestellungen lösen im Laden einen Alarm aus — ohne Firebase, über einen eigenen Long-Polling-Kanal. Für Betreiberkonten ist Zwei-Faktor-Authentifizierung per TOTP Pflicht.
Der Teil, auf den ich am meisten Wert gelegt habe, steht nicht im Code: Der Wirt pflegt Speisekarte, Fotos, Stammdaten und Rechtstexte selbst in der App. Das System gehört nach der Übergabe ihm, nicht mir.
flowchart LR
A["Android-App<br/>Kotlin · Compose"] -->|REST + JWT| B["FastAPI<br/>Service-Schicht"]
B --> C[("PostgreSQL")]
B --> D[("Redis<br/>Rate-Limit · Cache")]
B -->|Long-Polling| E["Küchen-Alarm"]
F["Wirt<br/>pflegt Inhalte selbst"] --> B
17.744 Zeilen Python · 13.174 Zeilen Kotlin · 214 Tests · Docker · 10 Doku-Dateien
Privates Repository — der Kunde hat es noch nicht abgenommen.
Scrapt Mietwohnungsangebote, sortiert sie nach Bundesland und spielt sie über einen Discord-Bot aus. Technisch mein saubersten gebautes Projekt: das einzige mit durchgehender Testabdeckung, Docker und GitHub Actions.
flowchart LR
A["Kleinanzeigen<br/>urllib · BeautifulSoup"] --> B["Scraper-Schicht<br/>Normalisierung · Dedup"]
B --> C[("Datenhaltung")]
C --> D["Dashboard<br/>Flask · Live-Fortschritt"]
C --> E["Discord-Bot<br/>Ausspielung je Bundesland"]
D -->|Suchen anlegen| B
47.785 Zeilen Python · 1.545 Testfunktionen in 137 Dateien · Docker · CI
Deckt den Weg von der Lead-Recherche bis zur fertig deployten Kundenwebseite ab. Entstanden aus einem praktischen Problem: Der zeitaufwändigste Teil meiner Arbeit war nie das Programmieren, sondern Betriebe finden, Kontakte recherchieren, Inhalte zusammentragen, aufsetzen, deployen.
flowchart TB
A["Quellen<br/>Verzeichnisse · Maps"] --> B["Scraper<br/>Playwright · cloudscraper"]
B --> C["Anreicherung<br/>Kontakt · bestehende Webseite?"]
C --> DB[("Lead-Datenhaltung")]
DB --> E["Bewertung<br/>Lohnt der Kontakt?"]
E --> M["Ansprache<br/>Angebots-Mail"]
E --> W["Website-Bau<br/>Vorlage + Inhalte + Design"]
W --> G["GitHub-Repo anlegen"]
G --> R["Railway-Deployment<br/>+ Domain"]
UI["Flask-Dashboard"] --- DB
UI --- W
Ehrlich eingeordnet: Die Idee trägt weiter als die Umsetzung. Bei 44.285 Zeilen stehen nur 258 Testfunktionen in vier Dateien, es gibt kein Docker-Setup und keine CI. Genau das ist die Baustelle, an der ich gerade arbeite.
44.285 Zeilen Python · 189 Module · 258 Commits
Auftragsarbeit: aus einem Briefing entsteht ein Drehbuch, daraus werden Videoszenen erzeugt und anschließend in alle benötigten Ausgabeformate geschnitten. Ein Durchlauf, der vorher aus vielen Einzelwerkzeugen bestand.
flowchart LR
A["Briefing<br/>Ziel · Zielgruppe · Ton"] --> B["Drehbuch<br/>Szene für Szene"]
B --> C["Szenen-Erzeugung<br/>Video je Einstellung"]
C --> Q["Warteschlange<br/>lange Renderjobs"]
Q --> D["Montage<br/>ffmpeg · Schnitt · Ton"]
D --> E["Ausgabeformate<br/>9:16 · 1:1 · 16:9"]
8.147 Zeilen Python · 181 Tests · Flask · ffmpeg · ausführlichste Dokumentation aller meiner Projekte
Der Django-Shop hinter luviq-alsfeld.com. Die Views habe ich nachträglich von einer einzelnen Datei in ein Package nach Zuständigkeiten aufgeteilt — ab etwa tausend Zeilen war jede Änderung eine Sucherei geworden. Das ist die Lektion, die ich aus diesem Projekt mitgenommen habe.
flowchart LR
A["Besucher"] --> B["Katalog<br/>Produkte · Detailseiten"]
B --> C["Warenkorb<br/>Session"]
C --> D["Checkout<br/>PayPal"]
D --> E["Bestätigung<br/>Brevo-Mail"]
K["Konto<br/>Registrierung + Verifizierung"] --> C
B --- F[("Cloudinary<br/>Produktbilder")]
L["Rechtstexte · sitemap.xml<br/>robots.txt"] --- B
Django 5 · PostgreSQL · PayPal · Cloudinary · Brevo · django-axes · Docker
→ Zur Seite · Repository
Ein Discord-Bot, der Vinted-Suchen überwacht und Treffer meldet. Die erste Fassung steuerte einen echten Browser und brauchte rund 1,5 GB Arbeitsspeicher — zu viel für das Hosting-Paket. Ich habe den Browser entfernt und das HTML direkt geparst: Speicherbedarf unter 200 MB.
Das war mein erstes echtes Architektur-Problem. Nicht „funktioniert es?", sondern „funktioniert es unter den Bedingungen, die tatsächlich gelten?".
flowchart LR
A["Suchen<br/>je Discord-Kanal"] --> B["Warteschlange<br/>asyncio · viele parallel"]
B --> C["Abruf<br/>requests statt Browser"]
P["Proxy-Rotation"] --> C
C --> D{"Schon gesehen?"}
D -->|nein| E["Discord-Benachrichtigung"]
D -->|ja| X["verwerfen"]
D <--> G[("MongoDB Atlas<br/>zustandslos")]
Python · asyncio · discord.py · MongoDB · Docker
Meine Ausbildung zum Fachinformatiker für Anwendungsentwicklung beginnt 2027. Einige Lernfelder decken sich bereits mit dem, was ich gebaut habe:
| Bereich | Belegt durch |
|---|---|
| Software modellieren und programmieren | 15 Projekte, 170.668 Zeilen Python |
| Datenbanken anlegen und nutzen | PostgreSQL, SQLite, Supabase inklusive Row-Level-Security |
| Anwendungen mit Schnittstellen | Eigenes FastAPI-Backend, Anbindung mehrerer externer APIs |
| Qualitätssicherung und Testen | 2.324 Testfunktionen — schwerpunktmäßig in zwei Projekten |
| Sicherheit | TOTP-Zweifaktor, JWT mit Rotation, Rate-Limiting, RLS |
| Benutzeroberflächen | Native Android-App, sieben produktive Weboberflächen |
| Kundenkommunikation | Acht zahlende Kunden, Übergaben, laufende Betreuung |
| Netzwerke und Betriebssysteme | Linux, Raspberry-Pi-Cluster, Deployment und Domainverwaltung |
Was noch fehlt: strukturierte CI/CD über alle Projekte hinweg, Datenbank-Optimierung und Arbeit im Team mit Branches und Code-Reviews. Daran arbeite ich gezielt.
- LieferungDirekt zur Abnahme bringen
- Testabdeckung und CI auf die älteren Projekte ausweiten — der größte Abstand zu sauberer Arbeit
ruffund Type-Hints als Standard in jedem neuen Projekt- Perspektivisch die Selbstständigkeit mit Webentwicklung und SEO
Alle Kennzahlen auf dieser Seite sind gemessen: Codezeilen über find und wc ohne Fremdbibliotheken, Testfunktionen über def test_, Commits aus der Git-Historie, Seiten per HTTP-Abruf geprüft. Die Reichweiten-Zahlen stammen aus der TikTok-Statistik des Kanals, Stand August 2026.






