The "DrinkMaster" backend is a web server implemented using Node.js with a NoSQL MongoDB database. The API route documentation is available here. The backend project is deployed on Render.com, providing remote database access for developers, enabling request handling, and facilitating application testing.
Key Features:
- 🔐 User Authentication: Access to the application is restricted to authenticated users only.
- 🛠️ User Data Management: Users can edit their profile data, save their favorite drinks, and create their own personalized drink collections.
- 🔍 Advanced Drink Filtering: Search and filter drinks based on various criteria (e.g., ingredients, categories, glass type).
- 🚫 Age-Based Restrictions: Display non-alcoholic drinks exclusively for users identified as minors.
- 🌟 Popular Drinks: Showcases the most popular cocktails for users.
- 🌐 External Database Integration: Retrieves and processes data from third-party drink databases, returning structured information to the frontend, including drink collections, categories, glass types, and ingredients.
- 🖼️ Unique User Avatars: Each registered user can have a unique avatar image.
- ☁️ Cloud-Based Image Storage: Drink images are stored securely on Cloudinary.
- 📬 Newsletter Subscription: Users can subscribe to receive updates via email through SendGrid.
- 📝 Server Logging and Error Tracking: Server activity is logged, and errors are tracked using Winston and Papertrail.
Libraries Used: 📦
Below is a list of libraries and dependencies utilized in this project:
- @sendgrid/mail - Service for sending transactional emails 📧
- axios - HTTP client for making API requests 🌐
- bcrypt - Library for hashing passwords 🔑
- cloudinary - Cloud-based image storage and management ☁️
- cors - Middleware for enabling cross-origin requests 🌍
- cross-env - Cross-platform environment variable setup ⚙️
- dotenv - Module for loading environment variables 🌐
- express - Web server framework 🚀
- gravatar - Service for generating user avatars 🖼️
- jimp - Image processing library 🖌️
- joi - Data validation library for schemas 📋
- jsonwebtoken - Library for generating and verifying JWT tokens 🛡️
- mongoose - ODM for MongoDB 📂
- morgan - HTTP request logger 📄
- multer - Middleware for handling file uploads 📁
- multer-storage-cloudinary - Cloudinary storage engine for Multer ☁️
- nanoid - Unique ID generator 🔢
- nodemailer - Library for sending emails ✉️
- swagger-jsdoc - Documentation generator for OpenAPI specs 📄
- swagger-ui-express - Middleware for serving Swagger API docs 📝
- winston - Logging library 🛠️
- winston-papertrail - Papertrail transport for Winston logging service 📊
- yamljs - Parser for YAML files 📄
- 👩💻 Halyna Marchenko
- ✉️ Email: marchenkohalyna888@gmail.com
- 🔗 LinkedIn: Halyna Marchenko