A modern tool for managing projects
- About the Project
- How to access and run SuperTasks
- Quality Attributes
- Software Architecture and Design Overview
- Design Patterns
- Final State of Software
- File Structure
- Continuing Contributions
SuperTasks is a feature, A.K.A task, management web application that helps teams organize their work through a visual dashboard.
Teams and their members will be able to track what needs to be done, when it needs to be done by, and who is to complete the task. This is done through the heirarchy of a team where a team can have projects, a project can have features, and features can have subfeatures. Each of these are also summarized on the user's dashboard for quick view and they can click on one individually for more details on it.
- Team Management
- Create teams
- Add members to your team
- Add projects to your team
- Project Management
- Create a project
- Assign members to the project
- Status Updates
- not started, in-progress, stalled, under review, completed
- Feature Management
- Creating Features
- Priority Status
- low, elevated, highest
- Creating Subfeatures
- Assinging Features to members
- Due Dates for seatures
- Start Dates
- Status Updates
- to do, done
- Dashboard Views
- Team View
- Features View
- Projects view
The web application can be accessed publically at: SuperTasks1
Follow these steps if you want to get a local copy of this web application up and running.
This is an example of how to list things you need to use the software and how to install them.
Step 1: Install Python 3: Go to https://www.python.org/downloads/ and download python version 3.6.
Note: On MacOS/Linux Python3 is likely already installed. You may substitute the following commands to use your system-installed version.
python
--> python3
pip
--> pip3
Verify PIP came installed with Python3:
pip -V
If not, download the get-pip.py file and ensure it is saved as .py:https://bootstrap.pypa.io/get-pip.py
python pip -m install -upgrade pip
Navigate to the folder it was downloaded to in command prompt and run:
python get-pip.py
You can verify the contents of your current directory using:
dir
Step 2: Once you have PIP correctly installed, you can upgrade it if updates come out with the following command:
python -m pip install --upgrade pip
Now navigate back to the folder you want to install the project to.
Step 3: Install the virtual environement manager:
pip install virtualenv
Step 4: Create a virtual environment instance:
virtualenv venv
Step 5: Start the virtual environment:
Windows:
venv\scripts\activate
MacOS/Linux:
source venv/bin/activate
If you wish to stop the virtual environment:
deactivate
Step 1: Clone the repo
git clone https://github.com/craigkelleher/CS361-Team-10-Project-repository.git SuperTasks
Step 2: Move to the project root directory
cd SuperTasks
Step 3: Install modules for all dependencies from our requirements.txt file
python -m pip install -r local-requirements.txt
Step 4: Setup Development SQlite Database for local machine use
python manage.py makemigrations
python manage.py migrate
Step 5 (Optional step): Create superuser (admin) to view the development database
python manage.py createsuperuser
Step 6: Run the application
python manage.py runserver
Step 7: Navigate to localhost:8000 in your web browser of choice.
Step 8 (Optional): Stop running the application
Ctrl c
This section explains briefly how to use the web application.
- Reliability – For our team it is more important that features work predictably and reliably for our customers, so we started with a limited number of core features to make sure they were done right. In our testing of its reliability, our goal was to ensure for example if a user invoked a feature 10 times, that it would succeed 100% of the time.
- Testability – Especially in the early days of this project’s development, we worked to ensure that features were easily testable and also thoroughly tested before being delivered to clients.
- Learnability – We desire to have intuitive features and ease of navigation to increase customer retention. The site should be relatively simple to navigate, easily learned, and visual cues are to be plentiful.
Observer
The software uses the design pattern of “observer” where a one-to-many dependency between objects is defined in that when one object changes status, all of its subordinate objects are updated with that status.
For our application, when a project is marked complete by a user, all of its tasks are also marked complete if they haven’t already been done so manually by the group.
A second example of the "observer" design pattern is when a new User is created, a corresponding Account object is also created. This pattern is accomplished using the "signals" feature in Django.
Decorator
The software uses a decorator for views that require the user to be logged in. The decorator provides an abstraction which checks the user's session value for authentication. The Gang of Four specifically described the decorator as relating to "classes" and we are not using "classes" for the views, however, the same principle applies to our view functions.
- Tasks on main page connects to subtasks, nothing connects to features until going to manage projects, so it almost looks like tasks are subtasks and that they are elevated above features.
- To edit features, we have to go to manage project first and see the features and subtasks to edit them.
- Issue editing some fields of a subtask: can update completion status and the name, but not description of a subtask.
- Unable to assign a user to a feature but can assign users to a subtask.
- Unable to delete subtasks/features/projects/teams after creation.
- Unable to remove everyone from a team after adding them, can remove all but one user from a team
- As a user I can assign Planning Points to my features so that I can better allocate my team's capacity to do work
- As a user I can assign Planning Points to my subtasks so that I can better allocate my team's capacity to do work
- Root Folder
- The root folder contains access to all the other folders the application uses
- Readme file (this file)
- Migrations readme to describe how to troubleshoot any migrations with google cloud uploads
- local-requirements file to help with installing dependencies
- manage.py file used to execute Django tasks to start the web application
- files to aide in the automatic deployment to cloud when pushed to master.
- Static Folder Contains our static design files for CSS JS and holds images
- CSS, images, javascript, admin
- Templates Folder Contains the html code to create the homepages
- base.html, footer.html, index.html, navbar.html
- teams Folder Contains python code files to make the teams module work and two folders
- templates folder (contains the html code files to create the pages that will cover teams
- migrations folder
- projects Folder Contains python code files to make the projects module work and two folders
- templates folder (contains the html code files to create the pages that will cover projects
- migrations folder
- accounts Folder Contains python code files to make the accounts module work and two folders
- templates folder (contains the html code files to create the pages that will cover accounts
- migrations folder
- SuperTasks Folder
- Base urls.py file to redirect pages where the user wants to go
- Base views.py file to manage how redirecting works and how pages will be rendered
- tests to check if user is logged in or not and redirect
- settings.py file
Developed by:
Michael Hathaway
, Kevin Hill
, Craig Kelleher
, David Mikulis
, Steven Owens
- How will members of your team and (optionally) new developers contribute to the project in the future
- All members of the team can continue contributing to the project as they are now.
- All contributions are done on branches of master branch and pull requests must be checked/reviewed by another member of the group and go througha testing cycle before being approved by peers to be pushed to master.
- Who will be the keeper of the project? Multiple people? Nobody?
- All developers of this project are keepers of it, so currently 5 named contributers
- How do new people become contributers?
- New individuals can become contributers with majority support, and they would need to know that to push updates to master, they must have support from another reviewer/team member.
- What do they need to know?
- Pushing a branch to master automatically updates the web application to google cloud. Any testing should be done on the local system because of this before pushing to master.
1 Project hosting provided by Google Cloud using the Google App Engine.