Sign inSign up

jlequen1/cursus

By jlequen1

•Updated 4 months ago

Image
0

620

jlequen1/cursus repository overview

⁠Cursus

Générateur de CV auto-hébergé : un éditeur web pour saisir votre CV, un aperçu en direct, plusieurs thèmes modernes et un export PDF fidèle (format A4). Une seule personne (vous) édite ; le CV est consultable en ligne.

  • 📝 Éditeur deux colonnes avec aperçu temps réel et auto-enregistrement
  • 🎨 Thèmes intégrés (sobres et dynamiques, avec ou sans photo), éditables, + thèmes perso « fichiers »
  • 🖨️ Export PDF A4 par Chromium headless (rendu identique à l'écran)
  • 🔒 Espace d'édition protégé par mot de passe, données en SQLite sur volume
  • 🐳 100 % Docker, sans service externe

⁠Démarrage rapide

Dans un dossier vide, créez docker-compose.yml :

services:
  web:
    image: jlequen1/cursus:latest        # ou une version figée, p. ex. :1.0
    container_name: cursus
    ports:
      - "${APP_PORT:-63546}:3000"
    environment:
      DATABASE_URL: "file:/app/data/cv.db"
      DATA_DIR: "/app/data"
      INTERNAL_BASE_URL: "http://127.0.0.1:3000"
      AUTH_SECRET: "${AUTH_SECRET:?Définis AUTH_SECRET dans .env (openssl rand -hex 32)}"
      ADMIN_EMAIL: "${ADMIN_EMAIL:[email protected]}"
      ADMIN_PASSWORD: "${ADMIN_PASSWORD:-changeme-please}"
      PUBLIC_BASE_URL: "${PUBLIC_BASE_URL:-http://localhost:63546}"
    volumes:
      - cv-data:/app/data
      # Optionnel — vos thèmes perso (les thèmes intégrés sont déjà dans l'image) :
      # - ./themes:/app/themes
    restart: unless-stopped

volumes:
  cv-data:

…et un .env à côté :

APP_PORT=63546
AUTH_SECRET=remplace-par-un-secret-aleatoire-long   # openssl rand -hex 32
[email protected]
ADMIN_PASSWORD=un-mot-de-passe-solide
PUBLIC_BASE_URL=http://localhost:63546

Puis :

docker compose up -d

Ouvrez http://localhost:63546⁠ et connectez-vous avec ADMIN_EMAIL / ADMIN_PASSWORD.


⁠Tags

TagDescription
latestDernière version stable (suit les mises à jour)
1.0Version figée (recommandé en production pour la stabilité)

Mise à jour (si :latest) : docker compose pull && docker compose up -d.

⁠Variables d'environnement

VariableDéfautRôle
APP_PORT63546Port exposé sur l'hôte (interne : 3000)
AUTH_SECRET—Secret de session JWT — obligatoire (openssl rand -hex 32)
ADMIN_EMAIL[email protected]Login de l'éditeur (créé au 1er démarrage)
ADMIN_PASSWORDchangeme-pleaseMot de passe initial (à changer ensuite dans l'app)
PUBLIC_BASE_URLhttp://localhost:63546URL publique (liens canoniques + rendu PDF)

Les chemins internes (DATABASE_URL, THEMES_DIR, BUILTIN_THEMES_DIR, CHROMIUM_PATH, PORT…) sont déjà intégrés dans l'image.

⁠Données & persistance

Tout (base SQLite + photos) vit dans le volume cv-data : les données survivent à down / up / pull. Sauvegarde rapide depuis l'app : Compte → Exporter en JSON.

⁠Thèmes

Les thèmes intégrés sont livrés dans l'image (mis à jour avec elle). Pour vos thèmes perso, montez un dossier sur /app/themes : un thème de même identifiant remplace l'intégré, sans rebuild (rechargez la page).

⁠Sécurité

  • Changez impérativement AUTH_SECRET et ADMIN_PASSWORD.
  • En production : reverse proxy TLS devant, et PUBLIC_BASE_URL = votre URL HTTPS.

⁠Notes

  • Le compte admin n'est créé qu'au premier démarrage ; ensuite, changez le mot de passe via Compte → Changer le mot de passe.
  • Le conteneur applique les migrations de base au boot (idempotent).

Tag summary

Content type

Image

Digest

sha256:7777f40d1…

Size

621 MB

Last updated

4 months ago

docker pull jlequen1/cursus