TeamProVision is a web-based team project management application that streamlines collaborative project efforts. It simplifies the process of creating, planning, and executing projects by breaking them into manageable steps within a shared workspace.
Within TeamProVision, team leaders have advanced privileges, including the ability to shape and modify project pipelines, assign tasks to team members, and monitor the project's overall progress. Team members, on the other hand, have access to project information, task assignments, and progress tracking.
The application will store following entities:
- Users
- Team Leader
Every team leader can make projects and assign tasks to team members. - Team Member
Can track task progress and mark task completions.
- Team Leader
- Project and Tasks
Projects can be made by the Team Leader, while Tasks can be made by both members and leaders. However, assigning a task is only possible by the Leader.
An Example User:
{
userID: string, // a unique identifier for the user
username: string, // username of the user
email: string, // email of the user
team_leader: boolean, // true if the user is a team leader
projects: string[], // an array of reference to Project documents associated with this user
tasks: string[] // an array of reference to Task documents associated with this user
};
An Example Project:
{
projectID: string, // a unique identifier for the project
user: {}, // a reference to the User who created this project
name: string, // name of the project
description: string, // description of the project
creator: {}, // a reference to the User who created this project
tasks: string[], // an array of reference to Task documents associated with this project
startedAt: Date, // timestamp
deadline: Date, // timestamp
members: string[], // an array of reference to User documents associated with this project
leader: {} // a reference to the User who is the leader of this project
};
An Example Task:
{
taskID: string, // a unique identifier for the task
user: {}, // a reference to the User who created this task
name: string, // name of the task
description: string, // description of the task
startedAt: Date, // timestamp
deadline: Date, // timestamp
status: string, // status of the task
members: string[], // an array of reference to User documents associated with this task
project: {} // a reference to the Project this task is associated with
};
/register -> a page to register user
/login -> page to login
/confirmLeader -> a page to prompt the registered user if they are a team leader
/u/:username -> a dashboard for all users. This will be different for Leaders and Members
dashboard view for the leader
dashboard view for the member
/create/project
/create/task
Leader Features
- As a leader, I can create a new project, set project details, and invite team members.
- I can edit project details, assign tasks, and define project milestones.
- I can update the status of tasks, mark them as complete, and monitor project progress.
- I can initiate and manage project discussions, and organize shared project files.
Member Features
- As a member, I can access projects I've been assigned to and view project details.
- I can view the tasks assigned to me, update their status, and collaborate within project discussions.
These user stories succinctly outline the key functionalities available to leaders and members within TeamProVision.
- (6 points) Next.js
- I am using Next.js for the frontend and backed of the application. It is a React framework that makes it easier to build React applications.
- I have implement React hooks for state management.
- (2 points) Google Authentication (Firebase)
- Register and log in handled through google authentication using Firebase Authentication
- (2 points) TailwindCSS + dotenv
- Used tailwind for easier styling of the pages.
- Used dotenv for environment variables