---
title: "System architecture"
url: https://phatdev.net/en/docs/phatdev-portfolio/kien-truc
lang: en
updated: 2026-10-20
alternate:
  vi: https://phatdev.net/docs/phatdev-portfolio/kien-truc
markdown: https://phatdev.net/en/docs/phatdev-portfolio/kien-truc.md
---

# System architecture

Part of the doc set: [phatdev.net](https://phatdev.net/en/docs/phatdev-portfolio.md)

> Next.js 14, MySQL, a custom CMS and an update server.

## Components
| Component | Technology | Role |
|---|---|---|
| Web application | Next.js 14 (App Router), TypeScript, Tailwind | Portfolio, project pages, documentation, the SL Migrations landing page |
| Data | MySQL | Profile, projects, skills, contacts, documentation, licenses |
| Runtime | PM2 behind Nginx | A single process, with controlled page caching |
| Update server | Route `/api/updates/<slug>` | Publishes new theme / plugin releases by license |

## Principles
- The application's database account can only read and write data and cannot change the table structure.
- Fonts and images are self-hosted; the CSP blocks external sources.
- Both languages are rendered on the server, so content display does not depend on JavaScript.
