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.
Générez des idées, votez chacun de votre côté, et découvrez les prénoms sur lesquels vous êtes vraiment d'accord. Gratuit, sans inscription.
Translation pending
LifestyleHTML · JavaScriptGitHub @gababitbolOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Générateur de prénoms bébé pensé pour les futurs parents, avec une fonctionnalité différenciante : le vote à deux (et en famille). Chacun génère, aime, puis vote de son côté sur les prénoms partagés — l'app révèle ensuite ceux qui font l'unanimité. Ouvrir le site en local Aucune installation ni build requis : le site est du HTML/CSS/JS statique. Servez le dossier avec n'importe quel serveur statique, par exemple :Read the full README ↗
Générateur de prénoms bébé pensé pour les futurs parents, avec une fonctionnalité différenciante : le vote à deux (et en famille). Chacun génère, aime, puis vote de son côté sur les prénoms partagés — l'app révèle ensuite ceux qui font l'unanimité.
Site en production : namespark.baby
Aucune installation ni build requis : le site est du HTML/CSS/JS statique. Servez le dossier avec n'importe quel serveur statique, par exemple :
python3 -m http.server 8124
Ouvrir index.html en double-clic fonctionne aussi pour l'essentiel, mais les appels
fetch() vers /api/* (Supabase, emails) nécessitent un vrai serveur — utilisez
vercel dev pour tester les fonctions serverless en local.
namespark-baby/
├── index.html # Landing + générateur + FAQ + vote couple/famille + Mon espace
├── styles.css # Design (crème / brun / doré), responsive
├── app.js # Toute la logique front : i18n FR/EN, générateur, vote,
│ # compte à rebours grossesse, Mon espace, admin login
├── storage.js # Couche d'accès données — localStorage + Supabase.
│ # app.js y passe presque toujours (exception connue :
│ # le compte à rebours grossesse touche localStorage direct).
├── data.js # Base locale de ~10 000 prénoms (génération sans API)
├── 404.html # Page d'erreur personnalisée (vraie réponse HTTP 404)
├── admin.html / admin.js # Dashboard (leads, abonnés) — protégé par mot de passe serveur
├── mentions-legales.html, privacy.html, terms.html, unsubscribe.html
│
├── prenom/ # ~10 000 pages statiques, une par prénom — SEO
│ # (signification, origine, popularité, prénoms proches, FAQ)
├── seo/ # 6 pages de catégorie (prénom garçon/fille/hébreu/rare/court)
│
├── api/ # Fonctions serverless Vercel
│ ├── generate.js # génération de prénoms (mode démo local, IA prête mais désactivée)
│ ├── verify-email.js # validation email : domaines jetables + vérif MX
│ ├── save-list.js # envoi de la sélection par email (Resend)
│ ├── subscribe-newsletter.js, newsletter.js, unsubscribe.js
│ ├── notify-vote.js # notifie le créateur quand son partenaire a voté
│ ├── admin-login.js, subscribers-admin.js, leads-admin.js
│ ├── keepalive.js # ping quotidien (cron) pour empêcher la pause auto de Supabase
│ └── track.js
│
├── supabase/migrations/ # Migrations SQL (décisions de vote, abonnés, RLS, grossesse…)
├── tools/ # Scripts de génération : build-seo-pages.js régénère /prenom/
│ # à partir de data.js — à relancer après tout enrichissement
├── tests/ # Suite Playwright (33 scénarios E2E contre la prod)
└── vercel.json # cleanUrls, redirections /vote & /family, cron keepalive
tools/build-seo-pages.js).Le bouton Générer fonctionne sans aucune API : la génération se fait localement à
partir de data.js (voir generateDemo() dans app.js). Les filtres sont respectés au
mieux via un système de score.
npm i @anthropic-ai/sdkANTHROPIC_API_KEY (Project Settings → Environment Variables) —
jamais dans le frontend.api/generate.js.app.js, remplacer generateDemo(...) par await generateViaBackend(...).🔒 Aucune clé API n'est présente dans le frontend. Le navigateur appelle uniquement les routes
/api/*, et les clés restent côté serveur.
| Variable | Sert à |
|---|---|
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY | Lecture/écriture des décisions de vote, abonnés, leads |
RESEND_API_KEY | Envoi des emails (sélection, notifications de vote, newsletter) |
ADMIN_PASSWORD, ADMIN_API_TOKEN | Authentification du dashboard admin |
UNSUBSCRIBE_SECRET | Signature des liens de désabonnement |
CRON_SECRET (optionnel) | Protège /api/keepalive contre les appels externes |
SUPABASE_ACCESS_TOKEN (optionnel) | Permet à /api/keepalive de relancer le projet Supabase s'il est en pause |
ANTHROPIC_API_KEY (optionnel, désactivé) | Génération de prénoms par IA — voir ci-dessus |
Côté client, l'URL et la clé anonyme Supabase sont directement dans storage.js
(clé publique, prévue pour être exposée — la clé service-role, elle, ne l'est jamais).
Le site est déployé sur Vercel, connecté au dépôt GitHub — chaque push sur main
redéploie automatiquement. Un cron Vercel (vercel.json) appelle /api/keepalive chaque
jour pour empêcher Supabase (plan gratuit) de mettre le projet en pause après 7 jours
d'inactivité.
cd tests && npm test
Suite Playwright (33 scénarios) qui s'exécute contre namespark.baby en production
(voir tests/playwright.config.js). Les comptes de test utilisent le domaine
@namespark.baby (préfixe ns-test-) pour passer le filtre anti-emails-jetables tout en
restant identifiables et faciles à nettoyer côté Supabase.