尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Création d'un ebook personnalisé pour nos touristes préférés
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Ebook interactif + web-app : chapitres éditoriaux, carte MapLibre, filtres (dont Gratuit / FREE), fiches lieux, générateur d'itinéraire express, carnet de favoris partageable et back-office admin.
Stack : Next.js 15 (App Router, React 19, Server Actions) · Supabase (@supabase/ssr, Auth, Storage, RLS) ·
Tailwind CSS v4 · framer-motion · MapLibre GL (fonds CARTO, sans clé).
npm install (le postinstall copie le worker MapLibre dans public/maplibre/).
Copier .env.example en .env.local et renseigner les clés Supabase.
Dans Supabase → SQL Editor, exécuter supabase/schema.sql
(tables, enums, RLS, buckets places-images / gpx-tracks, trigger profiles, données de départ).
Supabase → Authentication → URL Configuration : ajouter http://localhost:3000/auth/callback
(et l'URL Vercel en production) aux Redirect URLs.
npm run dev, créez un compte sur /connexion, puis promouvez-le administrateur :
update public.profiles set role = 'ADMIN' where email = '[email protected]';
| Route | Rôle |
|---|---|
/ | Couverture, sommaire bento, itinéraire express, coups de cœur |
/explorer | Filtres + bascule Liste / Carte synchronisée (état dans l'URL : ?category=plage&price=free&view=map) |
/chapitres/[slug] | Chapitre de l'ebook |
/lieux/[slug] | Fiche éditoriale : carrousel, Conseil du Local, audio, Waze / Google Maps, GPX |
/favoris | Carnet personnel sur carte + partage, export GPX, impression PDF |
/carnet/[id] | Itinéraire / carnet partagé (public ou propriétaire, via RLS) |
/compte | Profil, itinéraires sauvegardés |
/admin | Back-office (rôle ADMIN) : spots, chapitres, uploads Storage, placement sur carte |
Ajoutées à la main depuis l'admin. Ensuite, pour les renommer (<slug>-01-<empreinte>.webp) et les compresser
(requiert SUPABASE_SERVICE_ROLE_KEY dans .env.local, jamais commitée) :
npm run optimize:photos # simulation
npm run optimize:photos -- --apply # les anciens fichiers sont archivés, pas supprimés
npx tsx scripts/restore-photos.ts # liste les sauvegardes, puis --stamp=<horodatage> --apply
Les crédits (image_credits) des photos Wikimedia restantes sont toujours affichés sur la fiche.
Importer le dépôt, définir NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY et
NEXT_PUBLIC_SITE_URL (URL de production), puis déployer.