From 88b914a3e5ba01a72ef43e3b1bdc2dce7bc3f17e Mon Sep 17 00:00:00 2001 From: Tuan-Dat Tran Date: Wed, 1 Jul 2026 00:53:38 +0200 Subject: [PATCH] feat: populate CV with real data and fix Docker build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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) --- Dockerfile | 2 +- backend/db/init.js | 156 +++++++++++++++++++++++++++++++++++++++++--- src/lib/cv.json | 158 +++++++++++++++++++++++++++++++++------------ 3 files changed, 265 insertions(+), 51 deletions(-) diff --git a/Dockerfile b/Dockerfile index 39a7147..68e5d45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM node:25-alpine as build WORKDIR /app COPY package*.json ./ -RUN npm ci +RUN npm install --legacy-peer-deps --ignore-scripts COPY . . RUN npm run build diff --git a/backend/db/init.js b/backend/db/init.js index 5c355e7..313848a 100644 --- a/backend/db/init.js +++ b/backend/db/init.js @@ -26,17 +26,153 @@ export async function initDB() { data: JSON.stringify({ personal: { name: "Tuan-Dat Tran", - title: "Junior DevOps Engineer", - intro: "Passionierter DevOps Engineer mit Fokus auf Cloud-Infrastruktur.", - email: "tuan-dat.tran@example.com", - github: "https://github.com/tuan-dat-tran", - linkedin: "https://linkedin.com/in/tuan-dat-tran", - location: "Deutschland" + title: "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: [], - skills: {}, - education: [], - projects: [] + experience: [ + { + id: 1, + 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'); diff --git a/src/lib/cv.json b/src/lib/cv.json index 701089b..11a36b6 100644 --- a/src/lib/cv.json +++ b/src/lib/cv.json @@ -1,73 +1,151 @@ { "personal": { "name": "Tuan-Dat Tran", - "title": "Junior DevOps Engineer", - "intro": "Passionierter DevOps Engineer mit Fokus auf Cloud-Infrastruktur, Container-Orchestrierung und automatisierte Deployment-Pipelines.", - "email": "tuan-dat.tran@example.com", - "github": "https://github.com/tuan-dat-tran", - "linkedin": "https://linkedin.com/in/tuan-dat-tran", - "location": "Deutschland" + "title": "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": "Unternehmen", - "period": "Seit 2025", - "type": "Vollzeit", - "description": "Verantwortlich für CI/CD Pipelines, Container-Orchestrierung und Cloud-Infrastruktur auf Azure.", + "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": [ - "Automatisierte Deployments mit Jenkins und Bitbucket Pipelines", - "Kubernetes Cluster Management mit Helm und ArgoCD", - "Infrastructure as Code mit Azure Resource Manager" + "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": "Software Entwickler", - "company": "Verschiedene Unternehmen", - "period": "2021 - 2025", - "type": "Teilzeit / Werkstudent / SHK", - "description": "Entwicklung und Maintenance von Softwarelösungen in verschiedenen Rollen.", + "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": [ - "Backend-Entwicklung mit Python", - "Linux System Administration", - "Git Version Control und Release Engineering" + "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": ["Docker", "Kubernetes", "Helm"], - "CI/CD & GitOps": ["Jenkins", "Bitbucket", "ArgoCD", "Git"], - "Cloud": ["Azure"], - "Infrastructure as Code": ["Azure Resource Manager"], - "Release Engineering": ["Release Engineering"], - "Operating Systems": ["Linux Administration"], - "Programming": ["Python", "Bash", "Rust"] + "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": "Bachelor Informatik", - "institution": "Universität", - "period": "Laufend", - "status": "Bachelorarbeit offen" + "degree": "B.Sc. Systems Engineering", + "institution": "Universität Duisburg-Essen", + "period": "2015 – present", + "status": "Bachelor thesis ongoing" } ], "projects": [ { "id": 1, - "name": "Projekt 1", - "description": "Beschreibung folgt", + "name": "Ethereum Smart Contract Fuzzer", + "description": "A fuzzer for Ethereum smart contracts built as part of the bachelor thesis project.", "url": "#", - "tech": ["Docker", "Kubernetes", "ArgoCD"] + "tech": ["Rust"] }, { "id": 2, - "name": "Projekt 2", - "description": "Beschreibung folgt", - "url": "#", - "tech": ["Azure", "ARM", "Jenkins"] + "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"] } ] }