65 lines
2.3 KiB
Markdown
65 lines
2.3 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
docker run -d -p 3000:3000 --name cv-maker <mon-user-dockerhub>/cv-maker:latest
|
|
# → http://localhost:3000
|
|
```
|
|
|
|
Avec Docker Compose :
|
|
|
|
```yaml
|
|
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 `localStorage` du 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) |