Introduction and Planning

This page will describe our planning process, how we organized our work, the requirements we defined for this project, and the methodology we use for development.

Development Methodology

For the development of PlanTask, a SCRUM methodology was used. SCRUM is a software development methodology (although it can be used for other purposes) that consists of sprint sessions, which are sessions with a fixed time in which every member works on a certain part of the project, and aims to have a shippable product by the end of each sprint. Even though SCRUM is mainly intended to be a framework for software development, we also utilized it to organize the planning stages of the project, by using a tool called Trello.

We selected the SCRUM methodology since it allows us to divide the work into smaller tasks, and work on each task until we can have a finished product.

Trello is a project managing software which can work with multiple methodologies, including SCRUM. In Trello, we created multiple lists divided into Backlog, Sprint Backlog, In progress, Review, and done. In the backlog, we insert every part of the project that we need to do, ordered by priority. Each task from the backlog will pass through every one of the lists until it reaches the done state.

Futher ahead, the whole backlog will be posted in this documentation.

We have included a section in this documentation that documents both our sprints and daily scrums (or daily stand-ups)

Project "Roles"

The team developing this project is composed of 3 people, which the tutor randomly selected. We selected Andres as the SCRUM master, the Mozcalti team and Koch rep as product owner and Angel, Itzel and Andres as the development teams.


Backlog

Backlog

Product backlog:

(A list of everything that needs to be done for the project organized by priority)

-Define idea for project

-Define functional / non-functional requirements for the project

-Complete backlog

-Database diagram and initial planning for data models

-Wireframes for the app’s design

-Create database in postgreSQL and convert to SQLAlchemy

-Get project in shared GitHub

-Create pyramid project from cookiecutter template

-Implement database through SQLAlchemy into pyramid project

-Create user types (admin, PM, member, observer)

-Implement authentication with JWT and store user info with argon2 hashing

-Implement RESTful API

-Implement CRUD for team projects

-Implement CRUD for users into projects

-Implement CRUD for tasks and micro-tasks

-Implement user permissions and limit access to areas of the app depending on user type

-Get notifications and async tasks done

-Messaging system

-HTML and CSS implementation following wireframes and layouts using BootStrap

-Making forms and data inputs work with pyramid project

-Implement JavaScript for the frontEnd

-Test that all templates work properly with the backend

-Connect forms with

-Unit testing with pyTest

-Test reports with Allure

-Integral Testing

-Security in BackEnd and DB through hashing, encryption, etc.

-Check for data integrity

-Using docker for deployment

-Monitor workload on server side and test for loading times on user side

-Cloud hosting

-Creation of app logs and monitoring


Requirements

Functional Requirements

Project Manager:

FRQ: The user (Project Manager) should be able to create a new team and add members that belong to the organization. They can also give each user labels depending on their specialty (e.g. backend, frontend, devops, planner, etc.)

FRQ: the Project Manager should be able to see all the teams that he has created in a welcome page

FRQ: The user (Project Manager) should be able to create new tasks for the team and add a description, divide the task into smaller micro-tasks and upload files if needed

FRQ: The user (Project Manager) should be able to add comments or see the team’s comments

FRQ: The Project Manager should be able to define tasks for the team

FRQ: The project manager should be able to divide the tasks into micro-tasks and either assign them manually to each user, let them be assigned automatically by their labels or let each user select their mini-task to do.

FRQ: The project manager should be able to assign a due date for each task and micro-task

FRQ: The project manager should get a dashboard where they can check progress, see how many tasks are left to do, how many are being worked on, which users are free, which tasks are up for review, etc.

FRQ: The PM should verify completion of each task before marking them as completed

FRQ: The PM should be able to access and filtrate an activity log for their projects to lookup each member’s actions

Project Member:

FRQ: The Member should be able to see the team projects that they have been

assigned to

FRQ:The member should be able to see which micro-task was assigned to them, or

select a micro-task if they’re free to choose

FRQ: The member should be able to download files if any were uploaded to the task

FRQ: The member should be able to add comments to the task or the micro-task,

depending on their needs. Said comments can contain files and links

FRQ: The member should be able to select/update an approximate amount of progress in their micro-task, which other members and the PM will be able to see to keep track of each micro-task’s progress.

FRQ: The member should be able to see and update the state of the micro-task (Undone, working on it, up for review)

FRQ: The member should be able to see a dashboard with their pending micro-tasks, which teams they belong to, their overall progress, etc.

FRQ: The member should be able to see and use a Pomodoro style timer to help them keep track of time and optimize workflow.

FRQ: The member should receive alerts to their email whenever the due date for a micro-task is coming up

FRQ: The member should be able to start a real-time chat with any of the members of their team

FRQ: The member should be able to leave comments when submitting a task that specify any things left to do, any problems still present or information that might be useful

FRQ: The member should be able to access to his history of the movements he have made

Admin:

FRQ: The admin should be able to access the activity log of the entire system and

filter by either user, project or time

FRQ: The admin should be able to assign roles to each user, either PM,

member or observer

Non User specific

FRQ: The system should validate user’s credentials and device signature to prevent external users or devices from accessing

FRQ: The system should validate the user’s role, redirecting them to different screens depending on if they’re admin, PM, member, or observer

FRQ: The system should have a built-in integrated ‘pomodoro’ function to help users to manage their own taks, this won’t be traced down or saved as this is personal for each user

FRQ: The system should log every action that users do, like uploading files, changing the status of a task, being added / removed from a project, etc. storing the time the change was made, which user made it, and which project it relates to.

FRQ: The system should verify that the files uploaded by PMs or members do not contain potentially harmful extensions like .bat

FRQ: The system should not allow observers to make any changes to the teams or tasks

FRQ: The system should have a session time limit of 30 mins and kick users out if they exceed this time

FRQ:The system should implement tests for each module, including database connections and backend

Non-Functional Requirements

NFRQ: The system should use the company’s colorway and maintain a professional picture

NFRQ: The system should be intuitive enough for users to be able to use it efficiently with minimal or no training

NFRQ: The chat system should be able to hold up to 100 concurrent users chatting

NFRQ: All passwords or user-sensitive information should be encrypted or hashed in the database

NFRQ: The system should keep a consistent appearance throughout, to maintain a professional image

NFRQ: The system should have attractive design that keeps it simple, so that users always know where to look for what they need

NFRQ: The system should not have over-bloated screens or views, to prevent users from feeling lost

Last updated