[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fygA7tbcaj5xb8LSs6Q4NEkPxjHuda7aOpSnRrkRF7aI":3},{"id":4,"slug":5,"titleFr":6,"titleEn":7,"titleKm":8,"descriptionFr":9,"descriptionEn":10,"descriptionKm":11,"tags":12,"githubUrl":18,"demoUrl":19,"imageUrl":20,"featured":21,"createdAt":22},44,"chetana-dev","chetana.fr — Portfolio dynamique","chetana.fr — Dynamic Portfolio","chetana.fr — ផលប័ត្រថាមវន្ត","## Le projet\n\nCe site est mon portfolio personnel, mais aussi un terrain d'expérimentation technique. Plutôt que d'utiliser un template, j'ai voulu construire quelque chose de A à Z — du schema de base de données au déploiement continu.\n\n## Stack technique\n\n- **Frontend** : Nuxt 4 (Vue 3.5) + TypeScript — pour le SSR, le routing automatique et les composables\n- **Base de données** : Neon PostgreSQL (serverless) + Drizzle ORM — schema typé, migrations simples, connection pooling automatique\n- **Déploiement** : Vercel avec auto-deploy sur push to main — zéro config serveur\n- **SEO** : @nuxtjs/seo pour sitemap, robots.txt, schema.org (JSON-LD) sur chaque page\n\n## Fonctionnalités\n\n- **Trilingue** : français, anglais et khmer — avec un composable `useLocale()` maison et fallback FR\n- **Blog dynamique** : articles stockés en base avec rendu markdown, commentaires modérés, tags\n- **CV interactif** : page dédiée avec export PDF, alimentée par la base de données\n- **Formulaire de contact** : avec honeypot anti-spam et stockage en base\n- **Health tracker** : suivi quotidien de pompes style Duolingo avec streaks et calendrier\n\n## Architecture\n\nLe site suit une architecture full-stack unifiée grâce à Nitro (le moteur serveur de Nuxt). Les API REST sont des fichiers dans `server/api/`, le schema Drizzle définit les types partagés entre front et back, et tout est déployé comme une seule application serverless.\n\n## Pourquoi ce projet ?\n\nEn tant qu'Engineering Manager, je code moins au quotidien qu'avant. Ce portfolio me permet de garder la main sur les technologies modernes, d'expérimenter (Nuxt 4, Drizzle, Neon serverless), et de documenter mes réflexions via le blog. C'est aussi un exercice de product ownership : je suis à la fois le dev, le PM et l'utilisateur final.","## The Project\n\nThis site is my personal portfolio, but also a technical playground. Rather than using a template, I wanted to build something from scratch — from the database schema to continuous deployment.\n\n## Tech Stack\n\n- **Frontend**: Nuxt 4 (Vue 3.5) + TypeScript — for SSR, automatic routing and composables\n- **Database**: Neon PostgreSQL (serverless) + Drizzle ORM — typed schema, simple migrations, automatic connection pooling\n- **Deployment**: Vercel with auto-deploy on push to main — zero server config\n- **SEO**: @nuxtjs/seo for sitemap, robots.txt, schema.org (JSON-LD) on every page\n\n## Features\n\n- **Trilingual**: French, English and Khmer — with a custom `useLocale()` composable and FR fallback\n- **Dynamic blog**: articles stored in database with markdown rendering, moderated comments, tags\n- **Interactive CV**: dedicated page with PDF export, fed from the database\n- **Contact form**: with honeypot anti-spam and database storage\n- **Health tracker**: Duolingo-style daily pushup tracker with streaks and calendar\n\n## Architecture\n\nThe site follows a unified full-stack architecture thanks to Nitro (Nuxt's server engine). REST APIs are files in `server/api/`, the Drizzle schema defines shared types between front and back, and everything deploys as a single serverless application.\n\n## Why This Project?\n\nAs an Engineering Manager, I code less daily than I used to. This portfolio lets me keep my hands on modern technologies, experiment (Nuxt 4, Drizzle, Neon serverless), and document my thoughts through the blog. It's also a product ownership exercise: I'm the dev, the PM and the end user all at once.","ផលប័ត្រ/CV ផ្ទាល់ខ្លួនបង្កើតជាមួយ Nuxt 4, Neon PostgreSQL និង Drizzle ORM។ ដាក់ពង្រាយនៅ Vercel ជាមួយការគាំទ្រភាសា FR/EN/KM។",[13,14,15,16,17],"Nuxt 4","TypeScript","Neon","Drizzle","Vercel","https://github.com/chetana-dev/chetana-dev","https://chetana.fr",null,true,"2026-03-07T00:46:44.319463"]