← Projets

chetana.dev — Portfolio dynamique

Nuxt 4TypeScriptNeonDrizzleVercel

Le projet

Ce 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.

Stack technique

  • Frontend : Nuxt 4 (Vue 3.5) + TypeScript — pour le SSR, le routing automatique et les composables
  • Base de données : Neon PostgreSQL (serverless) + Drizzle ORM — schema typé, migrations simples, connection pooling automatique
  • Déploiement : Vercel avec auto-deploy sur push to main — zéro config serveur
  • SEO : @nuxtjs/seo pour sitemap, robots.txt, schema.org (JSON-LD) sur chaque page

Fonctionnalités

  • Trilingue : français, anglais et khmer — avec un composable useLocale() maison et fallback FR
  • Blog dynamique : articles stockés en base avec rendu markdown, commentaires modérés, tags
  • CV interactif : page dédiée avec export PDF, alimentée par la base de données
  • Formulaire de contact : avec honeypot anti-spam et stockage en base
  • Health tracker : suivi quotidien de pompes style Duolingo avec streaks et calendrier

Architecture

Le 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.

Pourquoi ce projet ?

En 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.