Skip to content

yabafre/yuniq_one_prisma

Repository files navigation

yuniq-one

  • 🎉 Introduction
  • ===============
  • Le but de ce projet est de fournir un point de départ pour les développeurs qui cherchent à construire leur propre boutique en ligne ou à explorer ces technologies.
  • 🔧 Features

Vue Vite Node.js Express Prisma Multer Pina Stripe
  • 📦 Project setup

  • ===================

  • npm install

  • Compile and Hot-Reload for Development

  • npm run dev

  • Compile and Minify for Production

  • npm run build

  • 🌐 Load the server on https (SSL) or local tunnel (ngrok)

  • ========================================================

  • SSL HTTPS

    • run mkcert -install to install the certificate authority
    • run mkcert localhost to generate a certificate for localhost
    • copy the generated files localhost.pem and localhost-key.pem in the server/ssl directory
    • run npm run dev to start the server
  • NGROK

    • install Ngrok on your computer
    • run ngrok http 3000 to create a tunnel to your local server
  • 🔑 Authentication

  • ======================

  • The API does not require authentication to access public data, but it requires authentication to access private data.

  • The API uses JSON Web Tokens (JWT) for authentication.

    • POST /api/auth/register: Register a new user.
    • POST /api/auth/login: Login to the API to get a JWT.
    • POST /api/auth/logout: Logout and revoke the JWT.
  • The following routes require a valid JWT:

    • PUT /api/auth/change-password: Change a user's password.
    • PUT /api/auth/reset-password: Reset a user's password.
    • GET /api/auth/verify-token: Verify the validity of an authentication token.
  • 💳 Payment

  • ==============

  • The API uses Stripe for payment processing.

    • POST /api/store/subscriptions/:id/subscribe: Create a new subscription with Stripe.
    • GET /api/confirm_payment/:subscriptionId: Confirmed the payment of a subscription with Stripe.
  • Stripe Configuration

  • To use Stripe with this project, you need to create a Stripe account and add your API keys to your .env file:

  • STRIPE_SECRET_KEY=sk_test_************

  • STRIPE_PUBLIC_KEY=pk_test_************

  • To test payment

  • Stripe provides test cards that you can use to test the payment process:

    • Card number: 4242 4242 4242 4242
    • Expiration date: any future date
    • Security code: 123
    • Postal code: 12345
  • 📷 Images

  • ============

    • Multer is used to handle image files.
    • The image files are stored in the server/uploads directory.
    • The image files are accessible through the server/uploads directory.
  • The goal of this project is to provide a starting point for developers looking to build their own e-commerce store or explore these technologies.

  • 💾 Database

  • ====================

    • Prisma is used as the ORM for the MySQL database.
    • The database migration file is stored in the prisma/migrations directory.
    • The database schema file is stored in the prisma/schema.prisma directory.
  • 💻 Requirements

  • ==========================

    • Node.js v14.x or higher
    • npm or yarn
    • MySQL v8.x or higher
  • 🔧 Installation

  • ===================

  • To install dependencies, run the following command:

  • npm install

  • Environment Configuration

  • Copy the .env.example file to .env and fill in the variables according to your environment.

  • 🔍 API Overview

  • ====================

  • The API is built with Node.js and Express, and uses a MySQL database with Prisma as the ORM.

    • The API files are stored in the server directory.
    • Routes are defined in the server/router directory.
    • Controllers are stored in the server/controller directory.
    • Services are stored in the server/service directory.
    • Database models are stored in the prisma/schema.prisma directory.
  • 🌐 Routes

  • =============

  • Les routes de l'application sont :

  • Home

    • /: La page d'accueil de l'application avec la liste des dernières chaussures ajoutées.
  • Sneakers

    • /sneakers: La liste de toutes les chaussures disponibles.
    • /sneakers/:id: Détails d'une chaussure avec un formulaire pour l'ajouter au panier.
  • Subscriptions

    • /subscriptions: La liste de toutes les abonnements disponibles.
    • /subscriptions/:id: Détails d'un abonnement avec un formulaire pour souscrire.
  • User

    • /user/register: Formulaire d'enregistrement pour un nouvel utilisateur.
    • /user/login: Formulaire de connexion pour l'utilisateur existant.
    • /user/account: Page de compte de l'utilisateur avec les détails de l'utilisateur et son historique d'achat.
    • /user/account/edit: Formulaire de modification des informations de l'utilisateur.
    • /user/account/change-password: Formulaire de modification du mot de passe de l'utilisateur.
    • /user/account/purchases: Historique des achats de l'utilisateur.
  • Cart

    • /cart: Le panier de l'utilisateur avec les chaussures ajoutées et le formulaire de paiement.
  • Checkout

    • /checkout: Formulaire de paiement avec Stripe pour finaliser l'achat.
  • Endpoints

    • GET /api/sneakers: Obtenez toutes les chaussures.
    • GET /api/sneakers/:id: Obtenez une chaussure par ID.
    • POST /api/sneakers: Créer une nouvelle chaussure.
    • PUT /api/sneakers/:id: Mettre à jour une chaussure par ID.
    • DELETE /api/sneakers/:id: Supprimer une chaussure par ID.
    • GET /api/subscriptions: Obtenez toutes les abonnements.
    • GET /api/subscriptions/:id: Obtenez un abonnement par ID.
    • POST /api/subscriptions: Créer un nouvel abonnement.
    • PUT /api/subscriptions/:id: Mettre à jour un abonnement par ID.
    • DELETE /api/subscriptions/:id: Supprimer un abonnement par ID.
    • GET /api/users/:id/purchases: Obtenez les achats d'un utilisateur par ID.
  • 🚀 Utilisation

  • ==================

  • Pour utiliser l'application, vous pouvez suivre ces étapes :

    1. Clonez le repository et installez les dépendances avec la commande npm install.
    1. Créez une base de données MySQL et ajoutez vos informations de connexion dans le fichier .env.
    1. Exécutez les migrations de la base de données avec la commande npx prisma migrate dev.
    1. Ajoutez les variables Stripe à votre fichier .env.
    1. Exécutez la commande npm run dev pour démarrer l'application en mode développement.
    1. Visitez http://localhost:5173 coté front et http://localhost:3000 coté API pour voir l'application en action.
  • Pour le mode production, vous pouvez exécuter les commandes npm run build et npm start.

  • 📈 Améliorations possibles

  • =============================

  • Ce projet pourrait être amélioré de plusieurs façons, notamment :

    • Ajouter des fonctionnalités de recherche et de tri pour les chaussures et les abonnements.
    • Implémenter la pagination pour les listes de chaussures et d'abonnements.
    • Ajouter des commentaires et des avis sur les chaussures.
    • Implémenter la gestion des stocks pour les chaussures.
    • Ajouter des tests automatisés pour l'API et l'application.
    • Ajouter la fonctionnalité d'annulation de l'achat.
    • Implémenter la gestion des adresses de livraison pour les achats.
    • Ajouter la fonctionnalité de paiement en plusieurs fois.
    • Ajouter la fonctionnalité de paiement avec PayPal.
  • Si vous avez des suggestions ou des contributions à apporter, n'hésitez pas à créer une issue ou une pull request sur le repository GitHub du projet.

  • Licence

  • Ce projet est sous licence MIT.

  • Pour plus d'informations, veuillez consulter le fichier LICENSE.

Releases

No releases published

Packages

No packages published