DEVELOPER PORTFOLIO
client.on("interactionCreate", async (i) => { if (!i.isChatInputCommand()) return; const cmd = commands.get(i.commandName); if (!cmd) return; try { await cmd.execute(i); } catch (err) { logger.error(err); } });
RegisterNetEvent("swat:deploy", function() local src = source local xPlayer = ESX.GetPlayerFromId(src) if xPlayer.job.name == "police" then TriggerClientEvent("swat:open", src) end end)
RegisterNetEvent("swat:deploy", function() local src = source local xPlayer = ESX.GetPlayerFromId(src) if xPlayer.job.name == "police" then TriggerClientEvent("swat:open", src) end end)
function getTenantByHost(host) { const t = TENANTS.find((t) => host.includes(t.domain) ); return t || TENANTS[0]; }
def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + [pivot] + quick_sort(right)
migrate(async (db) => { await db.exec(` CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, rank INTEGER DEFAULT 0 )`); });
<?php function sanitize($input) { return htmlspecialchars( trim($input), ENT_QUOTES, "UTF-8" ); }
function getTenantByHost(host) { const t = TENANTS.find((t) => host.includes(t.domain) ); return t || TENANTS[0]; }
def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + [pivot] + quick_sort(right)
RegisterNetEvent("swat:deploy", function() local src = source local xPlayer = ESX.GetPlayerFromId(src) if xPlayer.job.name == "police" then TriggerClientEvent("swat:open", src) end end)
function* fibonacci() { let [a, b] = [0, 1]; while (true) { yield a; [a, b] = [b, a + b]; } }
<?php function sanitize($input) { return htmlspecialchars( trim($input), ENT_QUOTES, "UTF-8" ); }
const embed = new EmbedBuilder() .setTitle("SWAT Team Status") .setColor(0xff3333) .addFields( { name: "Online", value: count } ); await channel.send({ embeds: [embed] });
async function moderate(text) { for (const rule of RULES) { if (rule.test(text)) { return { approved: false, reason: rule.reason }; } } return { approved: true }; }
client.on("interactionCreate", async (i) => { if (!i.isChatInputCommand()) return; const cmd = commands.get(i.commandName); if (!cmd) return; try { await cmd.execute(i); } catch (err) { logger.error(err); } });
client.on("interactionCreate", async (i) => { if (!i.isChatInputCommand()) return; const cmd = commands.get(i.commandName); if (!cmd) return; try { await cmd.execute(i); } catch (err) { logger.error(err); } });
async function moderate(text) { for (const rule of RULES) { if (rule.test(text)) { return { approved: false, reason: rule.reason }; } } return { approved: true }; }
migrate(async (db) => { await db.exec(` CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, rank INTEGER DEFAULT 0 )`); });
interface Repository<T> { findById(id: string): Promise<T | null>; save(entity: T): Promise<void>; delete(id: string): Promise<boolean>; }
RegisterNetEvent("swat:deploy", function() local src = source local xPlayer = ESX.GetPlayerFromId(src) if xPlayer.job.name == "police" then TriggerClientEvent("swat:open", src) end end)
client.on("interactionCreate", async (i) => { if (!i.isChatInputCommand()) return; const cmd = commands.get(i.commandName); if (!cmd) return; try { await cmd.execute(i); } catch (err) { logger.error(err); } });
interface Repository<T> { findById(id: string): Promise<T | null>; save(entity: T): Promise<void>; delete(id: string): Promise<boolean>; }
async function moderate(text) { for (const rule of RULES) { if (rule.test(text)) { return { approved: false, reason: rule.reason }; } } return { approved: true }; }
async function moderate(text) { for (const rule of RULES) { if (rule.test(text)) { return { approved: false, reason: rule.reason }; } } return { approved: true }; }
const embed = new EmbedBuilder() .setTitle("SWAT Team Status") .setColor(0xff3333) .addFields( { name: "Online", value: count } ); await channel.send({ embeds: [embed] });
migrate(async (db) => { await db.exec(` CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, rank INTEGER DEFAULT 0 )`); });
client.on("interactionCreate", async (i) => { if (!i.isChatInputCommand()) return; const cmd = commands.get(i.commandName); if (!cmd) return; try { await cmd.execute(i); } catch (err) { logger.error(err); } });
const debounce = (fn, wait) => { let t; return (...args) => { clearTimeout(t); t = setTimeout(() => fn(...args), wait); }; };
function* fibonacci() { let [a, b] = [0, 1]; while (true) { yield a; [a, b] = [b, a + b]; } }
interface Repository<T> { findById(id: string): Promise<T | null>; save(entity: T): Promise<void>; delete(id: string): Promise<boolean>; }
const embed = new EmbedBuilder() .setTitle("SWAT Team Status") .setColor(0xff3333) .addFields( { name: "Online", value: count } ); await channel.send({ embeds: [embed] });
function* fibonacci() { let [a, b] = [0, 1]; while (true) { yield a; [a, b] = [b, a + b]; } }
<?php function sanitize($input) { return htmlspecialchars( trim($input), ENT_QUOTES, "UTF-8" ); }
const embed = new EmbedBuilder() .setTitle("SWAT Team Status") .setColor(0xff3333) .addFields( { name: "Online", value: count } ); await channel.send({ embeds: [embed] });
def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + [pivot] + quick_sort(right)
def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + [pivot] + quick_sort(right)
export async function getTeamStatus() { const rows = await sheets.values.get({ spreadsheetId: SHEET_ID, range: "Team!A2:D" }); return rows.data.values.map((r) => ({ name: r[0], online: r[2] === "online" })); }
<?php function sanitize($input) { return htmlspecialchars( trim($input), ENT_QUOTES, "UTF-8" ); }
async function moderate(text) { for (const rule of RULES) { if (rule.test(text)) { return { approved: false, reason: rule.reason }; } } return { approved: true }; }
async function moderate(text) { for (const rule of RULES) { if (rule.test(text)) { return { approved: false, reason: rule.reason }; } } return { approved: true }; }
function getTenantByHost(host) { const t = TENANTS.find((t) => host.includes(t.domain) ); return t || TENANTS[0]; }
RegisterNetEvent("swat:deploy", function() local src = source local xPlayer = ESX.GetPlayerFromId(src) if xPlayer.job.name == "police" then TriggerClientEvent("swat:open", src) end end)
interface Repository<T> { findById(id: string): Promise<T | null>; save(entity: T): Promise<void>; delete(id: string): Promise<boolean>; }
function getTenantByHost(host) { const t = TENANTS.find((t) => host.includes(t.domain) ); return t || TENANTS[0]; }

NATHAN

_

ÜBER MICH

0+
PROJEKTE
0+
JAHRE ERFAHRUNG
0K+
ZEILEN CODE
24/7
DEDICATION

KENNTNISSE

Sprachen

JavaScript / TypeScript92%
PHP85%
Python74%
Lua70%

Frameworks & Tools

Next.js / React88%
Node.js90%
discord.js93%
SQLite / MySQL80%

Spezialgebiete

Discord Bots95%
Multi-Tenant Web-Panels87%
FiveM Resources78%
Automatisierung82%

2025 RECAP

EIN RÜCKBLICK AUF MEINE ENTWICKLER-REISE

100K+
Zeilen Code geschrieben

Von Discord Bots über Web-Apps bis hin zu FiveM Resources — jede Zeile ein Schritt nach vorne.

Discord Bot — Team Monitoring
NODE.JS
const teamStatus = await getTeamFromSheets();
const embed = new EmbedBuilder()
  .setTitle(0)
  .setColor(0xff3333)
  .addFields(
    { name: 1, value: teamStatus.online },
    { name: 2, value: teamStatus.active }
  );

await channel.send({ embeds: [embed] });
50+
Projekte abgeschlossen

Discord Bots, Web-Panels, Automatisierungs-Scripts, FiveM Resources und mehr.

FrakPanel — Multi-Tenant Routing
TYPESCRIPT
function getAuthForHost(host: string) {
  const tenant = getTenantByHost(host);
  return tenantStorage.run(tenant.prefix, () => {
    return buildSession(tenant);
  });
}

0
Web Panel — Discord OAuth
PHP
$token = exchangeCode($_GET[0]);
$user = getDiscordUser($token);

$_SESSION[1] = $user[2];
$_SESSION[3] = $user[4];

header(5);
exit();
Top Achievements 2025
  • FrakPanel — Multi-Tenant Fraktions-Panel mit eigenem Bot je Fraktion
  • Discord Bot mit Google Sheets Integration
  • FiveM SWAT-System mit modernem UI
  • Automatisierungs-Scripts mit Apps Script
Google Sheets Automation
APPS SCRIPT
function updateTeamStatus() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();

  data.forEach((row) => {
    if (row[2] === 0) {
      sendWebhook({ content: row[0] });
    }
  });
}
24/7
Dedication & Leidenschaft

Coding ist nicht nur Arbeit — es ist Passion. Immer am Ball, immer am Lernen.

FiveM — SWAT System
LUA
RegisterCommand(0, function(source)
  local xPlayer = ESX.GetPlayerFromId(source)

  if xPlayer.job.name == 1 then
    TriggerClientEvent(2, source)
    TriggerEvent(3, xPlayer.name)
  end
end)

PROJEKTE

Discord Bot Framework

Umfangreiches Discord Bot System mit Team-Monitoring, Google Sheets Integration, Economy-System und Mini-Games für Gaming-Communities.

NODE.JSDISCORD.JSGOOGLE API

Web Management System

Moderne Web-Anwendungen für Server-Management mit Discord OAuth, Fraktionsverwaltung und Admin-Kontrolle.

PHPMYSQLJAVASCRIPT

FiveM Server Resources

SWAT-Systeme, Fahrzeugverwaltung und UI-Modifikationen für GTA V Roleplay Server mit modernem Design.

LUAJAVASCRIPTHTML/CSS

Automation Scripts

Google Sheets Automatisierung mit VBA und Apps Script für Schichtplanung, Aktivitäts-Tracking und Datenmanagement.

APPS SCRIPTVBAAUTOMATION

Real-time Monitoring

Live Team-Status Überwachung mit Webhook-Integration und automatischen Benachrichtigungen für SWAT/DF Teams.

WEBHOOKSREST APIREAL-TIME

UI/UX Design

Moderne Interface-Designs mit cleanen Layouts, Animationen und responsiven Designs für Web & Gaming.

CSS3ANIMATIONSRESPONSIVE

FEEDBACK

SOCIALS