Nguyen Chi Trung

WELCOME

Nguyen Chi Trung

Software Engineer

Start

Walkthroughs

Recent

about.md

Nguyen Chi Trung

Nguyen Chi Trung

Software Engineer

I like systems that reveal themselves slowly: data flows, failure modes, and the small decisions that explain the whole.

What I work on

I build backend services, AI-assisted products, and the interfaces that make them usable. My recent work centers on retrieval-augmented answers, role-aware web applications, and the testing and delivery work that keeps them dependable.

  • AI and retrieval: grounded answers with source citations, document ingestion, vector search, and model integration.
  • Backend systems: API design, authentication and authorization, relational data, background work, and testable architecture.
  • Product surfaces: React and Next.js interfaces that stay calm when the system underneath is complicated.
  • Delivery: automated tests, CI/CD, code quality checks, and documentation that another engineer can actually use.

How I work

I start by tracing the data end to end. Then I look for the boundary where behavior becomes surprising. I prefer small, verified steps over confident guesses, and I treat tests and documentation as part of the interface rather than cleanup.

At FPT Software, I’m an AI Engineer Intern leading a seven-person team on a syllabus-grounded Q&A agent. The work spans a FastAPI backend, a Next.js frontend, retrieval over course material, and the CI and test coverage around both repos.

The loop

01 · TraceFollow the dataInputs, storage, transformations, and the output someone sees.
02 · BoundFind the seamThe boundary where behavior becomes surprising.
03 · VerifyTake a small stepTest the claim before widening the change.
04 · ExplainLeave a trailTests, notes, and interfaces another engineer can use.
The useful question is usually one layer deeper than the one on the screen.

Off the clock

Outside work, I take systems apart for fun: binaries, protocols, and the small decisions that explain the whole. It rewards patience and careful observation, but it is a personal interest rather than the job I am building toward.

experience.md

Experience

A timeline from school to building AI-assisted products, with the through-line being systems work: understand the whole, then improve the part that matters.

Trajectory

2005 — 2023FoundationsSchool, first code
2023 — 2026UniversityInformation technology, team projects
2025 — 2026Product workFull-stack builds, testing, CI
2026 — nowAI + leadershipTeam lead, RAG, delivery

Current role

AI Engineer Intern · FPT Software

I lead a seven-person team building a syllabus-grounded Q&A agent for course material. The product combines a FastAPI backend, a Next.js frontend, retrieval over documents, and source-cited answers.

My work covers architecture and integration, backend behavior, role-aware access, testing, and delivery. The team ships in short cycles with a Jira board, shared API contracts, and automated checks on both repositories.

TeamLead / 7, across backend, frontend, testing, and delivery
ProductSyllabus-grounded Q&A with source citations
BackendFastAPI modular monolith, PostgreSQL, Qdrant, Gemini, Alembic
FrontendNext.js App Router, React 19, TypeScript, Tailwind CSS, shadcn/ui
Qualitypytest + httpx, Vitest, linting, Docker Compose, CI
ScopeArchitecture, integration, role-aware access, test coverage, release flow

Focus map

Where I am strongest, 2026Qualitative self-assessment, not a benchmark
Backend & APIsLeading
AI & retrievalBuilding
Product UIBuilding
Testing & CIBuilding

Timeline

06.2026 — now

AI Engineer Intern · FPT Software

Team lead / 7. Building the syllabus Q&A product and the delivery process around it.

05.2026 — now

Independent Luau scripting

Commissions for Roblox projects: menus, automation, and reverse-engineered game systems.

09.2023 — 06.2026

X University

Undergraduate, degree awaiting conferral. Information technology foundations and team software projects.

2020 — 2023

Thien Ho Duong High School

Grades 10—12. The point where code became the thing I wanted to keep doing.

2016 — 2020

Nguyen Trai Secondary School

Grades 6—9. First exposure to how machines and systems fit together.

2011 — 2016

Tinh Thoi Primary School

Grades 1—5.

2005

Origin · Vietnam

Born in Vietnam.

Alongside

Independent Luau scripting

I build menus, automation, and small tools for Roblox projects. The work is often reverse-engineering adjacent: read an unfamiliar system, find its seams, then write the smallest script that changes behavior cleanly.

Education

X University

Information technology foundations, software engineering practice, and a long run of team projects. The degree is awaiting conferral; the placeholder school name is intentional.

projects.md

Projects

Four systems that show the range: a private AI product, two public .NET applications, and the frontend that makes the agent usable.

Project map

AI product · privateIn progress

Course Q&A

A syllabus-grounded assistant with retrieval, role-aware access, and sources beside every answer.

FastAPIQdrantGeminiNext.js 16
Team workspace · publicDone

devflow-platform

A project management system built around sprints, boards, dependencies, realtime updates, and delivery signals.

.NET 8CQRSReact 19SignalR
Recycling platform · publicDone

KCPM

A four-role platform for waste reports and collection, with the test and CI process treated as part of the product.

.NET 8Next.js 14MySQLPlaywright
Range · smaller buildsArchive

Other work

Earlier experiments across computer vision, 3D interfaces, fitness, and networking keep the range honest.

net-twinSmart Nurseoffice3dNUTRI-FIT

At a glance

ProjectSurfaceCore stackVisibilityStatus
Course Q&A backendAPI, RAGPython, FastAPI, Qdrant, GeminiPrivateIn progress
Course Q&A frontendWeb appNext.js 16, React 19, TypeScriptPrivateIn progress
devflow-platformWeb app.NET 8, React 19, PostgreSQLPublicDone
KCPMWeb app.NET 8, Next.js 14, MySQLPublicDone

Course Q&A

A syllabus-grounded assistant that answers course questions from supplied material and keeps citations beside the answer. The system is split into two repositories: a FastAPI backend and a Next.js frontend. Both are private; access can be requested by email.

  • — RAG pipeline, Gemini, Qdrant, PostgreSQL, role-aware API.
  • — App Router shell, chat surface, citations, shared UI primitives.

devflow-platform

A Jira/Linear-inspired project management platform built as a long-running architecture and DevOps exercise. It covers workspaces, projects, sprints, Kanban boards, dependencies, time tracking, realtime updates, GitHub integration, analytics, and an AI planning agent.

or visit the live app.

KCPM

A waste-recycling platform built for a software verification course: citizen reports, collector jobs, enterprise operations, and admin review. The project is as much about test discipline and delivery as it is about the product surface.

or visit kcpm.vercel.app.

Other work

Earlier and smaller builds include net-twin, Smart Nurse, office3d, NUTRI-FIT, and computer-vision experiments. They are not the main story, but they explain the range.

Project index

projects.json4 systems · 2 live
{
  "primary": [
    { "name": "Course Q&A", "repos": 2, "visibility": "private" },
    { "name": "devflow-platform", "repos": 1, "visibility": "public" },
    { "name": "KCPM", "repos": 1, "visibility": "public" }
  ],
  "live": ["devflow-platform", "KCPM"],
  "focus": ["RAG", "architecture", "testing", "delivery"]
}

course-qa-agent-be.md

Course Q&A — Backend

A FastAPI service for a syllabus-grounded course assistant: ingest documents, retrieve relevant passages, and answer with citations instead of guesses.

Role

Team lead on a seven-person team. I worked across architecture, backend behavior, role-aware access, integration, testing, and delivery.

What the service does

  • Authenticates students, trainers, and admins, then applies role-aware access to course material.
  • Ingests course documents, splits them into retrievable chunks, and stores embeddings in Qdrant.
  • Retrieves the most relevant context for a question and asks Gemini for an answer grounded in that material.
  • Returns sources alongside the answer so the result can be checked, not just trusted.
  • Exposes health, admin configuration, and test-connection endpoints for deployment checks.

Retrieval path

01 · UploadDocument inCourse material enters the service.
02 · ParseRead the textPyMuPDF and MarkItDown handle the source shape.
03 · ChunkSplit cleanlyPassages stay small enough to retrieve.
04 · EmbedStore vectorsLangChain and Gemini produce the embedding; Qdrant holds it.
05 · RetrieveFind contextOnly the most relevant passages reach the model.
06 · AnswerCite sourcesThe response carries the evidence beside it.

Stack

LanguagePython 3.12
APIFastAPI, pydantic-settings, Uvicorn
DataPostgreSQL 16, SQLAlchemy, psycopg, Alembic
RetrievalQdrant, LangChain, Gemini
RuntimeDocker Compose, uv
Qualitypytest, httpx, ruff

Engineering notes

The backend is a layered modular monolith: entrypoint and routers at the edge, schemas at the contract, services for business logic, and configuration kept out of code. Each epic owns a module, which keeps a large course project navigable.

Schema changes belong to Alembic. The container runs migrations on startup and fails clearly if it cannot, rather than silently creating tables. Local infrastructure uses the same ports as Docker so the two modes never fight.

course-qa-agent-fe.md

Course Q&A — Frontend

The Next.js application around the course assistant: a role-aware shell, a focused conversation surface, and citations that stay visible while reading an answer.

Role

Team lead on a seven-person team. I shaped the frontend foundation, the role-aware navigation, the chat experience, and the shared component layer used across the app.

What the app does

  • Signs users in and routes students, trainers, and admins to the areas they are allowed to see.
  • Provides a chat surface where a question, answer, and source citations stay in one readable view.
  • Keeps course and document context close to the conversation instead of hiding it behind extra screens.
  • Uses a shared set of UI primitives so new pages do not drift in spacing, color, or behavior.
  • Includes admin settings for model and email configuration, plus a component styleguide for the team.

Request flow

01 · Sign inIdentityThe backend establishes who the user is.
02 · RoleRoute gateNavigation declares which roles may enter.
03 · ShellContext staysCourse and document context remain close to the work.
04 · ChatAskA question becomes a grounded answer request.
05 · CiteCheckSources stay visible while the answer is read.

Interface layers

Primitives
buttonsinputsdialogsmenus
Patterns
navigationrole gatesempty statesloading
Surfaces
chatadmin settingsstyleguide

Stack

FrameworkNext.js 16 App Router
UIReact 19, TypeScript, Tailwind CSS v4
Componentsshadcn/ui primitives, Radix UI
Contentreact-markdown, remark-gfm, syntax-friendly rendering
QualityVitest, ESLint, Next build
RuntimeDocker standalone image

Engineering notes

Design tokens live in one place so themes and spacing stay consistent. Navigation is configuration-driven: a route declares which roles may see it, and the shell handles the rest.

The client-side auth guard is treated as UX, not security. The backend still enforces every role and permission. That separation keeps the frontend helpful without pretending it is the source of truth.

devflow-platform.md

devflow-platform

A Jira/Linear-inspired project management platform for software teams, built as a long-term exercise in architecture, testing, and DevOps rather than a demo.

What it does

Teams can create workspaces, invite members with Owner/Admin/Member roles, manage projects, plan sprints, and move tasks across a Kanban board. The board updates in realtime through SignalR and supports assignee or epic swimlanes.

  • Work management: projects, task keys, sprints, dependencies, blockers, time tracking, labels, and custom fields.
  • Collaboration: comments, watchers, attachments, notifications, activity log, and a searchable knowledge base.
  • Delivery signals: GitHub repository linking, PR tracking, webhooks with a retryable dead-letter queue, and task keys linked from commits.
  • Insight: burndown charts, velocity metrics, and per-member cycle and lead-time reports.
  • AI planning: a provider-agnostic agent that can plan work against project knowledge with self-approval rules.

Architecture

The backend follows Clean Architecture with CQRS and MediatR. Authorization is declarative, using pipeline behavior and workspace/project role checks so access rules do not scatter across handlers.

PostgreSQL stores the domain; Redis handles caching and realtime support; SignalR pushes board changes to connected clients. Authentication uses short-lived JWT access tokens with rotating refresh tokens, plus Google and GitHub OAuth.

Request path

01 · ClientReact 19Vite app with native drag-and-drop and role-aware views.
02 · EdgeAPI + authJWT, rotating refresh tokens, OAuth, and declarative authorization.
03 · HandlersCQRSMediatR keeps commands, queries, and validation separate.
04 · DataPostgreSQL + RedisEF Core owns persistence; Redis handles cache and realtime support.
05 · PushSignalRBoard changes reach connected teammates without a refresh.

Stack

BackendASP.NET Core 8 Web API, C#, Clean Architecture, CQRS + MediatR
DataPostgreSQL, EF Core, Redis
RealtimeSignalR
AuthJWT access + rotating refresh tokens, Google and GitHub OAuth
FrontendReact 19, TypeScript, Vite, Tailwind CSS v4, React Router v7
InteractionNative HTML5 drag-and-drop, no DnD library
QualityxUnit (480 unit tests), integration tests with Testcontainers
DeliveryDocker Compose, GitHub Actions, Serilog, health checks

What I focused on

The interesting problems were boundary problems: keeping a single active sprint per project, enforcing role rules in one place, modeling a dependency graph without making the board unreadable, and making webhook failures inspectable instead of lost.

The project is complete. It is public because the architecture and test suite are part of the point.

KCPM.md

KCPM

A waste-recycling platform that connects citizens, collectors, recycling enterprises, and administrators in one traceable workflow.

Context

Built for the Software Verification course as Team 36. The project was as much about professional test process as product behavior: requirements to Jira tasks, unit and end-to-end tests, API smoke tests, coverage, static analysis, and deployment checks.

My role

Team lead, CI/CD owner, and architect on a five-person team. I was responsible for the auth, collector, enterprise-collector, waste-category, SignalR, and role-based security modules. I also owned the xUnit and E2E coverage, SonarCloud quality gate, and the deployment pipeline.

What the platform does

  • Citizen: create waste reports with GPS, photos, and category, then follow status and earn rewards points.
  • Enterprise: manage collectors, assign collection jobs, and view reports.
  • Collector: receive jobs and update collection status in the field.
  • Admin: manage users, approve enterprises, and handle complaints.

Role flow

01 · CitizenReportGPS, photos, and category create a traceable request.
02 · EnterpriseAssignManage collectors and route the job.
03 · CollectorCollectReceive the job and update status in the field.
04 · AdminReviewApprove enterprises, manage users, handle complaints.

Stack

BackendASP.NET Core 8, C#, Entity Framework Core
FrontendNext.js 14, React, Tailwind CSS
DatabaseMySQL 8 on Aiven
RealtimeSignalR
AuthJWT, BCrypt password hashing, role-based access
Unit testsxUnit + Moq
E2E / APICodeceptJS + Playwright, Postman + Newman
CI/CDGitHub Actions (11 workflows), Allure, SonarCloud
HostingVercel, Render, Aiven

Quality work

The pipeline runs backend tests with coverage, frontend E2E, Postman smoke tests, SonarCloud analysis, and deployment. Allure reports publish to GitHub Pages, and CI results post back to Jira so failures stay visible where the work is planned.

01 · UnitxUnit + MoqBackend behavior and coverage.
02 · E2ECodeceptJSPlaywright journeys through the frontend.
03 · APIPostmanNewman smoke tests against the service.
04 · StaticSonarCloudQuality gate on the changed code.
05 · ReportAllurePublished to GitHub Pages.
06 · DeployShip + logCI results post back to Jira.

skills.md

Skills

The tools I reach for most, and the projects where they actually did something useful.

Toolbelt

  • PostmanAPI testing
  • DockerContainers
  • GitVersion control
  • Claude CodeAgentic CLI
  • Cheat EngineMemory
  • x64dbgDebugging
  • IDADisassembly
  • SpotifyFocus

Capability stack

Languages
C#PythonTypeScriptPHPKotlinSQLLuau
Backend
ASP.NET CoreFastAPILaravelNode.js
Product UI
ReactNext.jsTailwind CSSshadcn/ui
AI and data
GeminiLangChainQdrantPostgreSQLMySQLRedis
Delivery
DockerGitHub ActionsRabbitMQSonarCloudAllure

Languages

C#, Python, TypeScript, PHP, Kotlin, SQL, Luau.

Backend

ASP.NET Core, FastAPI, Laravel, Node.js. API design, authentication and authorization, relational data, background work, and modular monolith structure.

Frontend

React, Next.js, TypeScript, Tailwind CSS, shadcn/ui. App Router, role-aware shells, readable chat surfaces, and shared component systems.

AI and data

Gemini, LangChain, retrieval-augmented generation, Qdrant, PostgreSQL, MySQL, SQLite, Redis. Document ingestion, chunking, vector retrieval, source-grounded answers, and citations.

Infrastructure and practice

Docker, Docker Compose, GitHub Actions, RabbitMQ, SonarCloud, Allure, Jira. Clean Architecture, CQRS + MediatR, automated testing, code review, and Agile / Scrum delivery.

Where it shows up

ProjectStack I used
Course Q&A backendPython, FastAPI, PostgreSQL, Qdrant, Gemini, LangChain, Alembic, Docker
Course Q&A frontendNext.js 16, React 19, TypeScript, Tailwind CSS v4, shadcn/ui
devflow-platform.NET 8, C#, PostgreSQL, EF Core, Redis, SignalR, React 19, xUnit
KCPM.NET 8, EF Core, MySQL, Next.js 14, SignalR, xUnit, Playwright

Approach

Build the whole thing, then trace it back. Tests and documentation are part of the interface, not the cleanup after it.

agent-skills.md

Agent skills library

A browsable index of 2,422 agent skills from the Vie Agentic Skills collection. Filter by specialty or source pack, then open a skill to read its full SKILL.md and follow the original source repository.

2,422skills
10specialties
18source packs

Skills

Loading library…

README.md

This is a workspace

Not a screenshot of an IDE. Everything here is part of the portfolio: open files from the explorer, search the workspace, switch themes, or type in the terminal.

What to open

  • — the path to building AI products.
  • — four systems and the decisions behind them.
  • — a catalog of agent skills with full SKILL.md detail and original sources.
  • — open a channel.

Every content file is Markdown now. The stack details, repository names, and project boundaries are written out instead of hidden in sample code.

Shortcuts

Command paletteCtrl Shift P
Quick openCtrl P
Toggle sidebarCtrl B
Toggle terminalCtrl `
Toggle chatCtrl Alt B
Close overlaysEsc

Preferences

Settings

Preferences for this workspace.

Appearance

Controls the workbench color theme.

Editor

Controls the font size in pixels for code.

Controls the font family used in code views.

Controls when unsaved edits are stored.

Folders with a single child are shown compactly.

Terminal

Controls the font size of terminal output.

No editors open

Choose a file from the Explorer, or search the workspace.

VS Code portfolio workspace — static / no build

Type help for commands. Try whoami, projects, or theme light.