Skip to main content
Version: 1.0.0

Modules Overview

The Symphony API is organized into three functional modules, each encapsulated in its own route file. This page provides a summary of each module and its responsibilities.

Projects module

File: src/routes/projects.js

Manages the lifecycle of projects — the top-level organizational unit in Symphony.

CapabilityEndpoint
List projects (with optional status filter)GET /api/projects
Create a projectPOST /api/projects
Retrieve a single projectGET /api/projects/:id
Replace a projectPUT /api/projects/:id
Delete a projectDELETE /api/projects/:id

A project has a status field that can be planned, active, or completed. Projects may reference a teamId to associate them with a team.

Tasks module

File: src/routes/tasks.js

Manages individual work items within a project.

CapabilityEndpoint
List tasks (filterable by projectId, assignee, status)GET /api/tasks
Create a taskPOST /api/tasks
Retrieve a single taskGET /api/tasks/:id
Partially update a taskPATCH /api/tasks/:id
Delete a taskDELETE /api/tasks/:id

Tasks carry a priority (low, medium, high) and a status (todo, in_progress, done). Each task belongs to exactly one project via projectId.

Teams module

File: src/routes/teams.js

Manages teams and their membership.

CapabilityEndpoint
List teams (summary without member details)GET /api/teams
Create a teamPOST /api/teams
Retrieve a team with full member listGET /api/teams/:id

Each team contains a members array. Each member has a username and a role (e.g. lead, engineer, designer).

Seed data

The API ships with pre-populated data files in src/data/:

FileRecordsDescription
projects.json5Mix of planned, active, and completed projects
tasks.json10Tasks across all projects in various statuses
teams.json3Teams with 2–3 members each

Seed data is loaded once at server startup. Any mutations made through the API persist only until the server is restarted.