// Team management
POST /teams -> Team
GET /teams
GET /teams/
PATCH, DELETE, etc.
// Task management
POST /tasks -> Task
GET /tasks
GET /tasks/
PATCH, DELETE, etc.
// Search for tasks
GET /tasks?q={query}&pageSize={}&pageToken={}
Database
User table
Team table
TeamMembership table
Task table
Client talks to various services via APIGateway.
TeamService handles various team management related API calls.
TaskService handles various task management related API calls. Any change in tasks triggers a notification. It puts the message on the NotificationQueue.
MonitoringService looks for tasks close to the deadline. When it determines notification is needed, it notifications team members by putting a message on NotificationQueue.
NotificationService pulls messages off notification queue, and notifies the clients.
Optionally we can introduce a search service.
Database:
MonitoringService
Notification system
Scalng
Failure