MCP for AI agents
A Model Context Protocol endpoint at /api/mcp lets AI read the profile and projects and search plugin docs; read-only and rate-limited.
A bilingual Next.js 14 portfolio with a custom MySQL-backed CMS, plugin documentation, a plugin update server and an MCP endpoint that lets AI agents query projects and docs.
Live in production


A Model Context Protocol endpoint at /api/mcp lets AI read the profile and projects and search plugin docs; read-only and rate-limited.
Server rendering with canonical and hreflang per page, an auto-generated sitemap, and Person, CreativeWork and TechArticle structured data.
Profile, projects, skills, contacts and plugin docs managed on MySQL, with no third-party CMS.
Ships updates for in-house plugins and themes with licensing and download stats.
Follows the device setting; project images switch by language and theme, with 4K originals in a lightbox.










Click an image to enlarge, use the arrow keys to browse.
One place that presents skills and products while also serving the plugins: documentation, updates and licensing. Fully self-owned code, no prebuilt template.
Next.js 14 (App Router) under PM2 behind Nginx; data in MySQL through an account limited to reading and writing rows, with no schema privileges.
A custom admin for profile, projects, galleries, skills, contacts and plugin docs, with JWT sessions and login rate limiting.
Every plugin has documentation and a changelog; the update server ships new releases to the sites that use them.
Light and dark modes that follow the device, self-hosted fonts with full Vietnamese coverage, and project images that switch by language and theme.
| Criterion | phatdev.net | Framer / WordPress template | Linktree |
|---|---|---|---|
| Owns its source code | ~ | ||
| Custom MySQL CMS | |||
| Server-rendered bilingual SEO | ~ | ||
| Built-in plugin docs | |||
| MCP for AI agents |
Source code is not public, all rights reserved. The project does not declare any license in its code (no LICENSE file and no license field).
The screenshots on this page were taken by me from the running version of the project.
See the License and credits page →
Swipe sideways to see all columns.
| Name | License | Version | Type | Source |
|---|---|---|---|---|
| @types/bcryptjs | MIT | 2.4.6 | Library (TypeScript types) | github.com/DefinitelyTyped/DefinitelyTyped |
| @types/node | MIT | 20.16.10 | Library (TypeScript types) | github.com/DefinitelyTyped/DefinitelyTyped |
| @types/nodemailer | MIT | 6.4.16 | Library (TypeScript types) | github.com/DefinitelyTyped/DefinitelyTyped |
| @types/qrcode | MIT | 1.5.6 | Library (TypeScript types) | github.com/DefinitelyTyped/DefinitelyTyped |
| @types/react | MIT | 18.3.11 | Library (TypeScript types) | github.com/DefinitelyTyped/DefinitelyTyped |
| @types/react-dom | MIT | 18.3.0 | Library (TypeScript types) | github.com/DefinitelyTyped/DefinitelyTyped |
| bcryptjs | MIT | 2.4.3 | Library | github.com/dcodeIO/bcrypt.js |
| dompurify | (MPL-2.0 OR Apache-2.0) | 3.4.3 | Library | github.com/cure53/DOMPurify |
| framer-motion | MIT | 11.11.0 | Library | github.com/framer/motion |
| isomorphic-dompurify | MIT | 3.13.0 | Library | github.com/kkomelin/isomorphic-dompurify |
| jose | MIT | 5.9.4 | Library | github.com/panva/jose |
| marked | MIT | 18.0.3 | Library | github.com/markedjs/marked |
| mysql2 | MIT | 3.11.3 | Library | github.com/sidorares/node-mysql2 |
| next | MIT | 14.2.35 | Library | github.com/vercel/next.js |
| nodemailer | MIT-0 | 8.0.5 | Library | github.com/nodemailer/nodemailer |
| qrcode | MIT | 1.5.4 | Library | github.com/soldair/node-qrcode |
| react | MIT | 18.3.1 | Library | github.com/facebook/react |
| react-dom | MIT | 18.3.1 | Library | github.com/facebook/react |
| sharp | Apache-2.0 | 0.35.5 | Library | github.com/lovell/sharp |
| zod | MIT | 3.23.8 | Library | github.com/colinhacks/zod |
| autoprefixer | MIT | 10.4.20 | Library (development only) | github.com/postcss/autoprefixer |
| jsdom | MIT | 29.0.2 | Library (development only) | github.com/jsdom/jsdom |
| playwright-core | Apache-2.0 | 1.48.1 | Library (development only) | github.com/microsoft/playwright |
| postcss | MIT | 8.4.47 | Library (development only) | github.com/postcss/postcss |
| tailwindcss | MIT | 3.4.13 | Library (development only) | github.com/tailwindlabs/tailwindcss |
| typescript | Apache-2.0 | 5.6.2 | Library (development only) | github.com/microsoft/TypeScript |
| Inter | OFL-1.1 | - | Font (admin area) | rsms.me/inter |
| JetBrains Mono | OFL-1.1 | - | Font (public site) | jetbrains.com/lp/mono |
| Space Grotesk | OFL-1.1 | - | Font (public site) | fonts.google.com/specimen/Space+Grotesk |
| Font Awesome FreeOnly the SVG paths of a few icons are used; the CSS and font are not loaded. | CC-BY-4.0 AND OFL-1.1 AND MIT | 6.7.2 | Icon (public site) | fontawesome.com/license/free |
| Font Awesome FreeAdmin area. | CC-BY-4.0 AND OFL-1.1 AND MIT | 6.5.2 | Icon (admin area) | fontawesome.com/license/free |
| Ảnh minh hoạ trong bài blog (36)AI-generated images; they do not show real people. | Created with OpenAI's image model through ChatGPT, under OpenAI's terms of use | - | Image | - |
| Real-ESRGAN (mô hình realesrgan-x4plus)Upscales blog images to 4K. | BSD-3-Clause | - | Tool (build tool) | github.com/xinntao/Real-ESRGAN |
| Real-ESRGAN-ncnn-vulkan (chương trình chạy mô hình) | MIT | - | Tool (build tool) | github.com/xinntao/Real-ESRGAN-ncnn-vulkan |
Credit: Font Awesome Free by @fontawesome, https://fontawesome.com. Icons: CC BY 4.0, fonts: SIL OFL 1.1, code: MIT. Copyright Fonticons, Inc.





















