A Project and task Management System
Live app - https://taskscout.herokuapp.com/
An easy to use open source task management tool for small and medium sized teams. Albeit this was built to learn ruby and rails, this particular repo can be extended to suit your needs.
1.User Management
1. Using Devise to handle user functionality
2. Signup, Login, Forget Password, etc
3. User can be a part of a project as well as create a project
2.Project Management
1. Creation of project by a user
2. Adding people on a project
3. Create Objectives , Assign Moderators for Objectives .
3.Task Management
1. Creation of tasks, Sub-tasks
2. Assigning and Reassigning of Tasks to members
3. Tasks can have followers and labels
4. Label based task searching
5. Tasks have priority and due date.
4.Notifications
1. User gets notification for current tasks.
2. Users can follow a task or a post
3. User gets notification for the tasks he follow’s
5.Time-Line
1. Two types of timeline , (project and user)
2. Project Timeline shows project related progress
3. User timeline shows their task related progress and updates.
6.Discussions
1. Users can leave comments on tasks
2. Users can leave comments on Post.
Users
id: integer
name: string
email: string
password_digest: string
Projects
id: integer
title: string
deadline: datetime
started_at: datetime
status: string
progress: integer
archive: boolean
creator: integer foreign_key => user.id
User_Projects
id: integer
role: string
user_id: integer foreign_key => user.id
project_id: integer foreign_key => project.id
Tasks (Polymorphic)
id: integer
title: string
priority: string
status: string
progress: integer
description: text
started_at: datetime
due_date: datetime
taskable_type: string
taskable_id: integer foreign_key => project.id
user_id: integer foreign_key => user.id
labels
id: integer
name: string
task_labels
id: integer
label_id: integer foreign_key => label.id
task_id: integer foreign_key => task.id
Posts
id: integer
title: string
body: text
created_at: timestamp
project_id: integer foreign_key => project.id
user_id: integer foreign_key => user.id
Comments (Polymorphic)
id: integer
body: integer
user_id: integer foreign_key => user.id
commentable_type: string
commentable_id: integer
Follows (polymorphic)
id: integer
followable_type: string
followable_id: integer foreign_key => task.id
follower_id: integer foreign_key => user.id
Notifications
id: integer
user_id: integer foreign_key => user.id
context: string (defines type of notification)
body: text
created_at: timestamp
- one User can have many Projects
- one Project can have many Users
- one User can have many tasks
- one Project can have many tasks
- task is polymorphic
- each task can have a sub-task as a task
- each task can have many labels
- each label can have many tasks
- each project can have many posts
- each post can have many comments
- each task can have many comments
- comments is polymorphic
- each task can have many followers
- each user can follow many tasks
- each user can have many notifications