import knex from 'knex'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; import config from '../knexfile.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); let db = null; export async function getDB() { if (!db) { db = knex(config); await db.migrate.latest(); } return db; } export async function initDB() { const db = await getDB(); const existing = await db('cv_data').where({ id: 1 }).first(); if (!existing) { await db('cv_data').insert({ id: 1, data: JSON.stringify({ "personal": { "name": "Tuan-Dat Tran", "title": "Junior DevOps Engineer", "intro": "DevOps Engineer and Homelab Enthusiast based in Essen, Germany. Primary owner of a production aviation SaaS platform on Azure AKS, with a research background in P4 programmable networks and a co-authored IEEE publication.", "email": "tuan-dat.tran@dextradata.com", "github": "https://github.com/TuDatTr", "linkedin": "https://www.linkedin.com/in/tudattr/", "location": "Essen, Germany" }, "experience": [ { "id": 1, "role": "Junior DevOps Engineer", "company": "DextraData GRC Technologies GmbH", "period": "2025 – present", "type": "Full-time", "description": "Primary owner of the GRASP GRC platform and Logipad aviation SaaS platform, running on Azure AKS and Rancher-managed Kubernetes clusters.", "highlights": [ "Drives GitOps adoption with ArgoCD across production Kubernetes clusters", "Manages CI/CD pipelines with Bitbucket Pipelines", "Leads incident response and on-call for production outages", "Reduced GRASP frontend pipeline from 30 to 16 minutes", "Eliminated ~$2k/month Azure logging costs via workspace restructuring", "Built internal AI tooling with LiteLLM and Ollama", "Implemented Azure Container Registry mirroring to resolve Docker Hub rate limits" ] }, { "id": 2, "role": "Research Assistant", "company": "NCS Group, Universität Duisburg-Essen", "period": "2021 – 2024", "type": "Part-time", "description": "Hands-on P4 and programmable data plane research on Intel Tofino ASICs and BMv2, culminating in a co-authored publication at IEEE LCN 2023 (Reverse Path Congestion Marking).", "highlights": [ "Co-authored RPM: Reverse Path Congestion Marking on P4 Programmable Switches — IEEE LCN 2023", "Built a Dockerized federated LSTM system with custom client-selection strategies for 5G network research", "Implemented low-latency DASH video streaming on Kubernetes and WebRTC SVC simulcast via Janus", "Managed lab infrastructure: Ansible-automated servers, 100G NIC testbeds (Intel E810, Netronome), DPDK", "Administered AWS accounts, PartDB inventory system, and the group website" ] }, { "id": 3, "role": "Student Mentor", "company": "Universität Duisburg-Essen", "period": "2021 – 2022", "type": "Volunteer", "description": "Introduced groups of ~20 freshmen to their new academic environment each semester, providing organizational and technical guidance throughout their first year.", "highlights": [ "Guided new students through academic orientation each semester", "Provided technical and organizational support throughout the first year" ] }, { "id": 4, "role": "Software Engineer", "company": "gefeba Engineering GmbH", "period": "2018 – 2020", "type": "Part-time", "description": "Worked on the company's main product — a frame-based data exchange system for monitoring industrial machinery — and developed a real-time log visualization application.", "highlights": [ "Developed features for a frame-based industrial data exchange system", "Built a real-time log visualization application for industrial machinery", "Stack: C#, Angular, Bootstrap, Entity Framework" ] }, { "id": 5, "role": "Student Council Member", "company": "Universität Duisburg-Essen", "period": "2016 – 2019", "type": "Volunteer", "description": "Participated in faculty committees and organized social events. Managed the faculty's IT infrastructure and provided support to fellow students.", "highlights": [ "Managed faculty IT infrastructure (Linux, Networking, LaTeX)", "Organized social events and participated in faculty committees", "Provided subject-specific and organizational support to fellow students" ] }, { "id": 6, "role": "Software Engineer", "company": "gefeba Engineering GmbH", "period": "2013 – 2015", "type": "Part-time", "description": "Joined after a school internship. Worked on internal ERP projects, designed a mail traffic management tool, and contributed to master data management tooling.", "highlights": [ "Developed internal ERP project features", "Designed a tool for managing project-related mail traffic", "Contributed to internal master data management tooling", "Stack: C#, HTML, CSS, JavaScript" ] } ], "skills": { "Container & Orchestration": [ "Kubernetes", "Docker", "Helm", "ArgoCD" ], "CI/CD": [ "Bitbucket Pipelines", "Git" ], "Cloud": [ "Azure", "Azure AKS", "Azure App Gateway", "Azure Entra ID" ], "Infrastructure as Code": [ "Ansible" ], "Observability": [ "ELK Stack", "Checkmk", "UptimeRobot" ], "Databases": [ "PostgreSQL", "MongoDB", "CouchDB" ], "Programming": [ "Rust", "Python", "Bash", "P4" ], "Research": [ "Intel Tofino", "BMv2", "DPDK" ] }, "education": [ { "id": 1, "degree": "B.Sc. Systems Engineering", "institution": "Universität Duisburg-Essen", "period": "2015 – present", "status": "Bachelor thesis ongoing" } ], "projects": [ { "id": 1, "name": "Ethereum Smart Contract Fuzzer", "description": "A fuzzer for Ethereum smart contracts built as part of the bachelor thesis project.", "url": "#", "tech": [ "Rust" ] }, { "id": 2, "name": "Homelab", "description": "Ansible-managed homelab running on Debian Linux with Raspberry Pi, Mikrotik networking, Pihole, and self-hosted services.", "url": "https://git.tudattr.dev/tudattr/ansible", "tech": [ "Ansible", "Kubernetes", "Debian Linux" ] }, { "id": 3, "name": ".dotfiles", "description": "Configuration files for daily-use tools providing a reproducible baseline for any personal ArchLinux system, including NeoVim (LazyVim), Zellij, and k9s.", "url": "https://github.com/TuDatTr/dotfiles", "tech": [ "Zsh", "NeoVim", "Zellij", "ArchLinux" ] }, { "id": 4, "name": "tudattr.dev", "description": "Full-stack WebAssembly personal website built with the Rust-based Dioxus framework and Tailwind CSS.", "url": "https://www.tudattr.dev", "tech": [ "Rust", "Dioxus", "Tailwind CSS", "WebAssembly" ] }, { "id": 5, "name": "mtg-builder", "description": "CLI Magic: The Gathering (Commander/EDH) deck-builder and collection manager using the Scryfall API, with exponential backoff retry logic.", "url": "https://git.tudattr.dev/tudattr/mtg-builder", "tech": [ "Rust" ] } ] }) }); console.log('Initialized database with default CV data'); } console.log('Database initialized'); } export async function closeDB() { if (db) { await db.destroy(); db = null; } }