API TOURS
L'API TOURS est une interface reposante robuste conçue pour fournir aux utilisateurs des fonctionnalités complètes pour gérer les visites. Les utilisateurs peuvent accéder à une variété de fonctionnalités, notamment la visualisation des visites disponibles, les réserver via la passerelle de paiement Stripe, les visites de notation après la complétion et l'utilisation des filtres, de la pagination et des mécanismes de tri. L'API prend en charge des capacités supplémentaires telles que la création et la gestion des comptes d'utilisateurs, l'ajout de tournées et l'édition et la révision de l'administration. Notamment, l'implémentation intègre la mise en cache Redis pour optimiser la latence et la vitesse. Les mesures de sécurité sont augmentées par un cryptage fort, des techniques de compression et une limitation du taux. En outre, le projet intègre des méthodes d'utilité pour la communication par e-mail à l'aide de nodemailer (SendGrid) et facilite les téléchargements de fichiers dans des solutions de stockage externes comme Cloudinary ou ImageKit.
- Le projet complet est déployé sur le rendu et est accessible ici.
- Remarque: L'API est actuellement hébergée sur un plan de rendu gratuit et peut prendre quelques secondes à charger pour la première fois.
Caractéristiques clés -
- Fonctionnalité : Voir et réserver des visites, évaluer les visites terminées, filtrer et trier les visites, gérer les comptes d'utilisateurs et administrer des avis.
- Optimisation des performances : la mise en cache Redis est utilisée pour améliorer la latence et la vitesse.
- Mesures de sécurité : des mécanismes de cryptage, de compression et de limitation des taux forts sont mis en œuvre.
- Int intégrations tierces : utilise Stripe pour le traitement des paiements, nodemailer (SendinBlue) pour la communication par e-mail et Cloudinary / ImageKit pour le stockage de fichiers externes.
- Caractéristiques complètes : prend en charge la pagination, le tri et le filtrage des opérations liées à la tournée.
Table des matières
- Condition préalable
- Installation
- Usage
- Documentation API
- Construit avec
- Difficultés rencontrées
- Portée future
- Licence
Condition préalable
- Votre système doit faire installer Node.js. Sinon, vous pouvez l'installer à partir d'ici.
- Vous devriez avoir un compte MongoDB Atlas. Sinon, vous pouvez en créer un à partir d'ici.
- Vous devriez avoir un compte Stripe. Sinon, vous pouvez en créer un à partir d'ici.
- Vous devriez avoir un compte SendinBlue. Sinon, vous pouvez en créer un à partir d'ici.
- Vous devriez avoir un compte ImageKit. Sinon, vous pouvez en créer un à partir d'ici.
- Pour les tests, vous pouvez utiliser Postman ou Insomnia ou Extension Thunderclient disponible sur VSCODE.
- Pour la mise en cache, vous devriez avoir un compte redis. Dans ce projet, j'ai utilisé Redis de render.com. Sinon, vous pouvez en créer un à partir d'ici.
Installation
- Cloner le référentiel
git clone https://github.com/varshil-shah/tours-api.git
- Installez les packages NPM
npm install or yarn install
- Créez un fichier .env dans le répertoire racine, identique au fichier .env.example, et ajoutez les variables d'environnement
- Exécuter l'application
Usage
- Vous aide à créer, lire, mettre à jour et supprimer des visites, des utilisateurs, des critiques et des réservations.
- Vous offre également la possibilité de filtrer, trier et paginer des visites et d'autres modèles.
- Intégrez l'API à n'importe quelle application Frontend et utilisez notre API pour créer un site Web Tours entièrement fonctionnel.
- Gérez facilement vos utilisateurs, visites, critiques et réservations.
Construit avec
- Node.js - Node.js® est un runtime JavaScript construit sur le moteur JavaScript V8 de Chrome.
- Express.js - Frame Web rapide, non opinée et minimaliste pour Node.js.
- MongoDB - MongoDB est une base de données générale, basée sur des documents et distribuée conçue pour les développeurs d'applications modernes et pour l'ère du cloud.
- Mongoose - Modélisation d'objets MongoDB élégante pour Node.js.
- Redis - Redis est un magasin de structure de données open source (BSD sous licence), utilisé comme courtier de base de données, de cache et de messages.
- JWT - Les jetons Web JSON sont une méthode ouverte et standard de l'industrie RFC 7519 pour représenter les réclamations en toute sécurité entre deux parties.
Difficultés rencontrées
- La partie la plus difficile du projet a été d'implémenter la fonction de téléchargement de fichiers. J'ai dû passer par la documentation de ImageKit pour comprendre comment télécharger des fichiers sur leurs serveurs. J'ai également dû passer par la documentation de Multer et Sharp pour comprendre comment télécharger des fichiers sur le serveur local.
- La deuxième partie la plus difficile du projet a été de mettre en œuvre la fonction de paiement. J'ai dû passer par la documentation de Stripe pour comprendre comment mettre en œuvre la fonction de paiement dans l'application.
- La troisième partie la plus difficile du projet a été de mettre en œuvre la fonction de filtrage, de tri et de pagination. J'ai dû passer par la documentation de Mongoose pour comprendre comment implémenter la fonction de filtrage, de tri et de pagination dans l'application.
Portée future
- Ajoutez une application Frontend à l'API.
- Implémentez les jetons d'accès et d'actualisation pour une meilleure sécurité.
- Implémentez les tentatives de connexion maximales et le mécanisme de verrouillage.
- Ajoutez une fonctionnalité pour rechercher des visites par emplacement.
Licence
Licence MIT
Remerciements
Merci à Jonas Schmedtmann pour son incroyable cours sur Node.js, Express.js, MongoDB et Mongoose.