feat: populate CV with real data and fix Docker build
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

- Replace placeholder CV data with real profile across cv.json and backend seed
- Fix Docker build: npm ci → npm install --legacy-peer-deps --ignore-scripts
  (works around stale lockfile peer dep conflict and iltorb native addon failure on Node 25)
This commit is contained in:
Tuan-Dat Tran
2026-07-01 00:53:38 +02:00
parent 649cf140fa
commit 88b914a3e5
3 changed files with 265 additions and 51 deletions

View File

@@ -3,7 +3,7 @@ FROM node:25-alpine as build
WORKDIR /app WORKDIR /app
COPY package*.json ./ COPY package*.json ./
RUN npm ci RUN npm install --legacy-peer-deps --ignore-scripts
COPY . . COPY . .
RUN npm run build RUN npm run build

View File

@@ -26,17 +26,153 @@ export async function initDB() {
data: JSON.stringify({ data: JSON.stringify({
personal: { personal: {
name: "Tuan-Dat Tran", name: "Tuan-Dat Tran",
title: "Junior DevOps Engineer", title: "DevOps Engineer",
intro: "Passionierter DevOps Engineer mit Fokus auf Cloud-Infrastruktur.", 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@example.com", email: "tuan-dat.tran@dextradata.com",
github: "https://github.com/tuan-dat-tran", github: "https://github.com/TuDatTr",
linkedin: "https://linkedin.com/in/tuan-dat-tran", linkedin: "https://www.linkedin.com/in/tudattr/",
location: "Deutschland" location: "Essen, Germany"
}, },
experience: [], experience: [
skills: {}, {
education: [], id: 1,
projects: [] role: "DevOps Engineer",
company: "DextraData GmbH",
period: "2025 present",
type: "Full-time",
description: "Primary owner of the Logipad aviation SaaS platform and secondary owner of the GRASP GRC platform, both running on Azure AKS and Rancher-managed Kubernetes clusters.",
highlights: [
"Drives GitOps adoption with ArgoCD across production Kubernetes clusters",
"Manages CI/CD pipelines with Jenkins and Bitbucket Pipelines",
"Leads incident response for production outages",
"Implemented Azure Container Registry mirroring to resolve Docker Hub rate limits",
"Built internal AI tooling with LiteLLM and Ollama",
"Promoted from Junior DevOps Engineer in January 2026"
]
},
{
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 paper published at 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",
"Managed lab infrastructure: Ansible-automated servers, 100G NIC testbeds (Intel E810, Netronome)",
"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 at the start of each semester, providing organizational and technical guidance throughout their first year in the computer science programme.",
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. Main responsibilities included managing the faculty's IT infrastructure and providing support to fellow students.",
highlights: [
"Managed faculty IT infrastructure (Linux, Networking)",
"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 the internal master data management tool.",
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"],
"CI/CD & GitOps": ["ArgoCD", "Jenkins", "Bitbucket Pipelines", "Git"],
"Cloud": ["Azure", "Azure AKS"],
"Infrastructure as Code": ["Ansible"],
"Observability": ["ELK Stack"],
"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 serving as a platform for learning and experimenting with new technologies through automated provisioning and configuration management.",
url: "https://git.tudattr.dev",
tech: ["Ansible", "Kubernetes"]
},
{
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 setups.",
url: "https://github.com/TuDatTr",
tech: ["Shell", "NeoVim", "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"]
},
{
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('Initialized database with default CV data');

View File

@@ -1,73 +1,151 @@
{ {
"personal": { "personal": {
"name": "Tuan-Dat Tran", "name": "Tuan-Dat Tran",
"title": "Junior DevOps Engineer", "title": "DevOps Engineer",
"intro": "Passionierter DevOps Engineer mit Fokus auf Cloud-Infrastruktur, Container-Orchestrierung und automatisierte Deployment-Pipelines.", "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@example.com", "email": "tuan-dat.tran@dextradata.com",
"github": "https://github.com/tuan-dat-tran", "github": "https://github.com/TuDatTr",
"linkedin": "https://linkedin.com/in/tuan-dat-tran", "linkedin": "https://www.linkedin.com/in/tudattr/",
"location": "Deutschland" "location": "Essen, Germany"
}, },
"experience": [ "experience": [
{ {
"id": 1, "id": 1,
"role": "Junior DevOps Engineer", "role": "DevOps Engineer",
"company": "Unternehmen", "company": "DextraData GmbH",
"period": "Seit 2025", "period": "2025 present",
"type": "Vollzeit", "type": "Full-time",
"description": "Verantwortlich für CI/CD Pipelines, Container-Orchestrierung und Cloud-Infrastruktur auf Azure.", "description": "Primary owner of the Logipad aviation SaaS platform and secondary owner of the GRASP GRC platform, both running on Azure AKS and Rancher-managed Kubernetes clusters.",
"highlights": [ "highlights": [
"Automatisierte Deployments mit Jenkins und Bitbucket Pipelines", "Drives GitOps adoption with ArgoCD across production Kubernetes clusters",
"Kubernetes Cluster Management mit Helm und ArgoCD", "Manages CI/CD pipelines with Jenkins and Bitbucket Pipelines",
"Infrastructure as Code mit Azure Resource Manager" "Leads incident response for production outages",
"Implemented Azure Container Registry mirroring to resolve Docker Hub rate limits",
"Built internal AI tooling with LiteLLM and Ollama",
"Promoted from Junior DevOps Engineer in January 2026"
] ]
}, },
{ {
"id": 2, "id": 2,
"role": "Software Entwickler", "role": "Research Assistant",
"company": "Verschiedene Unternehmen", "company": "NCS Group, Universität Duisburg-Essen",
"period": "2021 - 2025", "period": "2021 2024",
"type": "Teilzeit / Werkstudent / SHK", "type": "Part-time",
"description": "Entwicklung und Maintenance von Softwarelösungen in verschiedenen Rollen.", "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": [ "highlights": [
"Backend-Entwicklung mit Python", "Co-authored RPM paper published at IEEE LCN 2023",
"Linux System Administration", "Built a Dockerized federated LSTM system with custom client-selection strategies for 5G network research",
"Git Version Control und Release Engineering" "Implemented low-latency DASH video streaming on Kubernetes and WebRTC SVC simulcast",
"Managed lab infrastructure: Ansible-automated servers, 100G NIC testbeds (Intel E810, Netronome)",
"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 at the start of each semester, providing organizational and technical guidance throughout their first year in the computer science programme.",
"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. Main responsibilities included managing the faculty's IT infrastructure and providing support to fellow students.",
"highlights": [
"Managed faculty IT infrastructure (Linux, Networking)",
"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 the internal master data management tool.",
"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": { "skills": {
"Container & Orchestration": ["Docker", "Kubernetes", "Helm"], "Container & Orchestration": ["Kubernetes", "Docker", "Helm"],
"CI/CD & GitOps": ["Jenkins", "Bitbucket", "ArgoCD", "Git"], "CI/CD & GitOps": ["ArgoCD", "Jenkins", "Bitbucket Pipelines", "Git"],
"Cloud": ["Azure"], "Cloud": ["Azure", "Azure AKS"],
"Infrastructure as Code": ["Azure Resource Manager"], "Infrastructure as Code": ["Ansible"],
"Release Engineering": ["Release Engineering"], "Observability": ["ELK Stack"],
"Operating Systems": ["Linux Administration"], "Programming": ["Rust", "Python", "Bash", "P4"],
"Programming": ["Python", "Bash", "Rust"] "Research": ["Intel Tofino", "BMv2", "DPDK"]
}, },
"education": [ "education": [
{ {
"id": 1, "id": 1,
"degree": "Bachelor Informatik", "degree": "B.Sc. Systems Engineering",
"institution": "Universität", "institution": "Universität Duisburg-Essen",
"period": "Laufend", "period": "2015 present",
"status": "Bachelorarbeit offen" "status": "Bachelor thesis ongoing"
} }
], ],
"projects": [ "projects": [
{ {
"id": 1, "id": 1,
"name": "Projekt 1", "name": "Ethereum Smart Contract Fuzzer",
"description": "Beschreibung folgt", "description": "A fuzzer for Ethereum smart contracts built as part of the bachelor thesis project.",
"url": "#", "url": "#",
"tech": ["Docker", "Kubernetes", "ArgoCD"] "tech": ["Rust"]
}, },
{ {
"id": 2, "id": 2,
"name": "Projekt 2", "name": "Homelab",
"description": "Beschreibung folgt", "description": "Ansible-managed homelab serving as a platform for learning and experimenting with new technologies through automated provisioning and configuration management.",
"url": "#", "url": "https://git.tudattr.dev",
"tech": ["Azure", "ARM", "Jenkins"] "tech": ["Ansible", "Kubernetes"]
},
{
"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 setups.",
"url": "https://github.com/TuDatTr",
"tech": ["Shell", "NeoVim", "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"]
},
{
"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"]
} }
] ]
} }