Files
photobooth-qr/deploy/nginx-photobooth.conf
T
KevinLecou 107e5c619a Nouvelle DA "Polaroid Néon" : écran galerie invité (maquette visuelle)
Nouvelle direction artistique actée (.claude/skills/photobooth-da/SKILL.md)
qui remplace progressivement la DA corail/prune/doré des 3 passes
précédentes. Décision associée : les invités voient désormais toutes les
photos de l'événement (revirement du "upload only" initial), cf.
docs/decisions.md — implique une mise à jour de la mention RGPD à faire.

Écran 3 du brief (galerie invité) livré en premier, comme demandé,
priorité au rendu visuel : grille de cadres polaroid (rotation aléatoire
-4°/+4°, légende manuscrite Caveat), fond noir chaud #12100E, effet
"chute avec rebond" pour un nouveau polaroid (bouton de démo temporaire
pour l'évaluer sans backend réel).

Contrastes vérifiés par calcul WCAG AA (skill) : texte clair sur fond
sombre largement conforme, mais texte clair sur les 3 couleurs d'accent
échouait (1.3:1 à 2.8:1) — corrigé en texte sombre systématique sur les
surfaces accent (6.3:1 à 13.2:1).

Nouvelles polices auto-hébergées (General Sans 700, Caveat variable,
Inter variable — ~144 Ko cumulés, poids documenté dans src/vendor/NOTICE.md).

⚠️ Maquette avec données factices (src/galerie/mock-photos/) : pas encore
câblée à Supabase, il manque une RPC/Edge Function publique de listing
(aucune fonction actuelle ne convient à un accès invité anonyme sans
admin_token). Route /galerie/<slug> ajoutée à deploy/nginx-photobooth.conf
et déployée sur photobooth.assistantaikev.eu.
2026-09-18 09:04:05 +02:00

47 lines
1.5 KiB
Plaintext

server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# nginx:alpine ne connaît pas l'extension .mjs par défaut et la sert en
# application/octet-stream -> le navigateur refuse d'exécuter le module
# ES (import bloqué), ce qui fait planter silencieusement tout script
# qui l'importe (constaté en prod le 2026-09-16 : browser-image-
# compression.mjs importé par upload.js, page bloquée sur "Chargement...").
location ~ \.mjs$ {
types { text/javascript mjs; }
default_type text/javascript;
try_files $uri =404;
}
# /e/<slug> -> page upload invité, le slug est lu côté client via
# window.location.pathname (cf. src/e/upload.js)
location /e/ {
try_files $uri $uri/ /e/index.html;
}
# /admin/<slug>?token=... -> galerie admin, slug lu côté client.
# /admin/qrcode/ reste servi tel quel (fichier réel, try_files le trouve
# avant de tomber sur le fallback ci-dessous).
location /admin/ {
try_files $uri $uri/ /admin/gallery/index.html;
}
# /galerie/<slug> -> galerie invité (nouvelle DA "Polaroid Néon",
# 2026-09-18, cf. docs/decisions.md). MAQUETTE au 2026-09-18 : données
# mock, pas encore câblée à Supabase (cf. commentaire en tête de
# src/galerie/index.html).
location /galerie/ {
try_files $uri $uri/ /galerie/index.html;
}
location /vendor/ {
try_files $uri =404;
}
location = / {
return 302 /e/;
}
}