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.