- Any new user can create a new project as an owner.
- Only the owner of a project, can send email invites to other users, to become project members.
- Each project can have any number of members.
- Each project can have any number of issues.
- A project's issues can be public/private depending on the settings.
- Owner of project can revoke access for any team member, at anytime.
- Project settings can be changed by only owner of the project.
- A user can have any number of projects.
- New user can register through email or oath service.
- Every user can create any number of issues, only in projects he/she has access to.
- A user can comment on issues.
- A title and description describe what the issue is about.
- Issues can have multiple tags to which they can be linked to. (An issue can exist without a tag.)
- A user, depending on the access (described above), can vote for issues.
- One vote for one issue.
- Users can assign an issue to themselves, or to any other team member(read assignee).
- Users can mention other project members in comments.
- An issue can only be deleted by the owner of the project.
- There should be a separate view where users can view issues they have been assigned or mentioned in.
- All the history changes viz., tag changes, assignee changes, etc should be visible.
- Golang
- MYSQL
- React-JS