/mongodb-taskmanager

MongoDB Task Manager Walkthrough from Code Institute

Primary LanguageHTML

MongoDB Task Manager

A task manager site created using a non-relational database, MongoDB. This site was created as part of a walkthrough project from the Code Institute.

MongoDB Task Manager Responsive Site Image

Link to deployed site: MongoDB Task Manager

GitHub last commit GitHub contributors GitHub language count GitHub top language

CONTENTS


User Experience

User Stories

First Time Visitor Goals

  • As a first time user, I want the site to be easy to navigate.
  • As a first time user, I want to be able to add categories to store my tasks in.
  • As a first time user, I want to be able to save tasks I create in a category of my choice.
  • As a first time user, I want to be able to sign up for an account.

Returning Visitor Goals

  • As a returning user, I want to be able to edit tasks.
  • As a returning user, I want to be able to edit categories.
  • As a returning user, I want to be able to log in to my account.

Frequent Visitor Goals

  • As a frequent user, I want to be able to delete tasks I no longer want.
  • As a frequent user, I want to be able to delete categories that I no longer need.

Design

Colour Scheme

The colour theme for the site is the same as the one used during the walkthrough videos, the colours used are from Materialize blue colour palette.

Materialize colour palette

Typography

No font was specified for use with the site, therefore the default font settings were used.

Imagery

The site has been created to learn and showcase CRUD functionality, no images have been used. All icons used in this project were sourced from Font Awesome.

Wireframes

Wireframes were created for mobile, tablet and desktop using Balsamiq.

Home Page

Tasks Page

Profile Page

Manage Categories Page

Edit Category Page

Features

The website is comprised of 9 pages: The register page which allows users to register an account, the login page, the home page which displays all the users tasks, the profile page, the new task page which allows users to create a new task, the manage categories page which displays all categories, the edit category and edit task pages which allow users to edit an existing category & task and the add tasks and add categories pages which allow users to create new categories and tasks.

All Pages on the website have:

  • A Favicon. The favicon for the site was created at Favicon.io and was generated using the following graphics from Twitter Twemoji:

  • A Navbar.The navbar contains links to the home, login and register pages when a user is not logged in. When a user is logged in the navbar will then display links for home, profile, new task, manage categories and log out. The navbar is responsive and on smaller devices uses the hamburger icon. When this is clicked the menu opens to the right of the screen.

    MongoDB Task Manager Navbar - Desktop

    MongoDB Task Manager Navbar - Mobile

    MongoDB Task Manager Navbar - Mobile Open


Home Page (Tasks)

Home Page/Tasks Page

Register Page

Register Page

Login Page

Login Page

Profile Page

Profile Page

Add Category Page

Add Category Page

Add Task Page

Add Tasks Page

Categories Page

Categories Page

Edit Category Page

Edit Category Page

Edit Task Page

Edit Tasks Page


Future Implementations.

  • Defensive programming - I would like to add a modal that pops up when a user wants to delete a category. This would provide an extra layer of security to confirm that the user does want to delete the record from the database, and would alert the user to the fact that this action is permanent and cannot be undone.
  • 404 Error Page.
  • I would like to improve the profile page for the user, and use this area to allow the user to change their password for their account.

Accessibility

I have been mindful during coding to ensure that the website is as accessible friendly as possible. This has been have achieved by:

  • Using semantic HTML.
  • Providing information for screen readers where there are icons used and no text.
  • Ensuring that there is a sufficient colour contrast throughout the site.

Technologies Used

Languages Used

HTML, CSS, Javascript, Python

Database Used

MongoDB - A non-relational database used to store the users login information, the categories and the tasks.

Frameworks Used

Flask - A microframework.

Materialize - Version 1.0.0 for the front end framework.

Libraries & Packages Used

Font Awesome - Version 5.15.3 - For the iconography on the website.

PyMongo - Python Driver for MongoDB.

Programs Used

Balsamiq - Used to create wireframes.

Git - For version control.

Github - To save and store the files for the website.

Google Chrome Dev Tools - To troubleshoot and test features, solve issues with responsiveness and styling.

Tiny PNG To compress images.

Favicon.io To create favicon.

Am I Responsive? To show the website image on a range of devices.

Shields.io To add badges to the README

Pip - Tool for installing python packages

Jinja - Templating engine

Defensive Programming

This walkthrough project has introduced the concept of defensive programming, however there are still areas that could be improved.


Deployment & Local Development

Deployment

The site is deployed using Heroku. To deploy to Heroku:

  1. To successfully deploy on Heroku we first need to create some files: a requirements.txt file and a Procfile.

  2. The requirements.txt file contains all the applications and dependencies that are required to run the app. To create the requirements.txt file run the following command in the terminal:

    pip3 freeze --local > requirements.txt
  3. The Procfile tells Heroku which files run the app and how to run it. To create the Procfile run the following command in the terminal:

    echo web: python app.py > Procfile

    NOTE: The Procfile uses a capital P and doesn't have a file extension on the end.

  4. If the Procfile has been created correctly it will have the Heroku logo next to it. It is also important to check the Procfile contents, as sometimes on creation a blank line will be added at the end of the file. This can sometimes cause problems when deploying to Heroku, so if the file contains a blank line at the end, delete this and save the file. Make sure to save both these files and then add, commit and push them to GitHub.

  5. Login (or sign up) to Heroku.com.

  6. Click the new button and then click create new app.

  7. You will then be asked to give your app a name (these must be unique) and select a region. Once these are completed click create app.

  8. You will now need to connect the Heroku app to the GitHub repository for the site. Select GitHub in the deployment section, find the correct repository for the project and then click connect.

  9. Once the repository is connected, you will need to provide Heroku some config variables it needs to build the app. Click on the settings tab and then click reveal config vars button. You will now need to add the environment key/value variables that were used in the env.py file:

    KEY VALUE
    IP 0.0.0.0
    PORT 5000
    SECRET_KEY YOUR_SECRET_KEY*
    MONGO_URI MONGO_URI*
    MONGO_DBNAME MONGO_DB*
    DEBUG TRUE**

    *Denotes a value that is specific to your app.

    **This is set to true while deploying to enable us to see any bugs. Please change to FALSE after deployment.

  10. You're now ready to click the enable automatic deploys and create button. Heroku will start building the app.

Local Development

How to Fork

To fork the repository:

  1. Log in (or sign up) to Github.
  2. Go to the repository for this project, mongodb-taskmanager.
  3. Click the Fork button in the top right corner.

How to Clone

To clone the repository:

  1. Log in (or sign up) to GitHub.
  2. Go to the repository for this project, mongodb-taskmanager.
  3. Click on the code button, select whether you would like to clone with HTTPS, SSH or GitHub CLI and copy the link shown.
  4. Open the terminal in your code editor and change the current working directory to the location you want to use for the cloned directory.
  5. Type 'git clone' into the terminal and then paste the link you copied in step 3 and press enter.

Testing

Please see testing.md for all testing performed


Credits

Code Used

This site was created as part of a walkthrough project with the Code Institute.