尚未检测到更新。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.