Loading...
Endpoint: POST /tasks
Description: Creates a new task.
Request Body:
{
"title": "Design Database Schema",
"description": "Create an initial database schema for the task management app",
"due_date": "2024-06-01T12:00:00Z",
"priority": "High",
"category": "Development",
"assignee_id": 12345
}
Response Body:
{
"status": "success",
"task_id": 1001,
"message": "Task created successfully."
}
Endpoint: PUT /tasks/{task_id}
Description: Updates an existing task.
Request Body:
{
"title": "Update Database Schema",
"description": "Refine the initial database schema based on feedback",
"due_date": "2024-06-02T17:00:00Z",
"priority": "Medium",
"category": "Development",
"assignee_id": 12346
}
Response Body:
{
"status": "success",
"task_id": 1001,
"message": "Task updated successfully."
}
Get Task
Endpoint: GET /tasks/{task_id}
Description: Retrieves details about a specific task.
Response:
{
"task_id": 1001,
"title": "Update Database Schema",
"description": "Refine the initial database schema based on feedback",
"due_date": "2024-06-02T17:00:00Z",
"priority": "Medium",
"category": "Development",
"assignee_id": 12346,
"status": "In Progress"
}
List Task
Endpoint: GET /tasks
Description: Lists all tasks with filtering options.
Query Parameters: category, priority, assignee_id, status
Response:
{
"tasks": [
{
"task_id": 1001,
"title": "Update Database Schema",
"description": "Refine the initial database schema based on feedback",
"due_date": "2024-06-02T17:00:00Z",
"priority": "Medium",
"category": "Development",
"assignee_id": 12346,
"status": "In Progress"
},
{
"task_id": 1002,
"title": "Initial Draft for UI/UX",
"description": "Sketch the initial UI/UX frames for the app",
"due_date": "2024-05-25T15:00:00Z",
"priority": "High",
"category": "Design",
"assignee_id": 12347,
"status": "Not Started"
}
]
}
Delete Task
Endpoint: DELETE /tasks/{task_id}
Description: Deletes a specific task.
Response:
{
"status": "success",
"task_id": 1001,
"message": "Task deleted successfully."
}
Web Frontend
Mobile Frontend
API Gateway
Task Management Service
User Management Service
Notification Service
Database
Search and Reporting Service
Message queue
Elasticsearch
Because task management has:
So we want:
NoSQL can be used later for analytics/search, but not as primary source of truth.
users (
id UUID PK,
name VARCHAR,
email VARCHAR UNIQUE,
password_hash TEXT,
role VARCHAR,
created_at TIMESTAMP
)
projects (
id UUID PK,
name VARCHAR,
owner_id FK(users.id),
org_id UUID,
created_at TIMESTAMP
)
tasks (
id UUID PK,
title VARCHAR,
description TEXT,
status VARCHAR,
priority VARCHAR,
due_date TIMESTAMP,
assignee_id FK(users.id),
project_id FK(projects.id),
created_by FK(users.id),
org_id UUID,
version INT,
created_at TIMESTAMP,
updated_at TIMESTAMP
)
comments (
id UUID PK,
task_id FK(tasks.id),
user_id FK(users.id),
message TEXT,
created_at TIMESTAMP
)
tags (
id UUID PK,
name VARCHAR,
org_id UUID
)
task_tags (
task_id FK(tasks.id),
tag_id FK(tags.id),
PRIMARY KEY(task_id, tag_id)
)
notifications (
id UUID PK,
user_id FK(users.id),
task_id FK(tasks.id),
type VARCHAR,
status VARCHAR,
created_at TIMESTAMP
)
Scalability
Data Structures
Algorithms
Each service has its own database to avoid coupling (polyglot persistence).
Use Kong, NGINX, AWS API Gateway for API Gateway.
Use containerization (Docker) and orchestration (Kubernetes) for independent deployments.
Use service discovery tools (Consul, Eureka) for dynamic microservice registration.