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
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