DMN/Software

Webanwendungen vom Schema bis zum Server.

Leon, Full-Stack-Entwickler. Eigene Webanwendungen mit React, Node.js und TypeScript.

Offen für eine Festanstellung, remote oder hybrid in NRW.

Projekte ansehen Kontakt Werdegang auf LinkedIn

Projekte

Vier laufen live, drei ohne Registrierung.

Quellen-Chat nach dem Vorbild von NotebookLM

Eigene Quellen hochladen, im Chat befragen und jede Aussage der Antwort bis zu der Textstelle zurückverfolgen, aus der sie stammt. Zitatnummern ohne passende Textstelle fallen weg, jede übrige führt zur Passage.

  • Next.js
  • NestJS
  • Postgres mit pgvector
  • hybride Suche

Statusdienst

Überwacht Websites und Server, zeigt die Verfügbarkeit öffentlich an und meldet Ausfall und Wiederkehr per Mail. Ein einzelner Aussetzer löst noch keinen Alarm aus, ein Ausfall beginnt erst nach mehreren Fehlschlägen in Folge.

  • Go
  • net/http
  • SQLite
  • Docker
Website
99,77 %
Bewerbungsportal
100,00 %
Bewerbungen-API
99,98 %
Quellen-Chat
100,00 %

Verfügbarkeit seit Messbeginn am , Stand

Bewerbungsportal

Sucht weltweite Remote-Stellen, die von Deutschland aus antretbar sind, und verfolgt die eigenen Bewerbungen. Viele „Remote“-Anzeigen gelten nur für ein Land: Das Portal liest die Vorgabe aus jeder Anzeige und zeigt bei aussortierten Stellen den Satz, der sie ausschließt.

  • Next.js
  • Supabase
  • pgvector
  • pg-boss
  • Resend
  1. Bewertet3.389 Stellen
  2. Über der Punktschwelle370 Stellen
  3. Aus Deutschland antretbar175 Stellen

Stand

Minispiele

Zwölf Browserspiele mit Bestenliste. Der Server spielt jeden Lauf aus den Eingaben nach und rechnet die Punkte selbst, der Browser kann keine Punktzahl vorgeben.

  • Vite
  • React
  • TypeScript
  • Fastify
  • node:sqlite
  • Docker
  1. Browser schickt nur die Eingaben
  2. Server spielt den Lauf per Seed nach
  3. Server rechnet die Punkte selbst aus
  4. Bestenliste übernimmt das Ergebnis, mit Ratelimit pro gehashter IP

So gebaut

Was sich durch die Projekte oben zieht.

  1. Der ganze Stack selbst gebaut

    Datenbankschema, API, Oberfläche und Deployment entstehen zusammen, nicht als getrennte Teile.

    Echter Code aus den Minispielen

    api/src/db.ts

    CREATE TABLE scores (  id          INTEGER PRIMARY KEY AUTOINCREMENT,  game        TEXT    NOT NULL,  name        TEXT    NOT NULL,  score       INTEGER NOT NULL,  duration_ms INTEGER NOT NULL,  created_at  INTEGER NOT NULL,  ip_hash     TEXT    NOT NULL);

    api/src/routes.ts

    app.post<>(  '/score',   async (req, reply) => {    const { token, log } = req.body        const game = session.game as GameId    const result = replay(SIMS[game],      session.seed, log)    const score = result.score

    web/src/shell/Leaderboard.tsx

    <div className="board">  <h3>Bestenliste</h3>      <ol>      {top.map((row) => (        <li key={`${row.rank}-${row.name}`} >          <em>{row.name}</em>          <b>{row.score}</b>        </li>

    deploy/README.md

    cd $ZIELgit pullcd deploydocker compose up -d --builddocker compose pscurl -s \  https://minigames.dmn-software.com/api/v1/health
    Code aus dem Quellen-Chat ansehen
  2. Betrieb auf eigenem Server

    Die Anwendungen laufen in Containern mit Docker hinter Caddy auf einem angemieteten Server, selbst eingerichtet und betreut.

    Browser FiveM Client iframe HTTPS HTTPS nur 80 und 443 80 leitet auf 443 Caddy einziger Eingang · TLS Reverse Proxy · HTTPS mit Let's Encrypt HTTP intern dmn-software.com internes Netz Caddy statische Dateien Website API HTTPS API nur über die Website erreichbar minigames.dmn-software.com internes Netz Web · React API · Fastify SQL SQLite · Volume notebook.dmn-software.com internes Netz Web · Next.js Supabase Gateway SQL PostgreSQL pgvector API · NestJS HTTPS API bewerbungen.dmn-software.com internes Netz Web · Next.js Supabase Gateway Kong Auth · REST Storage Worker · pg-boss SQL PostgreSQL pgvector HTTPS API status.dmn-software.com internes Netz Statusdienst · Go SQL SQLite · Volume Außen Resend · Mail Cloudflare Email Routing Postfach KI-Anbieter Gemini, Claude Jobbörsen und ATS Browser FiveM Client iframe HTTPS HTTPS nur 80 und 443 80 leitet auf 443 Caddy einziger Eingang · TLS Reverse Proxy · HTTPS mit Let's Encrypt HTTP intern dmn-software.com internes Netz Caddy · statische Dateien Website API HTTPS API nur über die Website erreichbar minigames.dmn-software.com internes Netz Web · React API · Fastify SQL SQLite Volume notebook.dmn-software.com internes Netz Web · Next.js PostgreSQL pgvector API · NestJS Supabase Gateway HTTPS API bewerbungen.dmn-software.com internes Netz Web · Next.js Supabase Gateway, Kong PostgreSQL pgvector Auth · REST Storage SQL Worker · pg-boss HTTPS API status.dmn-software.com internes Netz Statusdienst · Go SQL SQLite Volume Außen Cloudflare Email Routing Resend · Mail Postfach KI-Anbieter Gemini, Claude Jobbörsen und ATS
    • Kontaktformular: Browser schickt das Formular per HTTPS. Caddy terminiert TLS und leitet an die Website API. Website API prüft Eingaben und Limits. Resend verschickt die Mail. Cloudflare Email Routing leitet sie an das Postfach weiter.
    • Minispiel-Score: Client schickt nur Eingaben. Server spielt den Lauf per Seed nach. Punkte landen in SQLite.
    • Frage an den Quellen-Chat: Frage an die NestJS API. Hybride Suche in Postgres mit pgvector. Gemini formuliert die Antwort mit Zitaten.
    • Tägliche Mail: Worker plant die Zusammenfassung. Treffer aus Postgres. Resend verschickt die Mail.
    Caddy ist der einzige Eingang von außen. Jede Anwendung läuft als eigener Docker-Stack in einem eigenen internen Netz, nur Caddy ist mit allen verbunden. Unter „Außen“ stehen die Dienste außerhalb des Servers, die Punkte zeigen, ob eine Anwendung gerade erreichbar ist.
  3. Was zählt, rechnet der Server

    Bei den Minispielen schickt der Browser nur Eingaben. Die Punkte rechnet der Server selbst aus, deshalb lässt sich die Bestenliste nicht mit erfundenen Werten füttern.

  4. Nachvollziehbar statt Blackbox

    Im Quellen-Chat führt jede Aussage einer Antwort zur Textstelle in der Quelle zurück, statt einfach geglaubt werden zu müssen.

Für FiveM-Server

Ressourcen für FiveM

Systeme und Werkzeuge für Rollenspielserver in GTA V, etwa Bank, Rechnungen und Charakterauswahl. Die meisten laufen auf der versionierten Bibliothek dmn_base mit Datenbankmigrationen und Adaptern für ESX, QBCore und Qbox.

Discord-Bot

Eigenständiger Bot für den Discord-Server zu den Ressourcen. Vorlagen aus einer Datei und Entwürfe eines Sprachmodells laufen durch dieselbe Schemaprüfung, bevor er Rollen und Kanäle anlegt.

Details ansehen

Nicht öffentlich erreichbar

dmn_banking: Kontoübersicht mit Kontostand, Eingängen, Ausgängen und Verlaufsdiagramm
dmn_carsteal: Auftragszentrale mit Rang Klasse 2, Fortschritt zur nächsten Klasse, abgeschlossenen Aufträgen und Gesamtverdienst
dmn_base: Minispiel Keypad mit Ziffernblock

Oberflächen im Browser mit Beispieldaten

Technik

Frontend
  • React
  • Next.js
  • SvelteKit
  • Svelte
  • Vue.js
  • TypeScript
  • JavaScript
  • HTML5
  • CSS3
  • Tailwind CSS
  • Bootstrap
Backend
  • Node.js
  • NestJS
  • PHP
  • Laravel
  • REST-APIs
  • Supabase Edge Functions
  • Lua
  • Go
Datenbanken
  • PostgreSQL
  • MySQL
  • MongoDB
  • Supabase
  • pgvector
  • SQL
  • Row Level Security
Mobile
  • Capacitor
  • Apps für iOS und Android
  • App Store
  • Google Play Store
DevOps und Infrastruktur
  • Docker
  • Git
  • GitLab CI/CD
  • AWS (EC2, S3, RDS)
  • Linux
  • Proxmox
  • Caddy
  • Nginx
KI und Suche
  • RAG
  • Embeddings
  • Vektorsuche
  • LLM-Integration
  • Claude Code
Qualität und Methoden
  • Unit Tests
  • automatisierte Tests
  • Code-Reviews
  • Clean Code
  • technische Dokumentation
  • Scrum
  • Jira
  • Confluence

Kontakt

Stellenangebote, Rückfragen zu einem Projekt oder zum Code: per Mail oder über das Formular.