moedcal.com — le plan du site
Décidé le 5 octobre 2026, révisé le même soir après trois relectures critiques (référencement, exactitude, design).
Site web de Moed : les fonctions de l'app iPhone, en ligne, pour être trouvé sur Google et mener à l'App Store
(https://apps.apple.com/app/id6790553505).
Maquettes : https://moedcal.vpsdashboard.space/ — le style suit moed-ios/DESIGN.md.
1. Les dix décisions
| # | Décision | Pourquoi |
|---|---|---|
| 1 | Un site serveur, pas un site figé. Next.js 16 rend chaque page côté serveur ; les pages ville sont recalculées chaque nuit à 00:01 heure de la ville par une tâche planifiée, pas à la première visite. Le « prochain zman » et le délai se calculent dans le navigateur à partir des heures du jour déjà dans la page. | Une page prête à minuit évite le pic de calcul et la page de la veille. |
| 2 | Les mêmes calculs que l'app, et les mêmes règles écrites (§6.1). @hebcal/core (dates, fêtes, parachiot) et kosher-zmanim (zmanim). Une seule règle d'altitude, celle de l'app ; une seule règle d'arrondi, prudente. Un test compare chaque nuit le site, l'app et Hebcal ; échec au-delà d'une minute, sauf écart d'altitude documenté. |
L'utilisateur compare le site, l'app et Hebcal : une heure doit s'expliquer par une règle publiée. |
| 3 | Sous-dossier par langue : moedcal.com/fr/…, /he/…, /en/…. / est une page fixe de choix de langue, sans redirection forcée ; le x-default de chaque page est sa version anglaise. |
Une redirection d'après le navigateur envoie Googlebot (sans en-tête de langue) toujours au même endroit ; une page fixe montre toutes les langues. |
| 4 | Adresses localisées en caractères latins. Les langues à alphabet latin traduisent les mots (/fr/horaires/paris/) ; les autres gardent l'anglais translittéré (/he/zmanim/jerusalem/). |
Un lien hébreu encodé (%D7%96…) se partage mal et casse dans WhatsApp. |
| 5 | Une ville = une adresse. La page montre aujourd'hui et le prochain Chabbat ; une autre date passe par un formulaire (?date=), jamais par un lien explorable, en noindex et canonique vers la page de la ville. |
Pas de doublons explorables, et le noindex reste lisible (l'adresse n'est pas bloquée dans robots.txt). |
| 6 | On n'indexe une ville que si sa page a un contenu local que la formule ne produit pas (§7.2), et on ouvre par étapes : ≈ 210 villes au lancement, la suite d'après Search Console. Toutes les autres villes répondent à la recherche du site en noindex, sans lien depuis les pages indexées. |
Une page qui ne change que par le nom et les heures est une page « passerelle » pour Google, et Hebcal publie déjà ces heures pour 1 000 villes. |
| 7 | Une langue n'ouvre qu'avec un relecteur natif de tous ses gabarits et de son glossaire. Au lancement : hébreu et français (relus par le propriétaire), anglais (relecteur à désigner). Aucune langue n'est ouverte sur la seule foi d'un contrôle automatique. | Des horaires religieux mal traduits font allumer à la mauvaise heure ; deux modèles d'accord ne prouvent rien. |
| 8 | Le haut de chaque page répond à la question en une phrase (« Ce vendredi 9 octobre, allumage à 18:56 à Paris ; sortie samedi à 19:58 »), et la page donne une raison de cliquer que le résultat Google n'a pas : calendrier de l'année à imprimer, abonnement iCal, choix de la coutume, villes voisines. | La phrase seule est reprise par Google sans clic ; ce qui se garde ou se règle fait venir. |
| 9 | Aucune publicité, aucun interstitiel, aucun bandeau de cookies : mesure d'audience Umami hébergée sur le serveur, sans cookie. L'app se propose par la bannière native de Safari et une carte dans la page. | Confiance et vitesse ; la bannière Safari n'est pas un interstitiel. |
| 10 | Pas de faux portrait, pas d'image générique, pas de crédit inventé : les tsadikim ont le monogramme de l'app ; les articles ont une illustration générée et validée une par une, ou un graphique tiré des calculs ; aucune page ne dit « relu par » tant que la relecture n'a pas eu lieu. | Un site d'horaires religieux vit de sa crédibilité. |
2. Qui cherche quoi
Les volumes exacts ne sont publics nulle part (Keyword Planner demande un compte Google Ads actif ; Ahrefs, Semrush et keywordtool.io ne montrent rien sans compte : essayé le 05/10). Les chiffres ci-dessous viennent de deux mesures réelles et d'une déduction : - Google Trends (12 mois, relatif, relevé le 05/10/2026 par l'API publique) ; - un seul ancrage absolu : « hanukkah » ≈ 300 000 à 550 000 recherches par mois en moyenne mondiale (https://www.keysearch.co/top-keywords/hanukkah-keywords) ; - les autres volumes sont déduits des rapports Trends × cet ancrage : marge d'un facteur 2 au moins.
Avant de fixer la liste des villes et des langues (étape 0 de §12) : ouvrir un compte Google Ads (sans campagne) pour lire Keyword Planner, et remplacer ce tableau par des chiffres mesurés. Le chiffre de « hebrew date converter » (~50 000) est à vérifier en premier : il paraît haut.
| # | Famille de requêtes | Langue | Ordre de grandeur / mois | Source | Page qui répond |
|---|---|---|---|---|---|
| 1 | כניסת שבת [עיר], כניסת שבת |
he | le plus fort d'Israël : 18 × « זמני שבת » | Trends IL (56,6 contre 3,1) | ville |
| 2 | shabbat times [city], shabbat times |
en | ~30 000 (tête) + longue traîne par ville | déduit | ville |
| 3 | candle lighting times [city] |
en | ~25 000 – 30 000 | déduit | ville |
| 4 | hanukkah [année], when is hanukkah |
en | 300 000 – 550 000 (pic en décembre) | keysearch | fête × année |
| 5 | passover / rosh hashanah / yom kippur [année] |
en | 100 000 – 300 000 chacune en saison | estimation (même profil que hanukkah) | fête × année |
| 6 | jewish calendar [année], jewish holidays [année] |
en | ~50 000 | déduit | calendrier de l'année |
| 7 | hebrew date, today's hebrew date, hebrew date converter |
en | ~50 000 | déduit | convertisseur |
| 8 | hebrew calendar |
en | ~20 000 – 30 000 | déduit | calendrier |
| 9 | zmanim [city], sof zman shema [city] |
en | ~10 000 – 15 000 | déduit | ville |
| 10 | parsha this week, parashat [nom] |
en/he | estimation : 20 000 – 50 000 | estimation | paracha |
| 11 | yahrzeit calculator, yahrzeit date [année] |
en | ~2 500 – 3 000 | déduit | calculateur yahrzeit |
| 12 | bar mitzvah date calculator, bat mitzvah date |
en | estimation : 3 000 – 8 000 | estimation | calculateur bar-mitsva |
| 13 | gematria calculator, gematria of [mot] |
en | estimation : 10 000 – 30 000, sans saison | estimation | guématria |
| 14 | לוח שנה עברי, לוח עברי [שנה] |
he | 4 × « זמני שבת » | Trends IL (13,2) | calendrier |
| 15 | הדלקת נרות [עיר], זמני היום [עיר] |
he | 2 – 3 × « זמני שבת » | Trends IL (8,1) | ville |
| 16 | הילולת [צדיק], הילולת הבבא סאלי |
he | estimation : pics de 10 000 à 100 000 le jour de la hiloula (Lag Baomer) | estimation | tsadik |
| 17 | heure chabbat [ville], horaires chabbat [ville] |
fr | ~5 000 – 15 000 (les deux formes à égalité) | Trends FR, estimation | ville |
| 18 | calendrier juif [année], fêtes juives [année] |
fr | moitié de « heure chabbat » | Trends FR (20,9) | calendrier |
| 19 | horario shabat [ciudad], calendario judío [año] |
es | estimation : 5 000 – 15 000 ; l'espagnol cherche surtout le calendrier (Wikipédia « calendrier hébraïque » es = 10 005 vues/mois, 2ᵉ langue) | Wikipédia + estimation | calendrier, fêtes |
| 20 | время зажигания свечей шаббат, еврейский календарь |
ru | estimation : 5 000 – 10 000 (Russie, Ukraine, russophones d'Israël) | estimation | ville, calendrier |
| 21 | calendário judaico [ano], festas judaicas |
pt | estimation : 3 000 – 8 000 ; intérêt surtout évangélique au Brésil (Wikipédia pt : calendrier 3 686, Chabbat 185) | Wikipédia | calendrier, fêtes |
| 22 | jüdischer Kalender, jüdische Feiertage [Jahr] |
de | estimation : 5 000 – 10 000 | Wikipédia (Hanoukka de = 15 491 vues) | fêtes |
| 23 | sefirat haomer today, omer count |
en/he | estimation : 10 000 – 40 000 entre Pessah et Chavouot | estimation | omer du jour |
Ce qu'on en retient pour l'ordre de construction : la page ville (familles 1, 2, 3, 9, 15, 17)
porte la plus grosse part du volume, mais seulement là où elle apporte plus que Hebcal ; les pages fête × année
portent les plus gros pics ; le convertisseur et le calendrier de l'année sont stables toute l'année.
En hébreu, la requête forte est כניסת שבת [עיר] (18 fois « זמני שבת ») : elle va dans le titre et le H1 des pages
ville hébraïques ; « זמני שבת » reste dans la première phrase. Les concurrents (Hebcal, Chabad, Yeshiva.org.il, Kikar)
ont beaucoup plus d'autorité : la fenêtre réaliste est le milieu de classement des villes moyennes, pas Jérusalem
ou Tel-Aviv la première année.
3. Les langues
Données : population juive « core » 2024 (DellaPergola, https://www.cbs.gov.il/he/Documents/World%20DellaPergola%202024%20complete.pdf) et pages vues mensuelles de Wikipédia (moyenne sept. 2025 – sept. 2026) pour Hanoukka / Chabbat / calendrier hébraïque.
Un seul critère pour toutes les langues (décidé le 05/10, r1) : une langue entre au plan si la somme des vues Wikipédia des trois articles dépasse 10 000 par mois ou si elle a une communauté de plus de 50 000 personnes qui la lisent ; elle n'ouvre qu'avec un relecteur natif (décision 7) et quand la langue précédente produit du trafic.
| Étape | Langue | Public | Wikipédia (Han. / Chab. / Cal.) | Pages | Relecture |
|---|---|---|---|---|---|
| Lancement | hébreu he |
Israël 7,15 M | 4 484 / 1 604 / 3 756 (sous-estimé : on y cherche des horaires) | villes d'Israël retenues, fêtes, outils | le propriétaire |
| Lancement | français fr |
France 438 500, Belgique, Suisse, Canada, Maroc | 12 413 / 6 143 / 4 294 | villes francophones retenues, fêtes, outils | le propriétaire |
| Lancement | anglais en |
USA 6,3 M, Canada, R.-U., Australie, Afrique du Sud | 83 248 / 31 897 / 40 517 | villes anglophones retenues, fêtes, outils | relecteur à désigner |
| 2 | espagnol es, russe ru, allemand de, portugais pt |
Argentine, Mexique ; Russie, Ukraine, russophones d'Israël ; Allemagne ; Brésil | 24 539 / 28 902 / 25 072 / 6 216 (sommes) | gabarits, fêtes, outils, villes de leur pays retenues | un natif par langue, payé une fois (≈ 150-300 € la langue, à confirmer en devis) |
| 3 | italien, néerlandais, hongrois, polonais, ukrainien, turc, persan | chacune passe le critère à vérifier une par une | 1 300 à 8 000 | à décider langue par langue | idem |
| À mesurer | arabe ar |
2 M de citoyens arabes d'Israël, Maroc, Tunisie ; curiosité religieuse et culturelle | à relever (Wikipédia ar + Trends EG/SA/MA pour « التقويم العبري ») | — | — |
Retirées du plan : coréen, chinois, japonais (300 à 2 700 vues, pas de communauté : ne passent pas le critère), yiddish (42 vues ; le public hassidique cherche en hébreu ou en anglais), judéo-espagnol (23), hindi (101).
Calendrier : étape 2 au plus tôt 8 semaines après le lancement, si les seuils de §7.3 sont tenus ; étape 3 après que l'étape 2 produit du trafic. Pas de date fixe.
4. Arborescence et adresses
moedcal.com/
├─ / page de choix de langue (fixe, liens vers chaque langue)
├─ /fr/ accueil : date du jour, prochain zman, Chabbat, outils
├─ /fr/horaires/ toutes les villes, par pays
│ ├─ /fr/horaires/france/ pays : toutes ses villes et l'allumage de la semaine (indexée)
│ ├─ /fr/horaires/paris/ ville retenue (aujourd'hui + prochain Chabbat)
│ └─ /fr/horaires/paris/chabbat-5787/ ville : tous les Chabbats de l'année, à imprimer + iCal
├─ /fr/fetes/ toutes les fêtes et jeûnes
│ ├─ /fr/fetes/hanoukka/ la fête (définition, dates de 2020 à 2032 en tableau)
│ └─ /fr/fetes/hanoukka/2026/ la fête une année : l'année en cours et la suivante seulement
├─ /fr/calendrier/2026/ l'année civile, mois par mois
├─ /fr/calendrier/5787/ l'année hébraïque
├─ /fr/paracha/berechit/ une paracha (prochaines lectures, haftara par rite)
├─ /fr/hilloulot/ les 30 tsadikim
│ └─ /fr/hilloulot/rabbi-levi-yitzhak-de-berditchev/
├─ /fr/convertisseur-de-dates/
├─ /fr/yahrzeit/ calculateur de yahrzeit
├─ /fr/bar-mitsva/ calculateur de bar et bat-mitsva
├─ /fr/guematria/
├─ /fr/omer/ le compte du jour (ouverte toute l'année, active entre Pessah et Chavouot)
├─ /fr/methode/ méthode et sources (prérequis du lancement, §5.9)
├─ /fr/widget/ le widget à intégrer et l'API, documentés (§7.4)
└─ /fr/articles/heure-allumage-bougies-chabbat/
- Mots de chemin : une table par langue (
horaires/zmanim/horarios…), tenue avec le glossaire. Les noms de ville viennent du nom ASCII de GeoNames. - Homonymes :
/fr/horaires/paris/est Paris, France. Les homonymes prennent la région et le pays dans l'adresse (/en/zmanim/paris-tx-us/) et dans le titre (« Paris, Texas ») ; sans communauté connue, ils restent ennoindex. - hreflang en balises
<link>dans la page et enxhtml:linkdans les sitemaps, générées depuis une seule table de routes ; chaque page ne liste que les langues où elle existe ;x-default→ la version anglaise. Un test de construction vérifie la réciprocité (A → B ⇒ B → A), que chaque adresse listée répond 200 et qu'elle est sa propre canonique. - Canonique : toujours l'adresse propre, sans paramètre.
Pages au lancement (hébreu, français, anglais)
| Type | he | fr | en | Pourquoi ce nombre |
|---|---|---|---|---|
| Villes indexées | ≈ 80 | ≈ 70 | ≈ 60 | seulement celles qui passent le seuil de §7.2 |
| Chabbats de l'année par ville | mêmes villes | mêmes villes | mêmes villes | page imprimable, utile et distincte |
| Fêtes (25) + fête × année (année en cours et suivante) | 75 | 75 | 75 | 25 × 3 ; les autres années restent des lignes du tableau de la fête |
| Calendriers (2026, 2027, 5787, 5788) | 4 | 4 | 4 | |
| Outils (convertisseur, yahrzeit, bar-mitsva, guématria, omer) | 5 | 5 | 5 | |
| Pays, index, accueil, méthode, widget | ≈ 15 | ≈ 15 | ≈ 15 | |
| Articles | — | 4 | 4 | 2 par semaine ensuite |
| Total | ≈ 260 | ≈ 245 | ≈ 225 | ≈ 730 pages (au lieu de 5 500) |
Les parachiot (61) et les tsadikim (30) viennent à l'étape 3 de §12, une fois les pages du lancement indexées.
5. Chaque type de page
Modèles en français ; {} = valeur calculée. Chaque page porte : fil d'Ariane, phrase-réponse en tête (aussi sur
téléphone, avant tout autre bloc), données calculées, texte propre, liens internes, carte de l'app, pied de page avec
les langues. Titre ≤ 60 caractères, description ≤ 155, l'heure au début : la construction échoue sinon, maquettes
comprises (tools/build-mockups.mjs). Pas de « | Moed » dans les titres des pages ville et fête : la marque n'a
aucune notoriété et coûte la place de l'heure.
Données structurées : seulement ce qui est vrai et éligible. BreadcrumbList partout ; Article sur les articles ;
WebSite (nom du site) sur l'accueil. Retirés : Event (un Chabbat ou une fête n'est pas un évènement auquel on
assiste en un lieu à adresse, et VirtualLocation sans composante réelle n'est pas pris en charge), FAQPage (Google a
supprimé ces résultats pour tous les sites le 7 mai 2026), WebApplication/MobileApplication (sans avis, pas
d'affichage), SearchAction (champ de recherche des liens annexes retiré par Google), Person et ItemList d'Event.
Event ne reviendra que pour un vrai évènement localisé (une hiloula à un tombeau, avec adresse). Les questions
fréquentes restent en HTML visible.
5.1 Ville — /fr/horaires/paris/ (maquettes : paris.html, yerushalayim.html)
- title :
Chabbat à {Ville} : allumage {heure}, sortie {heure} · zmanim; he :כניסת שבת ב{עיר}: הדלקת נרות {שעה}, צאת השבת {שעה}. - meta :
Vendredi {date}, allumage des bougies de Chabbat à {heure} à {Ville}, sortie samedi à {heure} ({paracha}). Zmanim du jour et tous les Chabbats de l'année.— la fin varie selon ce que la ville a en propre (coutume, Chabbat le plus tôt, synagogues). - H1 court et différent du titre :
Chabbat et zmanim à {Ville}; he :כניסת ויציאת שבת ב{עיר}. Puis la date hébraïque en grand (serif), comme l'app. - En haut : phrase-réponse, trois réglages (ville, coutume, jour), puis sur téléphone dans cet ordre : carte Chabbat, carte « prochain zman » avec l'arc, zmanim ; sur ordinateur : Chabbat | prochain zman, puis zmanim | une colonne qui suit le défilement (à venir, l'app).
- Contenu propre à la ville : zmanim avec variantes, 5 prochains Chabbats, « Le calcul pour {Ville} » (coordonnées, altitude, fuseau, coutume, fin de Kippour), 5 villes proches, et le contenu local du seuil §7.2 (coutume locale sourcée, synagogues et leurs horaires d'office, texte relu). Chabbat le plus tôt et le plus tard ne sont plus dans le corps : ils sont sur la page annuelle, liée.
- Graphies : les variantes (shabbat, chabat, shabbath) sont écrites une fois en texte visible, naturellement.
- Anglais : heures en 12 h (
6:56 PM) parIntl; « Shabbat / Shabbos » et « candle lighting » dans le texte. - Liens : pays, villes proches, paracha, fête suivante, article sur le calcul, page annuelle.
5.2 Fête × année — /fr/fetes/hanoukka/2026/ (maquette : hanoukka-2026.html)
- title :
{Fête} {année} : du {début} au {fin}, heures d'allumage. - H1 :
{Fête} {année}; sous-titre hébreu ; la réponse en grand dans une carte (« Premier soir à Paris : avant 16:38 »). - Contenu : les huit soirs avec les deux heures (coucher et nuit, chaque communauté choisit la sienne, Choulhan Aroukh 672:1) et le nombre de bougies dit aussi en mots ; ce qui se passe pendant la fête ; les autres années ; questions ; les graphies (Hanouka, Hanoucca, Hanukkah, Chanukah) en texte visible.
5.3 Convertisseur — /fr/convertisseur-de-dates/ (maquette : convertisseur.html)
- title :
Convertisseur de date hébraïque · aujourd'hui {date hébraïque}. - En haut : le formulaire prérempli avec aujourd'hui, et juste dessous le résultat en grand (il change quand on change un champ,
aria-live), les trois prochaines occurrences, des liens vers yahrzeit, anniversaire, guématria. - Rendu : le formulaire marche sans JavaScript (GET
?d=…&m=…&y=…, page ennoindex) ; le JavaScript ne fait que l'accélérer.
5.4 Paracha — /fr/paracha/berechit/
- title :
Paracha {nom} : lue le {date} · {références}; références, haftara par rite, dates de lecture diaspora et Israël, résumé écrit, lien vers le texte sur Sefaria.BreadcrumbList.
5.5 Tsadik — /fr/hilloulot/{slug}/
- title :
Hiloula de {nom} {année} : {date hébraïque}; monogramme de l'app, dates, tombeau, œuvres, biographie sourcée (celle de l'app).BreadcrumbList.
5.6 Calendrier de l'année — /fr/calendrier/2026/
- La grille de l'app (dimanche → samedi, date hébraïque dans chaque case, allumage du vendredi), une fête par ligne en dessous, export iCal et impression.
BreadcrumbList.
5.7 Outils yahrzeit, bar-mitsva, guématria
- Même schéma que le convertisseur : le formulaire prérempli, le résultat calculé, les règles écrites (décès après le coucher du soleil, Adar en année embolismique), questions fréquentes. Le calculateur de yahrzeit propose « Ajouter à l'app Moed » (lien profond) et un fichier iCal.
5.8 Article — /fr/articles/{slug}/ (maquette : article-allumage-chabbat.html)
- 800 à 1 500 mots, encadré « En bref » en tête, illustration à la largeur du texte (générée et validée, recadrée sur son sujet) ou graphique tiré des calculs, sources précises (traité et page, siman et paragraphe), « À lire ensuite ».
Article+BreadcrumbList;author= l'organisation tant que le relecteur n'est pas désigné, puis une personne avec sa page. - Un article de halakha ne paraît qu'après relecture par le relecteur (à désigner) ; la page affiche alors son nom. D'ici là, la maquette n'affiche aucune mention de relecture.
5.9 Méthode et sources — /fr/methode/ (prérequis du lancement)
- Les formules (NOAA, KosherZmanim), la règle d'altitude et la règle d'arrondi (§6.1), les degrés (16,1°, 11,5°, 8,5°), les coutumes d'allumage par ville et leur source, la comparaison avec Hebcal et Chabad et pourquoi une minute peut différer, les sources halakhiques, le relecteur (à désigner) et le formulaire de signalement.
6. Technique
6.1 Les règles de calcul (une seule fois, pour le site et l'app)
Altitude — la règle de l'app (moed-ios/Sources/Moed/Engine/ZmanimEngine.swift et SolarCalculator.swift) :
le lever et le coucher du soleil sont corrigés de l'altitude de la ville quand elle est positive ; tout ce qui en dérive
aussi (heures proportionnelles du Gaon de Vilna et du Maguen Avraham, hatzot, minha, plag, allumage = coucher − minutes,
Rabbénou Tam = coucher + 72 min). Ce qui se mesure en degrés (aube 16,1°, michéyakir 11,5°, tombée de la nuit 8,5°) se
calcule au niveau de la mer. Le site applique la même règle, avec la même altitude par ville (cities.json de l'app,
puis GeoNames).
- Conséquence à trancher par le propriétaire et le relecteur : en altitude, le coucher est plus tard. À Jérusalem (754 m),
l'allumage du 9 octobre tombe à 17:38 au lieu de 17:34 chez Hebcal et sur les calendriers de la ville, qui comptent les
40 minutes depuis le coucher au niveau de la mer. Quatre minutes plus tard, c'est le sens contraire de la prudence.
Proposition : compter l'allumage depuis le coucher au niveau de la mer, dans l'app et sur le site ensemble ; tant que
ce n'est pas décidé, le site suit l'app.
Arrondi — une seule règle, prudente : ce qui ferme une permission ou commence une interdiction s'arrondit à la minute inférieure ; ce qui ouvre une permission ou termine une interdiction, à la minute supérieure. La même heure peut donc s'arrondir différemment selon son rôle sur la page.
| Vers le bas (plus tôt) | Vers le haut (plus tard) |
|---|---|
| allumage de Chabbat et de fête, fin du Chéma (GRA, MGA), fin de la Tefila, hatzot, chkia dans la liste du jour, début d'un jeûne | aube, michéyakir, netz, minha guedola, minha ketana, plag, tzeit, sortie de Chabbat et de fête, Rabbénou Tam, fin d'un jeûne, « allumer dès » (Hanoukka) |
- L'app tronque aujourd'hui toutes les heures (format système). Elle doit prendre la même règle ; les captures de l'app utilisées par le site sont à refaire après (la capture de l'accueil montre encore 7:54 et 19:57 là où le site dit 7:55 et 19:58).
- Coutume d'allumage par ville : la table de l'app (Jérusalem 40 ; Haïfa, Petah Tikva, Beer-Sheva 30 ; ailleurs 18). Hebcal met 20 minutes par défaut en Israël : le test de parité lui passe les minutes de la ville ; la table entière est à faire relire (relecteur à désigner) avant le lancement.
6.2 Le reste
- Next.js 16 (App Router, React 19, TypeScript, Tailwind v4), un projet
/root/apps/moedcaldéclaré dans Ariane ;moedcal.comen domaine. - Cache : chaque page ville est recalculée par la tâche de 00:01 (heure de la ville, un passage par fuseau) et servie avec
Cache-Control: s-maxage={secondes jusqu'à minuit local}. Cloudflare devant le serveur, avec une règle « Cache Everything » sur le HTML (il ne le garde pas par défaut) et une purge par adresse quand une page est recalculée. Fêtes, parachiot, outils : 24 h. - Calcul : un paquet
moed-engine(les fonctions de l'app, en TypeScript,@hebcal/core+kosher-zmanim), appelé côté serveur ; le navigateur ne reçoit que le résultat. Le délai « dans 1 h 05 » vient d'un petit script (< 3 Ko) qui lit les heures déjà écrites dans la page. - Parité avec l'app : la matrice de validation (
NATIVE_SPEC.md§3) tourne chaque nuit contre le site, avec les règles de §6.1 ; une différence de plus d'une minute bloque la mise en production. - Villes : GeoNames (
cities15000+ toutes les localités d'Israël), altitude et fuseau. - Polices : celles du système d'abord (SF Pro sur Apple), puis Inter, Source Serif 4, Frank Ruhl Libre et Noto Sans Hebrew servies par le site, en sous-ensembles latin et hébreu (les maquettes le font déjà :
mockups/assets/fonts/). Aucun appel à Google Fonts : la construction le vérifie. - Vitesse : HTML rendu au serveur, aucune bibliothèque côté client hors les formulaires ; objectifs LCP < 1,5 s, CLS 0, INP < 100 ms sur téléphone moyen ; images en AVIF/WebP avec dimensions.
- Mode sombre : suit le réglage de l'appareil (
prefers-color-scheme), comme l'app ; clair par défaut. Ambre sombre#FF9F45. - Accessibilité : lien « Aller au contenu », focus visible sur tout ce qui se touche, cibles de 44 px sur téléphone, contraste ≥ 4,5:1 partout (les heures passées restent en gris lisible, seule l'icône s'efface), ambre
#B4500A(5,1:1 sur blanc), aucune information portée par la couleur seule (chaque point de couleur a son symbole),prefers-reduced-motionrespecté, hébreu isolé (<bdi lang="he">) dans les pages de gauche à droite et latin isolé dans les pages hébraïques, flèches retournées en hébreu.
7. Indexation, ouverture et autorité
7.1 Ce que Google reçoit
- Search Console : une propriété de domaine
moedcal.com(DNS), plus une propriété par dossier de langue. - Sitemaps : un index
sitemap.xmlqui renvoie à un fichier par langue et par type, < 10 000 adresses chacun, avecxhtml:linkpour les langues.lastmodexact pour les pages qui changent rarement ; pas delastmodpour les pages ville, qui changent chaque jour. - Bing Webmaster Tools + IndexNow pour les pages qui changent (fêtes de l'année, nouvelles villes).
- robots.txt : bloque seulement la recherche interne et les exports iCal.
?date=et?d=ne sont pas bloqués : ils portentnoindexet une canonique, que Google doit pouvoir lire ; on ne leur fait aucun lien explorable.
7.2 Le seuil d'une ville indexée
Une ville n'est indexée que si sa page a au moins trois blocs que la formule ne produit pas et que Hebcal n'a pas :
1. la coutume d'allumage et de sortie de la ville, avec sa source (rabbinat, consistoire, communauté) ;
2. au moins deux synagogues avec leurs horaires d'office ou leur lien ;
3. un texte écrit sur la communauté, relu par un humain.
Sinon elle reste en noindex et apparaît comme une ligne de la page de son pays (indexée). Le contenu local vient des
partenaires de §7.4 et du relecteur ; il n'est jamais généré.
7.3 Ouverture par étapes, avec des seuils
- Lancement : ≈ 730 pages (§4). On attend 6 à 8 semaines.
- Passage à l'étape suivante (plus de villes, ou les langues de l'étape 2), mesuré par type de page dans Search Console : ≥ 40 % des pages envoyées indexées, « Explorée, actuellement non indexée » < 30 %, et au moins 20 domaines référents.
- Gel : au-dessus de 30 % d'« explorée, non indexée » sur un type de page, on n'ouvre plus rien de ce type et on
repasse en
noindexles pages les plus faibles. - États-Unis et Canada : pages par quartier à communauté (Brooklyn, Crown Heights, Lakewood, Los Angeles…) à l'étape 2, d'abord dix, avec un test d'indexation avant tout élargissement ; pas de pages par code postal avant ce test.
7.4 Le plan d'autorité et de liens (avant la mise en ligne)
- Widget à intégrer pour les synagogues, écoles et communautés : un
<iframe>ou un script qui affiche l'allumage et la sortie de leur ville, avec l'attribution fixe « Horaires : Moed » en lienrel="nofollow". Ancre de marque, jamais un mot-clé : un lien de widget optimisé est du spam de liens pour Google. La valeur vient du trafic et des mentions. - API publique et flux : JSON des horaires par ville, iCal et RSS par ville, gratuits et documentés sur
/widget/, données sous licence ouverte avec attribution. C'est ce qui a donné à Hebcal ses milliers de liens. - Annuaires et partenaires : une liste nominative de 50 organisations (consistoires régionaux, FSJU, communautés locales, centres Chabad, fédérations en Israël et aux États-Unis), un courriel chacune avec la page de sa ville prête et le widget, suivi dans un tableau. Elles fournissent aussi le contenu local du seuil §7.2.
- Contenu à citer : des pages tirées des calculs que la presse reprend (le jour le plus court et le plus long par ville, l'écart de Chabbat entre Tel-Aviv et Reykjavik, l'heure d'allumage dans le Grand Nord), proposées à Times of Israel, Jewish Press, Actualité Juive, Tribune Juive, Hamodia.
- Un relecteur nommé : relecteur à désigner (un rabbin pour la halakha), avec sa page sur le site ; c'est le signal de confiance le plus fort de la niche. Tant qu'il n'est pas désigné, aucune page ne parle de relecture.
- Entité : identifiants Wikidata des fêtes et parachiot dans le glossaire ; mentions sur Reddit, forums et groupes communautaires (trafic et marque, pas de lien suivi). La fiche App Store pointe vers le site.
Objectif : 20 à 50 domaines référents en trois mois, condition du passage à l'étape suivante (§7.3).
8. Production des langues
- Glossaire par langue (avant toute traduction) : 12 mois hébreux, 54 parachiot, 40 fêtes et jeûnes, 25 noms de zmanim, mots de chemin. Français : la table de §13. Hébreu : le propriétaire. Autres : écrit par le modèle, validé par le relecteur natif.
- Gabarits (les phrases de l'interface, ~600 chaînes en ICU MessageFormat) : traduits par Claude avec le glossaire imposé.
- Contrôle automatique à chaque construction, bloquant : toutes les clés et tous les paramètres présents ; glossaire respecté ; formats de date et d'heure de la langue (
Intl, 12 h en anglais), sens d'écriture ; titre ≤ 60, description ≤ 155 ; réciprocité hreflang ; aucun appel à Google Fonts ; capture Playwright d'une page de chaque type à 390 et 1440 px, sans défilement horizontal. - Relecture humaine : tous les gabarits et le glossaire de chaque langue avant son ouverture (décision 7). Le contrôle automatique s'ajoute, il ne remplace pas.
- Articles : écrits en français (propriétaire), traduits et relus pour he et en ; adaptés (pas traduits mot à mot) pour les langues de l'étape 2.
9. Les 30 premiers articles
Classés par intérêt de recherche (estimation : volume de la famille de requêtes × durée de la saison).
| # | Sujet | Requête visée |
|---|---|---|
| 1 | À quelle heure allumer les bougies de Chabbat ? Le calcul expliqué | heure chabbat, candle lighting time |
| 2 | Les fêtes juives 2026-2027 : calendrier complet | fêtes juives 2027, jewish holidays 2027 |
| 3 | Comment allumer la hanoukkia : ordre, bénédictions, heure | comment allumer hanoukka |
| 4 | Comment calculer la date d'un yahrzeit | yahrzeit date, calcul azcara |
| 5 | Pessah 2027 : dates, Seder, ce qu'il faut préparer | pessah 2027 |
| 6 | Roch Hachana 5788 : dates, coutumes, repas | roch hachana 2027 |
| 7 | Yom Kippour : horaires du jeûne et déroulement | kippour 2027 heure |
| 8 | Qu'est-ce que la date hébraïque d'anniversaire, et comment la trouver | anniversaire hébraïque |
| 9 | Bar-mitsva : à quelle date exactement ? | date bar mitsva |
| 10 | La paracha de la semaine : comment on lit la Torah en un an | paracha de la semaine |
| 11 | Les zmanim : les horaires de la journée juive, un par un | zmanim c'est quoi |
| 12 | Fin du Chéma : Gaon de Vilna ou Maguen Avraham ? | fin du chema heure |
| 13 | Les jeûnes de l'année juive : heures de début et de fin | jeûne juif heure |
| 14 | Pourim 2027 : pourquoi en Adar II cette année | pourim 2027 |
| 15 | Chavouot : dates et coutumes | chavouot 2027 |
| 16 | Soukkot : la fête des cabanes, jour par jour | souccot dates |
| 17 | Le compte du Omer : comment et quand compter | compte du omer |
| 18 | Lag Baomer et la hiloula de Rabbi Chimon bar Yohaï | lag baomer 2027 |
| 19 | L'année embolismique : pourquoi deux mois d'Adar | adar 1 adar 2 |
| 20 | La guématria : valeur des lettres hébraïques, avec exemples | guematria |
| 21 | Le calendrier hébraïque : mois, années, et le calcul d'Hillel II | calendrier hébraïque |
| 22 | Roch Hodech : le début du mois juif | roch hodech |
| 23 | Tou Bichvat : le nouvel an des arbres | tou bichvat 2027 |
| 24 | Tichea Beav : le jeûne du 9 Av | 9 av 2027 |
| 25 | La sortie de Chabbat : 8,5° ou Rabbénou Tam ? | sortie chabbat heure |
| 26 | Chabbat dans le Grand Nord : quand le soleil ne se couche pas | shabbat arctique |
| 27 | Le Baba Salé : vie et hiloula | hiloula baba salé |
| 28 | Rabbi Nahman de Breslev et la hiloula d'Ouman | ouman roch hachana |
| 29 | Le Rambam : vie, œuvre, date de hiloula | rambam |
| 30 | Allumer les bougies en voyage : quel horaire suivre | horaire chabbat voyage |
Rythme : deux articles par semaine en français, traduits en he et en dans la semaine ; les sujets saisonniers sont publiés au moins 8 semaines avant la fête.
10. Le lien avec l'app
- Bannière native de Safari sur iPhone :
<meta name="apple-itunes-app" content="app-id=6790553505, app-argument={adresse de la page}">(les maquettes la portent) ; l'app ouvre l'écran correspondant (ville, fête, tsadik) quand elle reçoit l'argument. Ce n'est pas un interstitiel. Rien d'autre ne recouvre la page. - Badge officiel « Télécharger dans l'App Store », fichier d'Apple dans la langue de la page, à deux places seulement : la carte « Ces horaires sur votre iPhone » de chaque page et le bloc de l'app sur l'accueil. Le pied de page n'a qu'un lien texte ; le bouton « Obtenir l'app » de la barre du haut n'existe que sur ordinateur (sur téléphone, la bannière Safari en tient lieu et la place va à la ville et à la langue).
- Android : tant que l'app n'existe pas, le bouton et le badge sont masqués sur Android.
- Liens suivis : chaque lien App Store porte
?ct={place}-{langue}(header,ville,fete,outil,accueil,footer) pour savoir quelles pages amènent des téléchargements.
11. Les risques et ce qu'on fait
| Risque | Ce qu'on fait |
|---|---|
| Pages de villes jugées « passerelles » ou contenu à grande échelle | Seuil de contenu local par ville (§7.2) ; ≈ 210 villes au lancement au lieu de 1 200 × 3 ; ouverture par étapes avec seuils et gel (§7.3) ; aucune page pour une simple variante de mot-clé. |
| Domaine neuf sans liens | Plan d'autorité avant la mise en ligne (§7.4) ; 20 domaines référents au minimum avant d'ouvrir plus. |
| Langues mal traduites | Pas d'ouverture sans relecteur natif de tous les gabarits (décision 7) ; glossaire figé ; contrôle automatique en plus. |
| Heure fausse (un Chabbat allumé en retard) | Règles d'altitude et d'arrondi écrites (§6.1) et publiées (§5.9) ; parité testée chaque nuit ; coutumes par ville relues ; « pour une décision halakhique, consultez votre rabbin » ; formulaire de signalement sur chaque page ville. Point ouvert : l'altitude à Jérusalem (§6.1). |
| Écart visible avec Hebcal ou Chabad | La page Méthode explique chaque minute d'écart (altitude, arrondi, coutume) ; la coutume se règle sur la page. |
| Balisage trompeur | Seulement BreadcrumbList, Article, WebSite (§5) ; aucun Event ni FAQPage. |
| Cache périmé (la page montre hier) | Recalcul à 00:01 heure de la ville et purge ; test qui charge 20 villes réparties sur tous les fuseaux à 00:05 locale et compare la date affichée. |
| Fêtes futures à date incertaine | Aucune : le calendrier hébraïque est fixé ; la page de chaque fête donne les dates de 2020 à 2032 en tableau. |
| Charge du serveur | Pages en cache CDN ; le serveur ne calcule qu'une fois par ville et par jour. |
12. Ordre de construction
- Compte Google Ads pour Keyword Planner ; volumes mesurés ; liste des villes du lancement (§7.2) et des langues (§3).
- Paquet de calcul partagé avec les règles de §6.1 + test de parité (tout dépend de lui). Décision sur l'altitude de l'allumage, dans l'app et le site ensemble.
- Relecteur désigné ; page Méthode ; table des coutumes relue ; contenu local des ≈ 210 villes avec les partenaires (§7.4, point 3).
- Gabarits fr/he/en des pages ville, pays, fête × année, convertisseur, accueil ; widget, API et flux ; sitemaps ; Search Console. Mise en ligne (≈ 730 pages).
- Paracha, calendrier de l'année, tsadikim, yahrzeit, bar-mitsva, guématria, omer. Articles (2 par semaine, saisonniers 8 semaines avant).
- Après 6 à 8 semaines, si les seuils de §7.3 sont tenus : plus de villes, quartiers des États-Unis, langues de l'étape 2.
13. Glossaire français (translittération)
Une seule convention, celle de l'app (moed-ios/DESIGN.md §12), étendue aux parachiot : ch pour ש, h pour ח
('h quand le h se collerait à la consonne d'avant ou finirait le mot : min'ha, Noa'h), kh pour כ sans dagech,
tz pour צ, accent aigu sur le é prononcé.
- Zmanim : Chabbat, Chéma, Tefila, hatzot, minha guedola, minha ketana, plag hamin'ha, chkia, tzeit, netz, michéyakir, Rabbénou Tam, Maguen Avraham, Gaon de Vilna.
- Mois : Tichri, Hechvan, Kislev, Tevet, Chevat, Adar (I, II), Nissan, Iyar, Sivan, Tamouz, Av, Eloul.
- Fêtes : Roch Hachana, Kippour, Soukkot, Simhat Torah, Hanoukka, Tou Bichvat, Pourim, Pessah, Chavouot, Roch Hodech, Issrou Hag ; hiloula / hilloulot (orthographe de l'app : un l au singulier, deux au pluriel).
- Parachiot (début) : Béréchit, Noa'h, Lekh Lekha, Vayéra, Hayé Sarah, Toledot, Vayétzé, Vayichla'h, Vayéchev, Miketz, Vayigach, Vayé'hi.
- Autres : paracha, haftara, yahrzeit, hanoukkia, chamach, tossefet Chabbat, Chabbat Mevarkhim, les Maccabées.