goltsev / task-management

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Task Management Application

The goal was to create the back-end (REST API) part of the task management application (like Trello) with no authentication and authorization required.

The main entity is a Project (or Board) that always has its name and contains multiple Columns. A Column always has a name, contains Tasks and represents their status.

When a Project is created at least one "default" Column must be created in it as well.

A Task can be created only inside the Column and can be moved within the Column (change priority) or across the Columns (change status).

A Task can have Comments that could contain questions or Task clarification information.

Business Rules

User must be able to manage (create, read, update, delete) Projects:

  • Projects in a list are sorted by name.

Project must contain at least one column:

  • the first column created by default when a Project created;
  • the last column cannot be deleted.

User must be able to manage (create, read, update, delete) Columns:

  • Columns in a list are sorted by their position specified by User;
  • Column name must be unique;
  • when a Column is deleted its tasks are moved to the Column to the left of the current.

User must be able to move a Column left or right.

User must be able to rename a Column

User must be able to manage (create, read, update, delete) Tasks:

  • Task can be created only within a Column;
  • User can view Tasks in all Columns of a Project;
  • User can update the name and the description of the Task;
  • User can delete the Task, with all Comments related to this Task.

User must be able to move a Task across the Columns (left or right) to change its status.

User must be able to move a Task within the Column (up and down) to prioritize it.

User must be able to manage (create, read, update, delete) Comments:

  • Comment can be created only within a Task;
  • Comments in a list are sorted by their creation date (from newest to oldest);
  • User can view Comments related to a Task;
  • User can update the Comment text;
  • User can delete the Comment.

Fields and validation rules

Project

  • Name (1-500 characters)
  • Description (0-1000 characters)

Column

  • Name/Status (1-255 characters, unique )

Task

  • Name (1-500 characters)
  • Description (0-5000 characters)

Comment

  • Text (1-5000 characters)

Using an application

To start Task-Management application locally, you need to:

make dev-up
make run

To start Task-Management application in simple production:

make prod-up

Also application uses these environment variables:

  • PORT: port to run app on. Example: PORT=8080
  • ROOT_URL: scheme and host of a running app. Example: ROOT_URL="http://localhost"
  • DATABASE_URL: data source name (DSN) for a PostgreSQL database. Example: DATABASE_URL='postgres://user:password@localhost:5432/database'
  • MIGRATE: specify if database needs to be migrated every time app is started. Example: MIGRATE=true

About


Languages

Language:Go 97.4%Language:Makefile 1.9%Language:Dockerfile 0.4%Language:Shell 0.3%Language:Procfile 0.0%