Files
kilo-cv/backend/db/init.js
Tuan-Dat Tran e765551709
Some checks failed
Release / Release (push) Has been cancelled
Release / Build & Push Docker Image (push) Has been cancelled
feat: add sync-profile script to populate default CV from persons repo
2026-07-08 00:27:56 +02:00

242 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}
}