Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Plateforme de création et d'envoi d'invitations d'événement. L'organisateur choisit un modèle de la galerie, le personnalise sans code (textes, photos, couleurs, écran d'ouverture, musique), l'envoie par email ou WhatsApp avec un lien nominatif par invité, et suit les ouvertures et les réponses. L'invité qui confirme reçoit un billet à QR code, scanné à l'entrée le jour J ; il retrouve l'itinéraire sur une carte et laisse ses photos, ses vidéos et un mot dans le livre d'or. Les modèles eux-mêmes sont écrits en HTML, CSS et JavaScript par les administrateurs.
Organisateur (/dashboard)
nom,email,téléphone,places), avec un nombre de places par invité.Invité (/invite/[token], sans compte)
Jour J (/check-in/[token])
Administration (/admin)
Site public
/templates) et page de chaque modèle
publié (/templates/[id]), toutes ouvertes sans compte.pnpm install # génère aussi le client Prisma (postinstall)
cp .env.example .env # puis remplissez les valeurs
npx prisma db push # crée le schéma sur une base vide
pnpm dev # http://localhost:3000
Sur une base existante, n'utilisez pas db push : appliquez les migrations
de prisma/migrations-sql/ (voir Base de données).
| Variable | Rôle |
|---|---|
DATABASE_URL | Chaîne de connexion PostgreSQL (NeonDB) |
BETTER_AUTH_SECRET | Clé de signature des sessions, 32 caractères ou plus (openssl rand -base64 32) |
NEXT_PUBLIC_APP_URL | URL publique, utilisée pour les liens d'invitation, le sitemap et l'Open Graph |
SMTP_HOST SMTP_PORT SMTP_USER SMTP_PASS | Envoi des emails (Nodemailer) ; port 465 en SSL, 587 en STARTTLS |
BLOB_READ_WRITE_TOKEN | Store Vercel Blob public pour les photos, la musique et les souvenirs. Sans lui, seul le collage d'un lien d'image fonctionne |
CRON_SECRET | Facultatif. Protège la tâche planifiée /api/cron/keepalive |
Sur Vercel, si NEXT_PUBLIC_APP_URL est absente, l'URL publique retombe sur
VERCEL_PROJECT_PRODUCTION_URL côté serveur (lib/site.js).
Les pages sont des Server Components : elles appellent directement la
couche app/actions/* et arrivent peuplées. Les composants clients sont
réduits à ce qui a besoin d'état (formulaires, dialogues, onglets) et
reçoivent leurs données en propriétés.
Concrètement, une page ne va pas chercher ses données dans un useEffect. Si
vous ajoutez un écran, chargez ses données dans le composant serveur et passez
le résultat à un enfant client.
Gérée par better-auth (lib/auth/server.js).
sessions ; cookie en cache 5 minutes pour éviter
un aller-retour SQL à chaque server action.app/actions/auth.js expose getSession() sous la forme historique
{ userId, email, name, role, plan }, ce qui permet au reste des actions de
ne rien savoir de better-auth.proxy.js (le middleware de Next 16) ne vérifie que la présence du
cookie. L'autorisation réelle (rôle, suspension, propriété d'un événement)
est faite côté serveur par requireAuth / requireAdmin / canAccessEvent.databaseHooks.user.create.after dans after() : l'inscription n'attend
pas le serveur SMTP et un envoi raté ne la bloque jamais.Les comptes existants ont leur hash bcrypt dans users.password, exposé en
legacyPassword. better-auth l'attend dans accounts.password.
La bascule se fait automatiquement à la première connexion de chaque utilisateur. Pour tout migrer d'un coup :
This is the beginning of the README. Read the rest at the original. Read the full README ↗