Carpe Diem Task Manager - Project Portfolio 3 - Python
Carpe Diem Task Manager is a simple tool that helps people organize and track the tasks that need to be done in different aspects of life, for example, family, studies, work, etc..
Welcome to the live site here: Carpe Diem Task Manager
Contents
- Objective
- User Experience UX
- Features
- Future Features
- Technologies Used
- Testing
- Deployment
- Credits
- Acknowledgements
Objective
The aim of this project is to deliver a command line interface task manager so the user can track their to do list.
User Experience (UX)
Target Audience
- Anyone who wants to track and manage all the tasks that need to be done.
User Stories
- As a new user I want to easily understand how to use the system and how it can help me.
- As a new user or returning visitor, I want to be able to easily navigate the system through the command line.
- As a new user I want to be able to create a unique username, add tasks to the system, view saved tasks as well as delete tasks.
- As a visitor returning, I want to be able to access the system through a unique username, add new tasks, retrieve previously saved tasks, as well as delete tasks.
- As a new user or returning visitor, I want to be able to close the system easily when I finish using it.
Owner Stories
- As the owner, I want to offer a system that is easy to use for both the new user and a visitor returning, and helps the user better organize what needs to be done in their daily lives.
- As the owner, I want to ensure that the data entered is correct, valid and stored safely.
Flowchart
Features
Welcome Screen
This is the welcome screen:
On this screen the user is asked to create a username:
This is the screen that the user will see if the username choosen is already taken:
This is the welcome screen for the new user, when typed [1] Create a new task list:
This is the welcome screen for the returning user, when typed [2] Access a saved task list:
This is the screen to add a new task, when typed [1] Add a new task:
This is the screen to view saved tasks, when typed [2] View your saved tasks:
This is the screen to delete tasks, when typed [3] View your saved tasks:
This is the screen to exit the system, when typed [4] to exit the task manager:
This is the Google Sheets database, where the data is stored and communicating with the task manager system.
Future Features
The Carpe Diem Task Manager can be improved in the future through new features to be developed and implemented:
Update task Status - A update task status feature is crucial so the user can update the task when completed. Due to time contrains it could not be developed.
Color design - a better color design and combinations to improve the user experience.
Login - for future development it would be nice to have a signup and login with password feature in order to have a secure way to access the system.
Typing function - a typing function/library to slow down the time the text is printed on the screen. It can be improved for a better user experience UX/UI.
Testing
PEP8 validator
Fixed bugs:
During the testing process, some minor errors were displayed when validating Python on PEP8, which were quickly corrected.
Manual testing
The Carpe Diem Task Manager system has been econtinuously tested both on the Gitpod terminal and the Heroku deployed version on the browser. All tests made aimed to achieve the best user experience in system navigation, as well as the validity of data collected and stored on Google Sheets. So that the user can follow an intuitive and easy flow at all system contact points. Below are some examples of features tested manually.
Feature | Expect | Result |
---|---|---|
Run Task Tracker | Display welcome screen | Pass |
New user press [1] | Display welcome new user menu | Pass |
Returning user [2] | Display returning user menu | Pass |
Invalid inputs | Messages inputs not valid | Pass |
Add new task | Requests inputs to be filled | Pass |
Store task sheets | Add task on google shets | Pass |
Delete task | Requests task code to delete | Pass |
Delete task sheets | Delete task on google shets | Pass |
Save task | Show saved tasks/Retrieve sheets | Pass |
Exit screen | Display end screen when typed [4] | Pass |
Testing User Stories
Expectation | Result |
---|---|
As a new user I want to easily understand how to use the system and how it can help me. | The user can understand the system through the welcome screen. |
As a new user or returning visitor, I want to be able to easily navigate the system through the command line. | There user can navegate easily through the input buttons and options. |
As a new user I want to be able to create a unique username, add tasks to the system, save tasks as well as delete tasks. | The user can create a unique username, add, save and also remove tasks from the system. |
As a visitor returning, I want to be able to access the system through a unique username, add new tasks, retrieve previously saved tasks, as well as delete tasks. | The returning user can retrieve saved tasks, and also is able to add new tasks and also remove tasks from the system. |
As a new user or returning visitor, I want to be able to close the system easily when I finish using it. | The users can exit the system easily through the main menu . |
Technologies Used
- Python - the main language of the application.
- Gitbash - to push changes to the GitHub repository.
- GitHub - to host the repositories.
- Gitpod - as the IDE for the application.
- Google Cloud - to create a project for the API.
- Google Sheets - to store a database for the users tasks.
- Heroku to deploy the project.
- Lucid Charts - to create the flow chart.
- PEP8 - for testing and validating the code.
Deployment
This application was deployed using Heroku:
To deploy using Heroku, the steps below need to be followed:
- Ensure your requirements.txt file has the required dependencies. To do this you can use the following code in your IDE:
pip3 freeze > requirements.txt
- Heroku will use this file to import the dependencies that are required.
- Create or Login to your Heroku account.
- Navigate to Dashboard.
- Click "New" and select "create new app" from the drop-down menu. This is found in the upper right portion of the window.
- Provide a unique name for your application and select your region.
- Click "Create App".
Setting up the App within Heroku
- Navigate to "Settings" and scroll down to "build packs".
- Click "build packs" and then click both "python" and "node.js"(node.js is needed for the Code Institute mock terminal.)
- Ensure that the python buildpack is above the node.js buildpack, You can click and drag the packs to re-arrange them.
App Deployment
- Navigate to the "Deploy" section.
- Scroll down to "Deployment Method" and select "GitHub".
- Authorise the connection of Heroku to GitHub.
- Search for your GitHub repository name, and select the correct repository.
- For Deployment there are two options, Automatic Deployments or Manual.
- Automatic Deployment: This will prompt Heroku to re-build your app each time you push your code to GitHub.
- Manual Deployment: This will only prompt Heroku to build your app when you manually tell it to do so.
- Ensure the correct branch is selected "master/Main", and select the deployment method that you desire.
To fork this repository on GitHub
A fork of this repository can be made which will allow you to make changes to this project without affecting the original repository.
The steps below should be followed to fork the respository:
-
Log in to GitHub and find the repository.
-
Click on the button fork on the right-hand side of the page to create a copy of the original repository in your GitHub account.
See the image below:
To create a local clone of this project
The steps below should be followed to clone the respository:
- On the repository’s page, click on the code tab.
- On the Clone with HTTPS tab, click on the icon (see image below) to copy the URL.
- Open Git Bash on your IDE terminal.
- Change the current working directory to the location where you want the cloned directory.
- Type git clone, and then paste the URL copied from GitHub.
Type: git clone + https://github.com/fmstacco/task-tracker.git
- Press enter and the local clone will be created.
Help on cloning a repository from GitHub can be found here.
Python Libraries
- colorama to print text to the terminal in different colours and styles.
- gspread - to link the database spreadsheet with Google Sheets.
- google.oauth2.service_account to import credentials and access to Google service accounts.
- pandas - to display the tasks saved in a table format.
Credits
-
Alura to reinforce learning on Python.
-
Code Institute Python Project template - the framework for this project.
-
Create a Task Tracker - inspired me to structure my project.
-
Geeksforgeeks - inspired me to structure my project and decide which path I would follow.
-
GitHub Mortgage Calculator - Carpe Diem Task Manager code was developed having as a main inspiration this repository. I borrowed some of the code from the Mortgage calculator repository to help create the task manager, to save the user, send the tasks to the spreadsheet, retrieve it, etc. I have also customized the code to achieve the project goals.
-
Love Sandwiches - great walkthrough which inspired to structure my project.
-
Mortgage calculator, Escape the Cave, Loadsheet Planner - I learned a lot from these Project Portfolios and these inspired me on structure my README and understand some concepts.
-
Personalized task manager in Python - inspired me to structure my project.
-
Youtube Gustavo Guanabara - to reinforce learning on Python.
-
Youtube Dev Aprender - inspired me to structure my project and decide which path I would follow.
Acknowledgements
Carpe Diem Task Manager was designed and developed for Portfolio 3 project, a requirement of Full Stack Software Developer Diploma Course (Eccommerce) at the Code Institute. I would like to thank my mentor Precious Ijege, my Cohort facilitator Kenan Wright, my Cohort colleagues, the Slack community, the Tutor Support and the Student care for all support during this journey. I am also thankful to the Mayo, Sligo and Leitrim Education Training Board (msletb) for this opportunity. I would also like to say thank you to my family, my husband Michel and, my children, Alanna, and Peter who is just 5 months old at the time of this project submission.
Fabiana Tacco (2022)