Application de planification de repas
Fonctionnalites • Installation • Utilisation • API • Contribution
7Pret est une application fullstack de planification de repas permettant aux utilisateurs de parcourir un catalogue de recettes, creer leurs propres recettes personnalisees et organiser leur planning de repas pour la semaine.
- Authentification securisee - Inscription et connexion avec email/mot de passe
- Catalogue de recettes - Parcourir et rechercher des recettes certifiees
- Recettes personnalisees - Creer, modifier et supprimer vos propres recettes
- Planning hebdomadaire - Organiser vos repas par jour et par creneau (dejeuner/diner)
- Liste de courses - Generation automatique basee sur votre planning
- Interface responsive - Fonctionne sur desktop et mobile
| Technologie | Description |
|---|---|
| React 19 | Bibliotheque UI |
| React Router 7 | Routing client |
| Vite 7 | Build tool & dev server |
| TypeScript | Typage statique |
| Technologie | Description |
|---|---|
| Hono | Framework web ultrarapide |
| Prisma | ORM & migrations |
| PostgreSQL | Base de donnees |
| Better Auth | Authentification |
| Zod | Validation de schemas |
| Technologie | Description |
|---|---|
| Bun | Runtime & package manager |
| Biome | Linter & formatter |
| Lefthook | Git hooks |
| GitHub Actions | CI/CD |
- Bun >= 1.0
- PostgreSQL >= 14
- Node.js >= 20 (pour certains outils)
git clone https://github.com/devZenta/7Pret.git
cd 7Pretbun installCopier le fichier d'exemple et renseigner les valeurs :
cp .env.example .env# Base de donnees PostgreSQL
DATABASE_URL="postgresql://user:password@localhost:5432/7pret?schema=public"
# Better Auth
BETTER_AUTH_SECRET="votre-secret-genere-aleatoirement"
BETTER_AUTH_URL="http://localhost:5173"Tip : Generez un secret securise avec
openssl rand -base64 32
# Generer le client Prisma
bunx --bun prisma generate
# (Optionnel) Peupler avec des donnees de test
bunx prisma db seedLance le serveur frontend (Vite) et backend (Hono) simultanement :
bun dev- Frontend : http://localhost:5173
- Backend API : http://localhost:3000
- Swagger UI : http://localhost:3000/swagger
# Build
bun run build
# Start
bun run start| Commande | Description |
|---|---|
bun run dev |
Lance le mode developpement (client + serveur) |
bun run dev:client |
Lance uniquement le frontend Vite |
bun run dev:server |
Lance uniquement le backend Hono |
bun run build |
Build de production |
bun run start |
Demarre le serveur de production |
bun run format |
Formate le code avec Biome |
bun run lint |
Verifie le code avec Biome |
bun run typecheck |
Verifie les types TypeScript |
bun run check |
Lint + format check |
L'API REST est documentee avec OpenAPI/Swagger. En mode developpement, accedez a :
http://localhost:3000/swagger
| Methode | Endpoint | Description |
|---|---|---|
POST |
/api/auth/sign-up |
Inscription |
POST |
/api/auth/sign-in |
Connexion |
GET |
/api/recipes |
Liste des recettes |
GET |
/api/recipes/:id |
Detail d'une recette |
GET |
/api/custom-recipes |
Recettes personnalisees |
POST |
/api/custom-recipes |
Creer une recette |
PUT |
/api/custom-recipes/:id |
Modifier une recette |
DELETE |
/api/custom-recipes/:id |
Supprimer une recette |
GET |
/api/planning |
Planning de l'utilisateur |
POST |
/api/planning |
Ajouter au planning |
DELETE |
/api/planning/:id |
Supprimer du planning |
7Pret/
├── .github/
│ └── workflows/ # GitHub Actions CI/CD
├── prisma/
│ ├── migrations/ # Migrations de base de donnees
│ ├── schema.prisma # Schema de la base de donnees
│ └── seed.ts # Script de seed
├── server/
│ ├── middleware/ # Middleware d'authentification
│ ├── routes/ # Routes API (auth, recipes, planning)
│ ├── schemas/ # Schemas Zod pour validation
│ ├── services/ # Logique metier
│ └── index.ts # Point d'entree du serveur
├── src/
│ ├── components/ # Composants React reutilisables
│ ├── lib/ # Utilitaires (auth, api-client, prisma)
│ ├── pages/ # Pages de l'application
│ │ ├── Catalogue/ # Catalogue de recettes
│ │ ├── CreateRecipe/ # Creation de recette
│ │ ├── Home/ # Page d'accueil
│ │ ├── Login/ # Connexion
│ │ ├── Planning/ # Planning hebdomadaire
│ │ ├── Settings/ # Parametres utilisateur
│ │ ├── ShoppingList/ # Liste de courses
│ │ └── Signup/ # Inscription
│ ├── App.tsx # Router principal
│ └── main.tsx # Point d'entree React
├── biome.json # Configuration Biome
├── lefthook.yml # Configuration Git hooks
├── package.json
├── tsconfig.json
└── vite.config.ts
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ User │────<│ Session │ │ Recipe │
├─────────────┤ ├─────────────┤ ├──────────────┤
│ id │ │ id │ │ id │
│ name │ │ token │ │ name │
│ email │ │ expiresAt │ │ type │
│ image │ │ userId (FK) │ │ cuisine │
│ createdAt │ └─────────────┘ │ difficulty │
│ updatedAt │ │ ingredients │
└─────────────┘ │ steps │
│ └──────────────┘
│
├────<┌───────────────┐
│ │ CustomRecipe │
│ ├───────────────┤
│ │ id │
│ │ userId (FK) │
│ │ name │
│ │ ingredients │
│ │ steps │
│ └───────────────┘
│
└────<┌───────────────┐
│ MealPlanning │
├───────────────┤
│ id │
│ userId (FK) │
│ date │
│ slot │
│ recipeId │
│ source │
└───────────────┘
Le projet est configure pour un deploiement sur Railway :
# nixpacks.toml
[phases.build]
cmds = ["bun run build"]
[start]
cmd = "bun run start"DATABASE_URL- URL de connexion PostgreSQLBETTER_AUTH_SECRET- Secret pour les sessionsBETTER_AUTH_URL- URL de l'application deployee
Les contributions sont les bienvenues ! Merci de suivre ces etapes :
- Fork le projet
- Creer une branche (
git checkout -b feat/ma-fonctionnalite) - Commit avec Conventional Commits (
git commit -m "feat: ajout de ma fonctionnalite") - Push la branche (
git push origin feat/ma-fonctionnalite) - Ouvrir une Pull Request
Le projet utilise les Conventional Commits :
feat:- Nouvelle fonctionnalitefix:- Correction de bugdocs:- Documentationstyle:- Formatagerefactor:- Refactorisationtest:- Testschore:- Maintenance
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de details.