Portfolio personnel de Damien Paszkiewicz (alias Rusty), développeur full-stack en formation CDA à MyDigitalSchool Angers.
Construit avec Next.js 15 App Router + Tailwind CSS v4, déployé sur Vercel.
Single-page application avec navigation par ancres :
| Section | Ancre |
|---|---|
| Accueil (hero) | #home |
| À propos | #about |
| Projets | #projects |
| Musique | #music |
| Contact | #contact |
La page /cv est une page dédiée avec export PDF intégré.
- Framework — Next.js 15 (App Router)
- Style — Tailwind CSS v4
- Icônes — Font Awesome via
@fortawesome/react-fontawesome - Export PDF —
html-to-image+pdf-libavec annotations de liens cliquables - Déploiement — Vercel
portfolio-web/
├── app/
│ ├── layout.tsx # Layout global (Navbar, Footer, metadata)
│ ├── page.tsx # Page d'accueil (single-page)
│ ├── icon.tsx # Favicon généré dynamiquement
│ ├── globals.css # Styles globaux + scroll-behavior
│ ├── sitemap.ts # Génération automatique du sitemap.xml
│ └── cv/
│ └── page.tsx # Page CV avec export PDF
├── components/
│ ├── Navbar.tsx # Navbar sticky avec menu burger mobile
│ ├── Footer.tsx # Footer avec liens sociaux
│ ├── HeroSection.tsx # Section d'accueil
│ ├── AboutSection.tsx # Section à propos (stack, centres d'intérêt)
│ ├── ProjectsSection.tsx # Section projets
│ ├── ProjectsGrid.tsx # Grille filtrée (tous / personnel / scolaire / groupe)
│ ├── ProjectCard.tsx # Carte individuelle de projet
│ ├── MusicSection.tsx # Section musique (placeholder Monochrome)
│ ├── ContactSection.tsx # Section contact avec formulaire mailto
│ └── PrintButton.tsx # Bouton export PDF (html-to-image + pdf-lib)
└── data/
└── projects.json # Données des projets
Prérequis : Node.js 18+
# Cloner le repo
git clone https://github.com/RustyRory/Portfolio.git
cd Portfolio/portfolio-web
# Installer les dépendances
npm install
# Lancer le serveur de développement
npm run devOuvre http://localhost:3000.
Édite data/projects.json en ajoutant un objet :
{
"title": "Nom du projet",
"type": "personnel | scolaire | groupe",
"description": "Description courte du projet.",
"technologies": ["Next.js", "TypeScript"],
"github": "https://github.com/RustyRory/...",
"demo": "https://..."
}Le projet apparaît automatiquement dans la section Projets avec les filtres.
Le bouton Télécharger en PDF sur la page /cv :
- Capture le DOM du CV avec
html-to-image(rendu natif du navigateur, compatible Tailwind v4) - Génère un PDF A4 avec
pdf-lib - Injecte des annotations de liens cliquables (email, LinkedIn, GitHub) avec conversion des coordonnées DOM → PDF
La section Musique est un placeholder en attente du déploiement d'une instance Monochrome self-hosted. L'intégration prévue est une API route Next.js qui proxifie l'API interne de Monochrome.
Le projet est déployé sur Vercel avec :
- Root Directory :
portfolio-web - Framework Preset : Next.js
- Variable d'environnement (optionnelle) :
NEXT_PUBLIC_SITE_URLpour le sitemap
Code source disponible librement. Contenu (textes, photo) — tous droits réservés.