Welcome to AiryBites Recipes, my Milestone Project 3 for the Level 5 Diploma in Full Stack Web Application Development! This project will showcase my skills in full-stack web development by creating a dynamic and user-friendly recipe sharing application.
AiryBites Recipes will enable users to create, share, and discover a variety of recipes. Users will be able to:
Navigation Bar: Provides easy access to other sections of the website with clear and responsive navigation links.
Side Navigation: Provides a collapsible side navigation menu for easy access to various sections of the website.
Admin Navigation: Provides a navigation bar specifically tailored for administrative tasks.
Hero Image: Features a visually appealing hero image with overlay and text, welcoming users to the site.
Recipe Browsing Section:
Recipe List
Recipe Details:
Delete Confirmation Modal:
The Profile Page provides users with a personal space where they can view and manage their recipes.
Your Profile This section displays the user's profile information including:
Your Recipes
Recipe Details Modal
Delete Confirmation Modal
Overview
Navigation
Admin Panel Overview
Manage Recipes
Manage Categories
Manage Users
Delete User Modal
For this app, I chose warm and inviting colour scheme which will enhance the app's appeal and usability.
Usage: For primary buttons, highlights, and active elements.
Reason: Coral is a warm and inviting colour that grabs attention without being overwhelming. It provides a lively and energetic touch, making interactive elements stand out and encouraging user engagement.
Usage: For secondary buttons, accents, and backgrounds.
Reason: Sage Green offers a calming and natural feel, complementing the vibrancy of Coral. It creates a balanced and soothing palette, enhancing the app's overall aesthetic while providing a pleasant backdrop for content.
Usage: For background colours, cards, and sections.
Reason: Cream is a soft, neutral colour that adds warmth and elegance to the app. It ensures a clean and uncluttered look, making the text and images stand out, while providing a cohesive background for various sections.
Usage: For icons, links, and smal accents.
Reason: Burnt Orange is a bold and earthy accent colour that adds depth and contrast. It draws attention to important elements such as icons and links, enhancing the user experience by making navigation intuitive and visually appealing.
Usage: For text, headers, and footers.
Reason: Charcoal provides excellent readability and a strong visual foundation for text. It is a versatile and sophisticated dark colour that ensures clear contrast with lighter background colours, making it ideal for headers, footers, and body text.
Raleway is a clean, elegant sans-serif font that offers readability and modern aesthetics.
I chose the Raleway font for AiryBites Recipes because of its elegant and modern design, which enhances readability and gives the app a polished, professional appearance. Its versatility and range of weights ensure a cohesive and aesthetically pleasing user experience, making it ideal for headings and prominent text within the app.
Open Sans is a versatile and legible sans-serif font that complements Raleway well, ensuring readability across various devices and screen sizes.
I chose Open Sans as the secondary font for AiryBites Recipes because of its excellent readability and versatility. Its clean, neutral design complements the elegance of Raleway, ensuring that detailed recipe instructions and longer text sections are easy to read across various devices and screen sizes.
I chose to use MongoDB for my AiryBites recipe app because its flexible, schema-less structure allows me to easily store and retrieve diverse recipe data with varying ingredients and instructions. MongoDB's document-oriented nature simplifies handling the complex, nested data typical of recipes.
Additionally, I decided to create an Entity-Relationship Diagram (ERD) for the database to provide a clear and visual representation of the data model. This ensures that the structure and relationships of the data are well understood and consistently implemented. The ERD also serves as valuable documentation, helps identify potential design issues early on, and offers guidance during development, keeping the database organised and scalable, ultimately enhancing the project's overall quality and maintainability.
Relationships / References
I have set up some basic collections for MongoDB to support the functionality of the AiryBites App. These collections include user profiles, recipes, ratings, comments and categories, each structured to efficiently store and retrieve relevant data. This setup ensures the app runs smoothly and can handle user interactions effectively. I will make changes to these collections as needed to better support the app's evolving requirements.
Users Stores information about the users.
(UserID, Username, Email, Password, CreatedAt, UpdatedAt)
Recipes Stores information about the recipes, including cooking steps. References Users and Categories.
(RecipeID, Title, Description, Ingredients[], PreparationSteps[], CookTime, Temperature, Servings, ImageURL, AuthorID, CategoryID, Tags[], CreatedAt, UpdatedAt)
Comments Stores comments on recipes. References Users and Recipes.
(CommentID, RecipeID, UserID, Comment, CreatedAt, UpdatedAt)
Ratings Stores ratings for recipes. References Users and Recipes.
(RatingID, RecipeID, UserID, Rating, CreatedAt, UpdatedAt)
Categories Stores information about recipe categories.
(CategoryID, Name, Description, CreatedAt, UpdatedAt)
{
"_id": {
"$oid": "667d7bedfb3d723dcab788a0"
},
"recipe_title": "Recipe Title",
"recipe_description": "Recipe Description",
"instructions": [
"Step 1\r",
"Step 2\r",
"Step 3\r"
],
"cook_time": {
"$numberInt": "60"
},
"prep_time": {
"$numberInt": "60"
},
"total_time": {
"$numberInt": "120"
},
"temperature": {
"$numberInt": "6"
},
"servings": {
"$numberInt": "6"
},
"image_url": "",
"category": "Breakfast",
"tags": [
"Air Fryers",
" Potato",
" Wedges"
],
"ingredients": [
{
"ingredient_id": {
"$oid": "667d71f033ef874ed573d2fd"
},
"quantity": "6"
},
{
"ingredient_id": {
"$oid": "667d71f033ef874ed573d2fe"
},
"quantity": "1"
}
],
"created_at": {
"$date": {
"$numberLong": "1720552390327"
}
},
"updated_at": "11/07/2024 13:30",
"created_by": "username"
}
Explanation of Fields:
I have designed the wireframe for PC and mobile screens for the AiryBites App to ensure a seamless user experience across all devices. The layout is intuitive, featuring easy navigation and clear categorisation of recipes. The design includes a search function, detailed recipe views, user profiles, and a straightforward upload process for user-submitted recipes. This approach ensures users can effortlessly find, save, and add ingrediants to shopping list of their favourite air fryer recipes, whether they are using a desktop or a mobile device.
The app's functionality was also tested by friends and family. Their feedback was invaluable in identifying any issues and making necessary improvements.
For a detailed list of all testing steps taken, please refer to TESTING.md
The deployment process involved several steps to ensure that the app was correctly and efficiently deployed to production environments.
Platform Deployment
For full deployment steps, please refer to DEPLOYMENT.md
To enhance the user experience and functionality of the AiryBites app, I have identified several key improvements. Below is a list of these enhancements, along with reasons why some may face implementation delays due to time constraints and the current use of GitHub.
Advanced Search Functionality
Saved Recipes Access
Recipe Analytics for Users
Admin Monitoring Tools
User Engagement and Performance Reports
Conclusion While I aim to implement these improvements to enhance the AiryBites app, some features may experience delays due to the complexity and development time required. However, I am committed to continuously improving the app and will prioritise features based on user feedback and resource availability.
MongoDB: This database offers a flexible and scalable storage solution for our recipe data.
Backend:
Frontend:
Deployment and Version Control:
Images provided by PNGTree.
Favicon made on Favicon Generator
I am aware my commits are not up to standards for good practices. I have tried to use the commits in the style listed below and I am also aware that at times I have made mistakes with my commit messages.
I have been using commit types like shown below to improve my commit messages:
feat – a new feature is introduced with the changes.
fix – a bug fix has occurred.
chore – changes that do not relate to a fix or feature and do not modify source or test files (for example updating dependencies).
refactor – refactored code that neither fixes a bug nor adds a feature.
docs – updates to documentation such as the README or other markdown files.