Git Product home page Git Product logo

osu_cs361_task_mgmt_webpage's Introduction


Logo

SuperTasks

A modern tool for managing projects

Table of Contents

About The Project

screenshot

Overview

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.

Main Features

  • 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

How to Access and Run SuperTasks

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.

Prerequisites

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

Installation

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

Usage

This section explains briefly how to use the web application.

Registration

Registration

General Usage

Registration

Quality Attributes

  1. 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.
  2. 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.
  3. 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.

Architecture And Design

UML Sequence Diagram

screenshot

UML Component Diagram

screenshot

Google Cloud Architecture

screenshot

Design Patterns

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.

Final State of Software

Known Bugs and Issues

  • 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

Product Backlog

  • 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

File Structure

  • 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

Continuing Contributions

Developed by: Michael Hathaway, Kevin Hill, Craig Kelleher, David Mikulis, Steven Owens

  1. 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.
  2. 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
  3. 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.
  4. 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.

osu_cs361_task_mgmt_webpage's People

Watchers

James Cloos avatar  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.