Loading...
Define the APIs expected from the system. This is your chance to analyze and define the read and write paths so that you can come up with the high-level design...
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