Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
코드 없이 디지털 초대장을 만들고 이메일·WhatsApp으로 전송해 답변을 추적하며 QR 티켓으로 손님을 맞이한다
Create a digital invitation without code, send it by email or WhatsApp, follow the replies and welcome your guests with a QR code ticket.
라이프스타일JavaScript · TypeScriptGitHub @KevinArmache온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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 :
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗