Projects

Production work & real projects — built from scratch, deployed, documented

🏢 Production⚡ Personal🔬 Research🎓 Academic

VShield

⚡ Personal

Digital Defense Ecosystem

Role: Lead Developer (Personal Project)

Multi-repo microservices platform (6 repos) for scam call/SMS blocking, phone & bank account verification, and community reporting. Go + Gin API with JWT, RBAC, Bloom Filter blacklist. iOS (Swift/CallKit), Android (Kotlin), Next.js 15 web dashboard.

GoGinPostgreSQLRedisNext.js 15SwiftKotlinDockerGitHub Actions

Key Features

  • Go + Gin API: JWT auth, RBAC middleware, Bloom Filter O(1) blacklist lookup
  • Multi-repo microservices: vshield-api, vshield-core, vshield-web, vshield-ios, vshield-android
  • iOS: Swift + CallKit real-time call screening & blocking
  • Android: Kotlin + Jetpack Compose + CallScreening API
  • Community reporting pipeline: Pending → Verified → Rejected with anti-abuse rules
  • Phone/bank account verification with community trust score aggregation
  • GitHub Actions CI/CD per repo: test + lint gate before merge
  • PostgreSQL 16 with JSONB + Bloom Filter index; Redis for rate limiting & session
Challenge: Designing a multi-repo Go microservices architecture where a shared vshield-core library is consumed by API, iOS, and Android — keeping cross-platform consistency without duplicating business logic.

CaHeo

🏢 Production

Full-Stack Production Platform — INTRATECH

Role: Backend Developer (Intratech)

Multi-repo full-stack platform built at INTRATECH JSC. Django 5 + DRF backend, Next.js frontend, GitHub Actions CI/CD. Contributed API specs, data dictionary, test cases, and backend features.

Django 5DRFNext.jsPostgreSQLDockerGitHub ActionsScrum

Key Features

  • Django 5 + DRF backend with modular app structure
  • Next.js frontend with SSR/SSG (caheo-frontend repo)
  • GitHub Actions CI/CD pipeline (caheo-cicd repo): test → lint → deploy gates
  • Authored full API specification, data dictionary, and test case documentation
  • Multi-repo Document-First workflow: docs updated before code
  • Scrum workflow: Sprint Planning, Daily Standup, Sprint Review, Retrospective
Challenge: Contributing to an existing multi-repo production codebase at INTRATECH — quickly onboarding to team conventions, Document-First workflow, and GitHub Actions pipelines without disrupting ongoing sprints.

IPO Ready

🏢 Production
Private

Pre-IPO Strategic Analysis Platform — INTRATECH

Role: Backend Developer (Intratech)

Production fintech platform for pre-IPO companies: 50+ endpoints, 14 data models (CapTable, FundingRounds, Shareholders, KPIs). Async CSV/Excel import via Celery — 10,000+ rows. 95% Docker build time reduction.

Django 5DRFPostgreSQLRedisCeleryDockerSwagger

Key Features

  • 50+ REST endpoints: CapTable, FundingRounds, Shareholders, Financials, KPIs, Scenarios
  • JWT authentication: register / login / refresh / profile with RBAC authorization
  • Async CSV/Excel import (pandas + openpyxl): column validation, type checking, duplicate detection
  • Celery background workers processing 10,000+ rows; polling status endpoint for frontend
  • Swagger UI at /docs/ + Postman collection
  • Docker build optimization: 70–80s → 3–5s (95% reduction) via multi-stage layer caching
Challenge: Modeling complex equity dilution math (Cap Table) accurately across multiple funding rounds with fractional ownership, while keeping the async CSV import pipeline resilient to malformed data from non-technical users.

EduHealth360

🔬 Research
Private

School Health & AI Attendance Platform

Role: Lead Developer & Research Lead

Face recognition attendance (ArcFace R50, 512-dim embeddings) + AI health risk scoring. 12-domain PostgreSQL schema with Views, Triggers, Stored Procs. Isolated AI microservice via Docker internal network.

Node.jsTypeScriptPostgreSQLFastAPIInsightFaceDockerAI/ML

Key Features

  • Face attendance: ArcFace R50 512-dim cosine similarity (InsightFace buffalo_l model)
  • 12-domain PostgreSQL schema: core, attendance, finance, health, face, auth, audit, billing…
  • PostgreSQL: Views, Triggers, Stored Procedures for billing & attendance automation
  • AI health risk scoring: Logistic Regression & Random Forest (AUC, F1, Brier evaluated)
  • FastAPI microservice: isolated face recognition via Docker internal network, zero port exposure
  • RBAC middleware (requireRole), rate limiting, CORS whitelist
Challenge: Isolating face recognition into a dedicated FastAPI microservice communicating via Docker internal network — zero external port exposure for security while keeping inference latency under 200ms.

GoFoody

🎓 Academic
Private

Fullstack Food Delivery Platform

Role: Full-Stack Developer

End-to-end food delivery: .NET 8 Clean Architecture (4 layers), Repository Pattern, JWT + RBAC, smart recommendation engine, revenue analytics dashboard, React + Vite frontend.

.NET 8EF CoreSQL ServerReactTypeScriptClean Architecture

Key Features

  • .NET 8 Clean Architecture: Api → Application → Domain → Infrastructure (4 strict layers)
  • EF Core migrations + auto-seed (roles, categories, sample data on first run)
  • JWT auth + RBAC: CUSTOMER / ADMIN / RESTAURANT_OWNER
  • Smart food recommendations: tag-based similarity + "frequently bought together"
  • Revenue dashboard with daily/monthly order statistics
  • React + Vite frontend with TypeScript
Challenge: Implementing Clean Architecture in .NET 8 while keeping the codebase navigable — strict layer separation with Dependency Injection without over-engineering for a single-team academic project.

VietTelco CSDLPT

🎓 Academic
Private

3-Site Distributed Telecom System

Role: Full-Stack Developer

3-site SQL Server horizontal fragmentation by phone prefix (MB/MT/MN). Linked Server cross-site queries, Triggers, global parallel reports via Promise.all. Docker Compose 5 containers.

Node.jsSQL ServerReactDocker ComposeDistributed DB

Key Features

  • 3-site SQL Server horizontal fragmentation by phone prefix (MB: 096, MT: 091, MN: 090)
  • Linked Server cross-site queries: MB → MT → MN
  • Site MN = OCS: TaiKhoan (all-network) + TheCao management
  • Trigger tr_BaoVeGoiCuoc: validates subscriber existence across all sites before GoiCuoc deletion
  • Global revenue report: Promise.all([MB, MT, MN]) parallel queries with COUNT pushdown
  • Docker Compose: 5 containers (3 SQL Server + backend + nginx), auto db-init, 15× retry
Challenge: Designing the distributed schema so TaiKhoan lives only in MN-OCS while each site queries it via Linked Server — avoiding excessive cross-site overhead while preserving data consistency.

UniBrainAI

⚡ Personal

Personalized RAG Study Copilot

Role: Solo Developer

NotebookLM-inspired study app — upload lecture PDFs, RAG chat via Gemini, auto-generate flashcards (SM-2 spaced repetition) and MCQ quizzes.

Next.js 15Gemini APIRAGPDF.jsZustandSM-2 Algorithm

Key Features

  • PDF upload → pdfjs-dist text extraction → 800-char overlapping chunks → Zustand localStorage
  • RAG Chat: keyword scoring → top-5 chunks → Gemini 1.5 Flash prompt injection → source citations
  • Auto Flashcard Generation: Gemini generates structured JSON Q&A pairs
  • SM-2 Spaced Repetition: 6-level rating (0–5), interval multiplied by easeFactor
  • MCQ Quiz: Gemini generates 4-option questions with explanations + live scoring
  • Gemini API key management with connection test; zero backend required
Challenge: Implementing full RAG pipeline entirely client-side with no backend — PDF parsing, chunking, keyword retrieval, and Gemini API calls all in the browser while keeping bundle size acceptable.

Tsen Portfolio

⚡ Personal

This Portfolio Website

Role: Solo Developer

Bilingual (EN/VI) portfolio built with Next.js 15 & React 19. i18n via React Context, Firebase Firestore contact form, animated with Framer Motion.

Next.js 15React 19TypeScriptTailwind CSSFirebaseFramer Motion

Key Features

  • Bilingual EN/VI via React Context (no external i18n library) — 300+ strings
  • localStorage language persistence across sessions
  • Next.js dynamic() lazy imports for all below-fold sections
  • Firebase Firestore contact form (lazy-loaded SDK on submit)
  • next/image priority + AVIF/WebP auto-conversion for avatar
Challenge: Building a production-grade i18n system from scratch using only React Context + a single translations.ts object — simple, zero-dependency, covering all components in both languages.

Download My CV

Choose the version that fits the role you're hiring for

Interested in working together?

I'm actively seeking Backend Developer & Full Stack Developer opportunities. Let's connect!

Get In Touch