Files
kilo-cv/backend/db/init.js
Tuan-Dat Tran fb601c6374
Some checks failed
Stale Issues / stale (push) Has been cancelled
Nightly Build / Build Nightly Image (push) Has been cancelled
Release / Release (push) Has been cancelled
Release / Build & Push Docker Image (push) Has been cancelled
chore: de-emphasize research background
2026-07-08 00:40:51 +02:00

225 lines
12 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 production SaaS platforms on Azure AKS, with a strong background in Linux, automation, and infrastructure engineering.",
"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": "University research group role covering infrastructure management, containerized systems, and networking experiments.",
"highlights": [
"Managed lab infrastructure: Ansible-automated servers, AWS accounts, and inventory systems",
"Built and operated Dockerized and Kubernetes-based experiment environments",
"Co-authored a peer-reviewed publication at IEEE LCN 2023"
]
},
{
"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"
]
},
"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"
]
}
]
})
});
console.log('Initialized database with default CV data');
}
console.log('Database initialized');
}
export async function closeDB() {
if (db) {
await db.destroy();
db = null;
}
}