2.3 KiB
2.3 KiB
CV-Maker
Application web de création de CV en temps réel : saisie Markdown dans un panneau latéral, preview A4 instantanée, sauvegarde locale automatique et export PDF — le tout sans backend, 100 % côté navigateur.
Démarrage rapide
docker run -d -p 3000:3000 --name cv-maker <mon-user-dockerhub>/cv-maker:latest
# → http://localhost:3000
Avec Docker Compose :
services:
cv-maker:
image: <mon-user-dockerhub>/cv-maker:latest
container_name: cv-maker
restart: unless-stopped
ports:
- "3000:3000"
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
Fonctionnalités
- Édition Markdown en direct (6 zones + expériences professionnelles)
- Preview A4 instantanée au format d'impression
- Export PDF et export/import JSON (
cv-maker.json) pour partager un CV - Sauvegarde automatique dans le
localStoragedu navigateur — aucune donnée transmise, aucun volume requis - PWA installable : utilisable hors-ligne (
sw.js, manifest, icônes 192/512) - Rendu Markdown sécurisé (
marked+DOMPurify, anti-XSS)
Détails de l'image
| Caractéristique | Valeur |
|---|---|
| Base | node:20-alpine |
| Port exposé | 3000 |
| Variables d'environnement | HOSTNAME=0.0.0.0, PORT=3000, NODE_ENV=production |
| Schéma | Multi-stage (deps → builder → runner), sortie Next.js standalone |
| Volume persistant | Aucun — données dans le navigateur (localStorage) |
| Commit | node comme utilisateur non-root (Next.js standalone) |
Tags
| Tag | Usage |
|---|---|
latest |
Dernière version stable — déploiements courants |
<semver> (ex. 1.0.0) |
Version précise — retours arrière |
Réduire / personnaliser
- Port : laisser le conteneur sur
3000, mapper le port hôte librement (-p 8080:3000). - HTTP : image se servant elle-même (pas de serveur externe requis), adaptée derrière un reverse-proxy (Caddy/Nginx).
Sources
- Dockerfile, configuration et documentation technique : dépôt du projet
- Toute donnée saisie reste dans le navigateur — conforme aux exigences de confidentialité (aucun cookie, aucune télémesure)