This directory contains the .proto files for gRPC service communication between microservices.
Hosted by: project-service on port 50051
Used by: task-service to:
- Validate project existence before creating tasks
- Check project status (prevent adding tasks to archived projects)
- Verify user permissions
- Get project details for task display
Methods:
GetProject- Retrieve project detailsValidateProjectAccess- Check if user can access projectGetProjectMembers- Get list of project membersCanAddTasks- Check if project accepts new tasks
Hosted by: task-service on port 50052
Used by: project-service to:
- Get task counts and statistics per project
- List all tasks belonging to a project
- Delete tasks when project is deleted (cascade)
Methods:
GetTasksByProject- Get all tasks for a projectGetTaskStatistics- Get task stats with completion rateDeleteTasksByProject- Cascade delete tasksCountTasksByProject- Get task count
To generate TypeScript code from these proto files:
# Install protoc compiler
# Then generate code for each service
# For task-service
npm run proto:generate
# For project-service
npm run proto:generate- project-service gRPC:
50051 - task-service gRPC:
50052 - project-service HTTP:
3001 - task-service HTTP:
3000
When changes are pushed to this repository, dependent service pipelines are automatically triggered:
- ✅ task-service - Uses
task.protoandproject.proto - ✅ project-service - Uses
project.proto - ✅ notification-service - Uses proto files for messaging
-
Proto Repository Workflow (
.github/workflows/trigger-dependent-services.yml)- Triggers on push to
main,master, ordevelopbranches - Only triggers when
.protofiles are changed - Dispatches
repository_dispatchevents to dependent services
- Triggers on push to
-
Service Workflows
- Listen for
repository_dispatchevents with typeproto-updated - Automatically rebuild and redeploy when proto files change
- Display proto commit information in workflow summary
- Listen for
In the proto repository:
- Add
PAT_TOKENsecret with permissions to trigger workflows in dependent repositories
In dependent service repositories:
- Workflows automatically listen for
proto-updatedevents - No additional configuration needed
To manually trigger dependent services:
# Using GitHub CLI
gh workflow run trigger-dependent-services.yml --repo ws02-project/protoOr use the GitHub API to dispatch events directly to service repositories.