- 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>
190 lines
6.8 KiB
Markdown
190 lines
6.8 KiB
Markdown
# Karbé
|
|
|
|
> Marketplace de location de **carbets fluviaux** de Guyane.
|
|
|
|
Karbé connecte les voyageurs et les hôtes pour des séjours authentiques le long
|
|
des fleuves de Guyane, au cœur de la forêt amazonienne. La plateforme permet aux
|
|
propriétaires de publier leurs carbets, et aux voyageurs de rechercher, réserver
|
|
et payer leur séjour en ligne.
|
|
|
|
## Sommaire
|
|
|
|
- [Présentation](#présentation)
|
|
- [Fonctionnalités](#fonctionnalités)
|
|
- [Stack technique](#stack-technique)
|
|
- [Prérequis](#prérequis)
|
|
- [Installation](#installation)
|
|
- [Variables d'environnement](#variables-denvironnement)
|
|
- [Développement](#développement)
|
|
- [Base de données (Prisma)](#base-de-données-prisma)
|
|
- [Scripts npm](#scripts-npm)
|
|
- [Structure du projet](#structure-du-projet)
|
|
- [Conventions Git & contribution](#conventions-git--contribution)
|
|
- [Documentation complémentaire](#documentation-complémentaire)
|
|
- [Licence](#licence)
|
|
|
|
## Présentation
|
|
|
|
Le **carbet** est l'habitat traditionnel amazonien : un abri ouvert, souvent en
|
|
bois, installé au bord des fleuves. En Guyane, les carbets fluviaux sont un mode
|
|
d'hébergement prisé pour découvrir la forêt, naviguer sur les fleuves (Maroni,
|
|
Oyapock, Approuague…) et vivre une expérience proche de la nature.
|
|
|
|
Karbé est une **marketplace à deux faces** :
|
|
|
|
- **Voyageurs** — recherchent un carbet, consultent les disponibilités, réservent
|
|
et paient en ligne, échangent avec l'hôte et laissent un avis après le séjour.
|
|
- **Hôtes (loueurs)** — créent leur profil, publient et gèrent leurs carbets
|
|
(photos, tarifs, calendrier de disponibilité) et suivent leurs réservations.
|
|
|
|
La plateforme prévoit également une dimension **B2B** (créneaux réservés aux
|
|
comités d'entreprise) et un modèle d'**abonnement loueur**. Voir la
|
|
[roadmap produit](./ROADMAP.md) pour le détail des phases.
|
|
|
|
## Fonctionnalités
|
|
|
|
| Domaine | Description |
|
|
| --- | --- |
|
|
| Comptes multi-rôles | Voyageur, hôte et administrateur (authentification NextAuth). |
|
|
| Fiches carbet | Titre, description, fleuve, localité, géolocalisation, capacité, équipements, photos. |
|
|
| Recherche publique | Listing et fiche carbet rendus côté serveur (SSR) pour le SEO. |
|
|
| Disponibilités & tarifs | Calendrier par date, prix personnalisés, nuits minimum. |
|
|
| Réservation | Sélection de dates, calcul du prix (nuitée, ménage, frais de service). |
|
|
| Paiement | Encaissement via Stripe (réservation + abonnement loueur). |
|
|
| Messagerie | Conversation par réservation entre voyageur et hôte. |
|
|
| Avis & notes | Évaluation du séjour après le check-out. |
|
|
| Conformité | CGV, RGPD, mentions légales. |
|
|
|
|
> Toutes ces fonctionnalités ne sont pas encore livrées : voir la
|
|
> [roadmap](./ROADMAP.md) pour l'état d'avancement par phase.
|
|
|
|
## Stack technique
|
|
|
|
- **[Next.js 16](https://nextjs.org/)** — App Router, TypeScript, rendu serveur.
|
|
- **[React 19](https://react.dev/)**.
|
|
- **[Tailwind CSS v4](https://tailwindcss.com/)** — styles utilitaires.
|
|
- **[Prisma 7](https://www.prisma.io/)** — ORM, datasource **PostgreSQL**. Le
|
|
client est généré dans `src/generated/prisma`.
|
|
- **[NextAuth](https://authjs.dev/)** — authentification multi-rôles.
|
|
- **[Stripe](https://stripe.com/)** — paiements (prévu).
|
|
|
|
Pour les choix d'architecture et les flux détaillés, voir
|
|
[`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md).
|
|
|
|
> **Note :** ce dépôt utilise une version de Next.js qui peut différer de la
|
|
> documentation publique. En cas de doute sur une API, consultez la
|
|
> documentation embarquée dans `node_modules/next/dist/docs/`.
|
|
|
|
## Prérequis
|
|
|
|
- **Node.js >= 20**
|
|
- **npm** (fourni avec Node.js)
|
|
- Une base de données **PostgreSQL** accessible (locale ou distante)
|
|
|
|
## Installation
|
|
|
|
1. Installer les dépendances :
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
Le script `postinstall` génère automatiquement le client Prisma dans
|
|
`src/generated/prisma`.
|
|
|
|
2. Configurer les variables d'environnement :
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Renseignez ensuite les valeurs dans `.env` (voir ci-dessous).
|
|
|
|
3. Préparer la base de données :
|
|
|
|
```bash
|
|
npx prisma migrate dev
|
|
```
|
|
|
|
## Variables d'environnement
|
|
|
|
Le fichier [`.env.example`](./.env.example) liste les variables attendues.
|
|
Copiez-le en `.env` et renseignez vos valeurs.
|
|
|
|
| Variable | Rôle |
|
|
| --- | --- |
|
|
| `DATABASE_URL` | Chaîne de connexion PostgreSQL utilisée par Prisma. |
|
|
| `AUTH_SECRET` / `NEXTAUTH_SECRET` | Secret de signature des sessions NextAuth. Générer avec `openssl rand -base64 32`. |
|
|
|
|
> Le fichier `.env` ne doit **jamais** être commité (il est ignoré par Git).
|
|
> Au fur et à mesure de l'ajout des intégrations (ex. Stripe), de nouvelles
|
|
> variables seront ajoutées à `.env.example`.
|
|
|
|
## Développement
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
L'application est disponible sur [http://localhost:3000](http://localhost:3000).
|
|
|
|
## Base de données (Prisma)
|
|
|
|
Le schéma vit dans [`prisma/schema.prisma`](./prisma/schema.prisma). Il décrit
|
|
les entités de Karbé (utilisateurs, carbets, réservations, paiements, avis,
|
|
messagerie…). Le modèle de données est détaillé dans
|
|
[`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md#modèle-de-données).
|
|
|
|
```bash
|
|
# Régénérer le client Prisma après une modification du schéma
|
|
npx prisma generate
|
|
|
|
# Créer / appliquer une migration en développement
|
|
npx prisma migrate dev --name <nom_de_la_migration>
|
|
|
|
# Inspecter la base via une interface web
|
|
npx prisma studio
|
|
```
|
|
|
|
## Scripts npm
|
|
|
|
| Script | Description |
|
|
| --- | --- |
|
|
| `npm run dev` | Démarre le serveur de développement. |
|
|
| `npm run build` | Build de production. |
|
|
| `npm run start` | Démarre le serveur de production. |
|
|
| `npm run lint` | Lance ESLint. |
|
|
|
|
## Structure du projet
|
|
|
|
```text
|
|
karbe/
|
|
├── prisma/
|
|
│ ├── schema.prisma # Modèle de données (entités Karbé)
|
|
│ └── migrations/ # Migrations SQL générées par Prisma
|
|
├── public/ # Fichiers statiques
|
|
├── src/
|
|
│ ├── app/ # Routes App Router (pages, layouts, route handlers)
|
|
│ └── generated/prisma/ # Client Prisma généré (ne pas éditer à la main)
|
|
├── docs/
|
|
│ └── ARCHITECTURE.md # Documentation d'architecture
|
|
├── ROADMAP.md # Roadmap produit (MVP → V2 → V3)
|
|
└── README.md
|
|
```
|
|
|
|
## Conventions Git & contribution
|
|
|
|
- La branche **`main` est protégée** : aucun commit direct.
|
|
- Travaillez sur une branche dédiée nommée **`feat/<sujet>`** (ou `fix/<sujet>`).
|
|
- Ouvrez une **Pull Request vers `main`** pour toute modification.
|
|
- Avant d'ouvrir la PR, vérifiez que `npm run lint` et `npm run build` passent.
|
|
|
|
## Documentation complémentaire
|
|
|
|
- [Roadmap produit](./ROADMAP.md) — phases MVP → V2 → V3.
|
|
- [Documentation d'architecture](./docs/ARCHITECTURE.md) — stack, modèle de
|
|
données et flux principaux.
|
|
|
|
## Licence
|
|
|
|
Voir le fichier [`LICENSE`](./LICENSE).
|