CookMaster est une application de gestion de recettes de cuisine. Les utilisateurs peuvent créer, modifier et supprimer des recettes, ajouter des ingrédients et consulter les recettes des autres utilisateurs.
L'application est construite avec React pour le front-end, NestJS pour le back-end et Apollo Client pour la gestion des données GraphQL.
- Simple authentification Utilisateur : Connexion et inscription des utilisateurs avec leur email et nom.
- Gestion des Recettes : Création, modification et suppression de recettes.
- Gestion des Ingrédients : Ajout, modification et suppression d'ingrédients dans les recettes.
- Affichage des Recettes : Affichage des recettes de l'utilisateur et des autres utilisateurs avec leurs détails.
- Utilisation du Cache : Utilisation d'Apollo Client pour gérer le cache des données et améliorer la performance de l'application.
- Node.js (>= 16.x)
- PostgreSQL
Cloner le repo :
git clone https://github.com/mardev60/CookMaster.git
cd CookMasterInstallez les dépendances pour le back-end et le front-end :
cd server
npm install
cd ../client
npm installConfigurez votre base de données PostgreSQL et mettez à jour le fichier .env dans le dossier server avec vos informations de connexion :
DATABASE_URL=postgresql://USER:PASSWORD@HOST:PORT/DATABASE
Mettez à jour votre schéma Prisma et synchronisez votre base de données :
cd server
npx prisma migrate dev --name initLancez le serveur back-end :
npm run start:devLancez le client front-end :
cd ../client
npm run dev- Accédez à l'application via http://localhost:5173.
- Inscrivez-vous avec un nouvel utilisateur ou connectez-vous avec un utilisateur existant.
- Ajoutez de nouvelles recettes, modifiez ou supprimez des recettes existantes.
- Ajoutez des ingrédients à vos recettes.
- Consultez les recettes des autres utilisateurs.
- Front-end : React, Vite, Material UI, Apollo Client
- Back-end : NestJS, GraphQL, Prisma, PostgreSQL
- Outils : TypeScript, ESLint, Prettier
client/
├── src/
│ ├── components/
│ │ ├── Layout.tsx
│ │ ├── Home.tsx
│ │ ├── Login.tsx
│ │ ├── Register.tsx
│ │ ├── CreateRecipe.tsx
│ │ ├── Recipe.tsx
│ │ ├── User.tsx
│ │ └── Users.tsx
│ ├── assets/
│ │ └── logo.png
│ ├── App.tsx
│ ├── main.tsx
│ └── index.css
└── package.json
server/
├── src/
│ ├── modules/
│ │ ├── users/
│ │ │ ├── users.module.ts
│ │ │ ├── users.service.ts
│ │ │ ├── users.resolver.ts
│ │ │ ├── dto/
│ │ │ │ ├── create-user.input.ts
│ │ │ │ └── update-user.input.ts
│ │ ├── recipes/
│ │ │ ├── recipes.module.ts
│ │ │ ├── recipes.service.ts
│ │ │ ├── recipes.resolver.ts
│ │ │ ├── dto/
│ │ │ │ ├── create-recipe.input.ts
│ │ │ │ └── update-recipe.input.ts
│ │ ├── ingredients/
│ │ │ ├── ingredients.module.ts
│ │ │ ├── ingredients.service.ts
│ │ │ ├── ingredients.resolver.ts
│ │ │ ├── dto/
│ │ │ │ ├── create-ingredient.input.ts
│ │ │ │ └── update-ingredient.input.ts
│ ├── prisma/
│ │ └── prisma.service.ts
│ ├── app.module.ts
│ ├── main.ts
│ └── .env
├── prisma/
│ ├── schema.prisma
└── package.json
Les contributions sont les bienvenues !
Si vous souhaitez contribuer, veuillez créer une branche de fonctionnalité, effectuer vos modifications et soumettre une pull request.
- Forkez le projet
- Créez votre branche de fonctionnalité (git checkout -b feature/AmazingFeature)
- Committez vos modifications (git commit -m 'Add some AmazingFeature')
- Pushez vers la branche (git push origin feature/AmazingFeature)
- Ouvrez une pull request
