Commit graph

40 commits

Author SHA1 Message Date
d3ce396b20 Merge pull request 'chore(docker): copier prisma/ avant npm ci' (#22) from chore/dockerfile-prisma-copy into main
Merge PR#22: fix Dockerfile prisma copy
2026-05-30 23:25:44 +00:00
Claude Integration
a564373a07 chore(docker): copier prisma/ avant npm ci + dans runner
Le postinstall hook `prisma generate` du package.json a besoin de
prisma/schema.prisma pour s'exécuter. Sans ça, npm ci échoue dès l'étape deps.

Ajoute aussi prisma/ dans l'image runner pour pouvoir exécuter
`prisma migrate deploy` depuis l'app en prod.
2026-05-30 23:25:32 +00:00
800a06afc6 Merge pull request 'chore: sync package-lock.json' (#21) from chore/lockfile-sync into main
Merge PR#21: sync lockfile
2026-05-30 23:22:38 +00:00
Claude Integration
abc3844af2 chore: sync package-lock.json (qs@6.15.2 missing) 2026-05-30 23:22:25 +00:00
b4617545d0 Merge pull request 'feat(plugins): visuels Phase 2 (theme-guyane, landing-hero, landing-sections)' (#19) from feat/plugins-visuals-phase2 into main
Merge PR#19: plugins visuels Phase 2
2026-05-30 23:19:42 +00:00
Claude Integration
d19701e275 feat(plugins-visuels): theme-guyane + landing-hero + landing-sections
Phase 2 visuals — la page d'accueil prend vie via 3 plugins activables :

- theme-guyane : palette tropicale (vert canopée, eau Maroni, ocre latérite,
  bois karbé, blanc cassé), tokens CSS, typographie display Cormorant Garamond,
  gradient ambient discret. Activé via body[data-theme=guyane].

- landing-hero : section plein écran avec illustration vectorielle SVG (carbet
  sur pilotis au crépuscule + fleuve + jungle), claim 'Le karbé qui dort vous
  attend', double CTA Découvrir / Proposer. Fallback = hero minimaliste actuel.

- landing-sections : 5 sections en cascade — 2 expériences (route+fleuve vs
  expédition fleuve), Comment ça marche (3 étapes), CE (registre coop sans
  commission), Témoignages (3 stubs), Footer riche avec navigation.

Illustrations 100% SVG inline (pas de dépendance image externe). Quand le
plugin image-gallery-seed sera activé (Phase 2.4), les photos remplaceront
progressivement les SVG. Aucune coupure sur le rendu actuel : tous les plugins
visuels sont disabled par défaut, le site garde son look minimaliste tant que
l'admin ne les a pas activés depuis /admin/plugins.
2026-05-30 23:19:24 +00:00
4454f7331d Merge pull request 'feat(plugins): foundation système Plugin Karbé' (#18) from feat/plugin-foundation into main
Merge PR#18: plugin foundation
2026-05-30 22:17:27 +00:00
Claude Integration
62cc464738 feat(plugins): foundation système Plugin Karbé
- Modèle Prisma Plugin (key, name, description, category, version, enabled,
  config JSONB, migrationsApplied, timestamps) + migration SQL
- PluginRegistry (src/lib/plugins/registry.ts) avec 12 plugins déclarés :
  visuels (theme-guyane, landing-hero, landing-sections, image-gallery-seed,
  demo-carbets-seed), métier (access-type, seasonality, pirogue-providers,
  min-stay), contenus (content-pages, legal-pages), i18n (i18n-fr-en)
- Server helpers (server.ts) : sync, isEnabled, getEnabledKeys, toggle avec
  hooks onEnable/onDisable, updateConfig, cache 5s
- Client bridge (client.tsx) : PluginProvider + useIsPluginEnabled
- Composant <IfPluginEnabled plugin=... fallback=...>
- Guard requirePluginOr404 pour pages et routes
- Page admin /admin/plugins avec table toggle par catégorie + édition config
- Route PATCH /api/admin/plugins/[key] + GET
- Layout async qui sync registry + passe enabledKeys au PluginProvider

Tous plugins en enabled=false par défaut, activation pilotée depuis l'admin.
2026-05-30 22:17:10 +00:00
d7de43a70e Merge pull request 'SYS-19: Compléter docker-compose.prod.yml avec Postgres et MinIO co-déployés' (#17) from feat/sys-19-prod-compose-postgres-minio into main
Merge PR#17: postgres + minio co-déployés (SYS-19)
2026-05-30 18:39:12 +00:00
6898649898 feat(prod): co-deploy postgres and minio in production compose 2026-05-30 18:36:38 +00:00
b8d14d8f9d Merge pull request 'SYS-18 Déployer Karbé sur karbe.cosmolan.fr (MVP, Stripe TEST)' (#16) from feat/sys-18-deploy-karbe-mvp-stripe-test into main
Merge PR#16: deployment stack (Dockerfile + Caddy + .env). À compléter avec Postgres+MinIO co-déployés via SYS-19.
2026-05-30 18:35:07 +00:00
c9be24a969 SYS-18: add production deployment stack for karbe.cosmolan.fr (Stripe test)
- enable Next.js standalone output and add Docker/Caddy production stack
- add production env template and deployment runbook
- add healthcheck endpoint for container supervision
- fix existing lint/type blockers discovered during validation

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-30 18:01:56 +00:00
0a366c65db Merge pull request 'SYS-17 Ajouter lastBookedAt au modèle Carbet + endpoint' (#15) from feat/carbet-last-booked into main
Merge PR#15: lastBookedAt + endpoint (SYS-17, test autonomie v3)
2026-05-30 17:55:18 +00:00
fcc2749d1d feat(carbet): add lastBookedAt and endpoint 2026-05-30 17:52:41 +00:00
8d36f7008f Avis & notes — SYS-8 (#12)
Closes SYS-8.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-30 15:12:52 +00:00
Karbé Frontend
7515981336 feat(reviews): avis & notes carbet (SYS-8)
- Lib reviews: constants/types (client-safe) + DB helpers (server-only)
- API POST /api/bookings/[bookingId]/review : avis locataire après séjour COMPLETED
- API POST /api/reviews/[reviewId]/response : réponse loueur
- API GET /api/carbets/[carbetId]/reviews : liste + stats agrégées
- Fiche carbet : note moyenne + nombre d'avis + liste avec réponses loueur
- Carte carbet : étoiles + note moyenne + compteur
- /mes-reservations : formulaire d'avis pour les séjours terminés du locataire
2026-05-30 15:08:55 +00:00
f0d6cdf46c Merge pull request 'feat(payment): intégration Stripe' (#11) from feat/payment-stripe into main
Merge PR#11: paiement Stripe
2026-05-30 15:01:11 +00:00
Claude Integration
74f39293cc feat(payment): intégration Stripe (subscription loueur + booking checkout + webhook) 2026-05-30 15:00:21 +00:00
eb398fe3f5 Merge pull request 'Réservation : API bookings + availability (récup workspace Backend)' (#10) from feat/booking into main
Merge PR#10: réservation (booking + availability)
2026-05-30 14:43:48 +00:00
Claude Integration
0de034022a feat(booking): API réservation + availability + lib métier
Récupéré du workspace Backend (3 fichiers, 406 lignes) :
- src/lib/booking.ts : logique métier réservation
- src/app/api/bookings/route.ts : POST/GET bookings
- src/app/api/carbets/[carbetId]/availability/route.ts : calendrier dispo

Le schéma Booking/Availability était déjà dans main.
2026-05-30 14:42:29 +00:00
9f3eda8bb4 Merge pull request 'fix(build): app global-error fallback pour Next 16 prerender' (#9) from fix/sys-12-global-error-v2 into main
Merge fix Next 16 global-error fallback
2026-05-30 10:50:39 +00:00
6985396db5 fix(build): add app global-error fallback for Next 16 prerender 2026-05-30 04:42:21 +00:00
ba0494611b Carbets publics — recherche + fiche SSR (SYS-5) (#8)
Implémente SYS-5 : page /carbets (recherche SSR + filtres river/dates/capacité) et /carbets/[slug] (fiche SSR avec generateMetadata OG/Twitter, galerie, équipements, accès), plus SEO sitewide (robots.ts, sitemap.xml, metadataBase, title.template).

Reviewed-by: Karbé Architect <karbe-architect@cosmolan.fr>
2026-05-29 22:28:29 +00:00
Karbé Architect
c2df6722f2 feat(carbets): public search + carbet detail page (SSR/SEO)
Implémente SYS-5 : la marketplace publique pour découvrir les carbets
fluviaux publiés par les hôtes.

- /carbets : page de recherche server-side avec filtres GET
  (fleuve, dates de séjour, capacité min.), grille de résultats
  avec photo de couverture, fleuve, capacité, durée pirogue
- /carbets/[slug] : fiche carbet SSR
  - generateMetadata (title/description + OpenGraph/Twitter cards)
  - galerie médias (photo couverture + vignettes vidéo/photo)
  - description, équipements (catalogue), accès, coords GPS,
    capacité, prénom de l'hôte
- robots.ts + sitemap.xml (incluant les carbets publiés)
- metadataBase / title.template au niveau du root layout, OG par
  défaut Karbé
- Lien "Découvrir les carbets" sur la home
- Helpers partagés : lib/carbet-search.ts (parse filters + query),
  lib/carbet-public.ts (fetch SSR mémoïsé via React cache),
  lib/format.ts (durée pirogue, troncature, coords)
- Nouvelle variable d'env NEXT_PUBLIC_SITE_URL (canonical/OG/sitemap)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 22:24:25 +00:00
3567eb975b Merge pull request 'CRUD Carbet (propriétaire) + pages connexion/espace-hote' (#7) from feat/owner-carbet-crud into main
Merge PR#7: CRUD Carbet + interface propriétaire
2026-05-29 22:14:58 +00:00
d5d2ad2228 Merge main into feat/owner-carbet-crud (integrate SYS-2 schema + SYS-3 auth)
main now contains the Prisma schema (SYS-2) and NextAuth (SYS-3) that the
owner carbet CRUD depends on. Integrating them so the branch compiles and
the PR is cleanly mergeable.

- package.json: union of S3 SDK (@aws-sdk/client-s3) + auth deps.
- No source conflicts; espace-hote "Gérer mes carbets" link already in main.
- Verified: tsc --noEmit OK, next build OK (all carbet + auth routes compile).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 21:33:57 +00:00
4f0b434f70 Merge pull request 'Auth multi-rôles (NextAuth) — sur base schéma propre' (#6) from feat/auth into main
Merge PR#6: auth multi-rôles NextAuth
2026-05-29 21:26:32 +00:00
Claude Integration
5cb4f8f898 merge main: auth NextAuth sur base schéma propre 2026-05-29 21:20:55 +00:00
b09886529c Merge pull request 'feat: schéma Prisma complet Karbé (SYS-2)' (#5) from feat/schema-prisma into main
Merge PR#5: schéma Prisma complet (fondation MVP)
2026-05-29 20:38:05 +00:00
Claude Integration
175a0e1751 merge main into feat/schema-prisma: schéma complet + README de main 2026-05-29 19:11:54 +00:00
54f406053b feat(prisma): add full Karbé schema and initial migration
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 16:59:35 +00:00
e464b86cb2 chore: scaffold Next.js + Prisma + Tailwind
Initialise le projet Karbé :
- Next.js 16 (App Router, TypeScript) + Tailwind CSS v4 + ESLint
- Prisma avec datasource PostgreSQL, schema minimal et client généré
  dans src/generated/prisma (postinstall: prisma generate)
- Page d'accueil placeholder (titre + mission)
- .env.example (DATABASE_URL, NEXTAUTH_SECRET)
- README avec instructions de setup

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 16:59:11 +00:00
88a7d01d55 feat(auth): add multi-role NextAuth with role guards
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 10:46:54 +00:00
e6a9bb7d64 chore: scaffold Next.js + Prisma + Tailwind
Initialise le projet Karbé :
- Next.js 16 (App Router, TypeScript) + Tailwind CSS v4 + ESLint
- Prisma avec datasource PostgreSQL, schema minimal et client généré
  dans src/generated/prisma (postinstall: prisma generate)
- Page d'accueil placeholder (titre + mission)
- .env.example (DATABASE_URL, NEXTAUTH_SECRET)
- README avec instructions de setup

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 10:45:59 +00:00
ae3f3f00d2 Merge pull request 'docs: README, roadmap produit et doc d'architecture (SYS-10)' (#2) from feat/docs into main 2026-05-29 05:00:32 +00:00
b9bfc5ee32 feat(espace-hote): CRUD carbet propriétaire + upload médias S3/MinIO
Interface propriétaire sous /espace-hote/carbets :
- Liste, création, édition et suppression de carbets (formulaire complet :
  présentation, localisation, accès pirogue, commodités).
- Upload photos/vidéos vers S3/MinIO (route handler multipart), réordonnancement
  et suppression des médias, photo de couverture.
- Statut de publication (brouillon / publié / archivé) avec garde
  « au moins un média avant publication ».

Réutilise le schéma Prisma (SYS-2) et l'authentification NextAuth (SYS-3) :
gating via requireRole([OWNER, ADMIN]) et contrôle de propriété sur chaque
mutation. Stockage objet configurable par variables S3_* (compatible MinIO).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 04:58:12 +00:00
f9310c380f docs: README, roadmap produit et doc d'architecture
- README enrichi (présentation Karbé, fonctionnalités, setup dev, env, structure, conventions Git)
- ROADMAP.md : phases MVP -> V2 -> V3
- docs/ARCHITECTURE.md : stack, modèle de données (Prisma) et flux principaux

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 04:42:28 +00:00
9f5cdb6c50 Merge pull request 'Scaffold initial : Next.js + Prisma + Tailwind' (#1) from feat/scaffold into main
Merge PR #1: scaffold initial Karbé
2026-05-29 04:33:16 +00:00
2764137d2b chore: scaffold Next.js + Prisma + Tailwind
Initialise le projet Karbé :
- Next.js 16 (App Router, TypeScript) + Tailwind CSS v4 + ESLint
- Prisma avec datasource PostgreSQL, schema minimal et client généré
  dans src/generated/prisma (postinstall: prisma generate)
- Page d'accueil placeholder (titre + mission)
- .env.example (DATABASE_URL, NEXTAUTH_SECRET)
- README avec instructions de setup

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-29 04:12:59 +00:00
9fbf95f3cc Initial commit 2026-05-29 03:57:34 +00:00