Giter VIP home page Giter VIP logo

third-milestone-project-8's Introduction

liqu0r

Third Milestone Project - Data Centric Development - Code institute


liqu0r is a Web based cocktail app that allows anyone to upload a recipe and share it with the world.


AmIresponsive


Table of Contents

  1. UX
  2. Features
  3. Testing
  4. Deployment
  5. Technologies
  6. Credits & Acknowledgements

UX

Project Goals

Lockdown Kitchen is part of my Code Institute Full Stack Software Development studies, the Data Centric Development module. The scope for this milestone project is to "Create a web application that allows users to store and easily access cooking recipes", using the CRUD operations of Create, Read, Update, and Delete for their recipes. My directive was to make an online cokctail app that users could find and share recipes, at the same time impoving their bussineses. Inspire, entertain and educate anyone—and everyone—interested in what happens in the glass.

User Stories

  • easily acces cocktail recipes from different kind of devices.
  • all recipes in one place.
  • find cocktails by spirits.
  • find cocktails by ingredients I have at home.
  • share cocktails by adding them to database.
  • edit existing cocktails when I find a mistake or I have a better version of the recipe.
  • delete recipes.
  • send a feedback to the developer.
  • get success or error message to know my feedback was successfully submitted.

Developer Goals

  • Provide a nice, easy to use online cocktail book where the user can create, edit, delete recipes, and filter them by categories and ingredients.
  • Learn by practice about databases, Jinja templating, Materialize, and how to use Python with JavaScript.
  • Get an insight into Heroku's platform.

Design

To make an integrated design for this site I used Materialize Icons and Materializecss. The cards with borders, the logo with forms. The best-used components are cards. I choosed cards as container of the infos, recipes, and detailed descriptions because the structure of a card helps me to organize the information in a user-friendly way. For providing feedback and adding recipe I used forms with simply put placeholders.

Color Scheme

The Colour scheme has modern colours. The supplementary colours are a mix of colours (white,grey,red) used in the cards that is throughout and at the Delete button I set red background color. It contrasts nicely with the text. The two most important colors are dark blue and the "brick brown"used for the Header/Navigation/Footer and the Feedback form.

Fonts

The fonts I selected to this page are Arvo and Playfair from GoogleFonts because it fits perfectly to playful and clear-out theme of the site.

Wireframes

I made wireframes for each page of the site from three different type of devices:

  1. Desktop

  2. Tablet

  3. Mobile


Back to Top

Features

Existing Features

Search recipes

  • the user can search for recipes sorting the results by ingredients.
  • if there are no results found for the keyword, the user can quickly browse for other cocktails.

Get all recipes

  • the user can reach the list of all the available recipes on one page.

Sort recipes

  • the user can easily sort recipes by categories from the menu or from the recipe card itself.

Edit, Update and delete recipes

  • when the user clicks on the detailed recipe page at the bottom they can see a dropdown menu with More options, where they can choose between editing or deleting the recipe.
  • if the user chooses to edit the recipe, it will pop up a form with the data of the selected recipe in an editable version.
  • by hitting the delete button, the recipe will be removed from the database.

Add new recipe

  • the user can add a new recipe by using a form.
  • the placeholders set in the form help the user how to fill it out.
  • a dropdown menu contains the categories, so they can easily choose one.

Send feedback

  • in the footer the user can find a feedback form which allows them to send their bug report, so I can fix them as fast as possible.
  • to get the feedback I used EmailJS.
  • after submitting the feedback, they get a success or an error message depending on the successfulness of the action.
  • messages are set with timeOut.

Future Features

  • As we haven't learnt yet and it's not part of the requirements I didn't implement authentication.
  • A comment section to leave advice or ideas to future users.
  • To tag a recipe as favourite so the users may keep a list of all the recipes they enjoyed the most, to keep in their profile.

Back to Top

Testing

  • The first phase of testing is a step by step basis. As I implemented a new code I did run the app on my localhost with the debugger on. If any of the Flask routes did not work, the debugger would catch them.
  • If the routes are loaded, I tested them on Chrome and Firefox Developer Tools.
  • I tested HTML with W3 Validator. I got an illegal character from Jinja2 templates. They are acceptable errors as Flask needs the templates to connect throughout the site.
  • I tested CSS with W3 CSS Validator. I only got errors with misspelled variables, left commas, semicolons.
  • I tested all the links to make sure they worked as intended.
  • I tested the CRUD capabilities to make sure they all worked.
  • All of the codes are validated and beatufied.
  • I tested on my old Sony Xperia Z1 Compact and asked my friends and family members to check on their devices.
  • I ran the application through Website Responsive Testing to make sure it is responsive. Below is a list of devices:
Mobiles
  • Apple iPhone 3/4/4s/5/5s/6/6s/6plus/7/7Plus/8/8Plus/X
  • Nexus 6P/5X
  • Google Pixel 2/XL
  • Samsung Galaxy S5/S6/S7/S8/S8+/S9/S9+
  • Samsung Galaxy Nexus/Note 8
  • LG G5
  • LG Optimus G
  • LG 5
  • Pantech Vega n6
  • Lenovo K900
  • Motorola Nexus 6
  • One Plus 3
  • ZTE Grand S
  • Sony XperiaZ3
  • Blackberry Torch 9800
  • Microsoft Lumia 1020/1520
Tablet
  • Apple iPad Pro/Pro9.7/1/2/mini
  • Samsung Galaxy Tab 3 10"/Tab 2 10"/Tab (8.9")/Tab 2 (7")
  • Samsung Nexus 10
  • HTC Nexus 9
  • Asus Nexus 7
  • LG G Pad 8.3
  • Amazon Kindle Fire/HD7/HD8.9
  • Microsoft Surface Pro 2/3
  • Blackberry Playbook
Desktops
  • Desktop/Laptop
  • 1024 x 768
  • 1280 x 800
  • 1680 x 1050

Back to Top

Deployment

How to deploy the site

To deploy the site on Heroku, you have to follow these steps:

  1. Create a Procfile with the terminal command echo web: python app.py > Procfile.
  2. Create a requirements.txt: pip3 freeze --local > requirements.txt.
  3. Login to Heroku and create a new app.
  4. Push and commit your requirements.tx and Procfile to GitHub repo.
  5. On the Heroku page of the app, click on the Deploy and then to the Connect to GitHub.
  6. Select the repository and link to the Heroku collection.
  7. Set the Config Vars in the Settings:
    • Debug: False;
    • IP: 0.0.0.0;
    • PORT: 5000;
    • MONGO_URI: mongodb+srv://<username>:<password>@<cluster_name>-qtxun.mongodb.net/<database_name>?retryWrites=true&w=majority;
    • SECRET_KEY: <your_secret_key>.
  8. Go back to the Deploy page, click on the Deploy then on Deploy Branch.
  9. The app is deployed on heroku, you can open by clicking on the Open app.

How to deploy locally

Ensure that you have these components:

  1. Download the repository from GitHub by clicking the "download zip" button. You can clone the respository with the following command: git clone https://github.com/kompeet/third-milestone-project
  2. Unpack the files, then navigate them to the correct file location.
  3. Create an env which has to contain the MONGO_URI and SECRET_KEY values.
  4. Install all requirements from the requirements.txt file using this command: sudo -H pip3 -r requirements.txt
  5. Create a Procfile and set the web scale. echo web: python app.py > Procfile heroku ps:scale web=1
  6. Sign in to the MongoDB and create a new database.
  7. Type to the terminal python app.py

The app's preview should be available.


Back to Top

Technologies

Credits & Acknowledgements

Code Tutorials

Media

Acknowledgements

Special thanks to:

  • Student Care Team for the understanding and supporting me. I was going through rough times in the past few months.
  • Everybody who did take time to test this page and gave me feedback.

Disclamer

This project was created for educational use only as part of the Code Institute Full Stack Software Development Course for Milestone 3!

Peter Komaromi

Back to Top

third-milestone-project-8's People

Contributors

kompeet avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.