No description
- HTML 70.8%
- JavaScript 27.4%
- Shell 1.4%
- Dockerfile 0.4%
- L'invité peut répondre à sa confirmation -> arrive aux mariés (Reply-To) - Les mariés peuvent répondre à la notif -> arrive à l'invité (Reply-To = son email) - Si coupleTo est une adresse no-reply, le texte n'invite plus à répondre (renvoie vers la page Contact du site) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| admin | ||
| deploy | ||
| public | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| DEPLOY.md | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| server.js | ||
Mariage — Éloïse & Clément (29 mai 2027)
Site de mariage + collecte des réponses (RSVP) avec export CSV. 100 % self-hosted : Node/Express, stockage fichier append-only (aucune base de données à administrer), se sauvegarde comme le reste (rclone → kDrive).
Structure
mariage/
├─ server.js API + sert le site et l'admin
├─ public/index.html le site public
├─ admin/index.html espace mariés (liste + export CSV)
├─ package.json une seule dépendance : express
├─ .env.example config à copier en .env
└─ data/rsvps.ndjson créé au 1er RSVP (une ligne JSON par réponse)
Démarrer
cp .env.example .env # puis choisis ADMIN_USER / ADMIN_PASSWORD
npm install
npm start
- Site → http://localhost:3000/
- Admin → http://localhost:3000/admin (login = ce que tu as mis dans .env)
Espace mariés (/admin)
- Tableau des réponses, recherche + filtre présents/absents.
- Compteurs : réponses, présents, convives estimés, absents.
- Bouton Exporter en CSV →
rsvp-mariage-AAAA-MM-JJ.csv(séparateur;+ BOM UTF-8, s'ouvre direct dans Excel FR).
Production (ton stack habituel)
PM2 :
pm2 start server.js --name mariage
pm2 save
Caddy (reverse proxy) :
mariage.exemple.fr {
reverse_proxy localhost:3000
}
Le site ET l'API sont sur la même origine → rien à configurer côté CORS.
(Si un jour tu sépares le front, renseigne ALLOWED_ORIGIN dans .env et API_BASE en haut de public/index.html.)
Sauvegarde
Tout tient dans data/rsvps.ndjson. Un rclone copy data/ kdrive:mariage/ périodique suffit.
Ce qu'il reste à personnaliser dans public/index.html
- Photos de la galerie (section « Un peu de nous »).
- Horaires du déroulé si besoin (bloc « Le jour J »).
- Le lieu exact est déjà réglé (19 chemin de Fina, Fuveau) + carte des hébergements autour.