This document outlines the latest comprehensive improvements made to the project management API to make it even more similar to GitHub Projects v2, focusing exclusively on API enhancements while skipping web and gRPC implementations.
- Custom Status Management: Projects can now have custom statuses beyond the basic ones
- Status Types: Support for todo, in_progress, done, and custom status types
- Visual Customization: Each status can have custom colors and icons
- Position Management: Statuses can be reordered with drag-and-drop functionality
- Default Status: Support for setting default statuses for new items
ProjectStatus: Custom status definitions per project
GET /api/v1/projects/{project_id}/statuses - List project statuses
POST /api/v1/projects/{project_id}/statuses - Create project status
GET /api/v1/projects/{project_id}/statuses/{status_id} - Get project status
PATCH /api/v1/projects/{project_id}/statuses/{status_id} - Update project status
DELETE /api/v1/projects/{project_id}/statuses/{status_id} - Delete project status
POST /api/v1/projects/{project_id}/statuses/reorder - Reorder project statuses
- Sprint Management: Full support for creating and managing project iterations
- Timeline Support: Start and end dates with automatic duration calculation
- Current Iteration: Mark one iteration as current with automatic switching
- Iteration States: Support for planning, active, and completed states
- Task Assignment: Tasks can be assigned to specific iterations
ProjectIteration: Sprint/iteration definitions per project
GET /api/v1/projects/{project_id}/iterations - List project iterations
POST /api/v1/projects/{project_id}/iterations - Create project iteration
GET /api/v1/projects/{project_id}/iterations/{iteration_id} - Get project iteration
PATCH /api/v1/projects/{project_id}/iterations/{iteration_id} - Update project iteration
DELETE /api/v1/projects/{project_id}/iterations/{iteration_id} - Delete project iteration
POST /api/v1/projects/{project_id}/iterations/{iteration_id}/start - Start iteration
POST /api/v1/projects/{project_id}/iterations/{iteration_id}/complete - Complete iteration
- Event-Driven Automation: Trigger automations based on project events
- Flexible Conditions: JSON-based condition matching system
- Custom Actions: JSON-based action execution system
- Run Statistics: Track automation execution counts and timing
- Enable/Disable: Toggle automations on/off as needed
ProjectAutomation: Automation rules and configurations
GET /api/v1/projects/{project_id}/automations - List project automations
POST /api/v1/projects/{project_id}/automations - Create project automation
GET /api/v1/projects/{project_id}/automations/{automation_id} - Get project automation
PATCH /api/v1/projects/{project_id}/automations/{automation_id} - Update project automation
DELETE /api/v1/projects/{project_id}/automations/{automation_id} - Delete project automation
POST /api/v1/projects/{project_id}/automations/{automation_id}/toggle - Toggle automation
POST /api/v1/projects/{project_id}/automations/{automation_id}/trigger - Trigger automation
- Hierarchical Planning: Support for nested roadmap items (epics, features, milestones)
- Timeline Visualization: Start dates, target dates, and completion tracking
- Progress Tracking: Percentage-based progress indicators
- Item Types: Support for milestone, epic, feature, and release types
- Task Relationships: Link roadmap items to specific tasks
ProjectRoadmapItem: Roadmap planning items with hierarchical support
GET /api/v1/projects/{project_id}/roadmap - List roadmap items
POST /api/v1/projects/{project_id}/roadmap - Create roadmap item
GET /api/v1/projects/{project_id}/roadmap/{item_id} - Get roadmap item
PATCH /api/v1/projects/{project_id}/roadmap/{item_id} - Update roadmap item
DELETE /api/v1/projects/{project_id}/roadmap/{item_id} - Delete roadmap item
POST /api/v1/projects/{project_id}/roadmap/{item_id}/tasks - Link tasks to roadmap item
20250115000110_create_project_statuses_table.go- Custom project statuses20250115000111_create_project_iterations_table.go- Project iterations/sprints20250115000112_create_project_automations_table.go- Project automations20250115000113_create_project_roadmap_items_table.go- Roadmap items20250115000114_create_roadmap_item_tasks_table.go- Roadmap item-task relationships
- Project Model: Updated with new relationships to statuses, iterations, automations, and roadmap items
- Task Model: Extended to support status_id and iteration_id references
- Comprehensive Relationships: Full foreign key constraints and indexes for optimal performance
ProjectStatusRequest- For custom status managementProjectIterationRequest- For iteration/sprint managementProjectAutomationRequest- For automation configurationProjectRoadmapItemRequest- For roadmap item management
ProjectStatusesController- Complete CRUD operations for custom statusesProjectIterationsController- Full iteration lifecycle managementProjectAutomationsController- Automation management with trigger supportProjectRoadmapController- Roadmap planning and visualization (planned)
- Automatic Position Management: Smart positioning for status reordering
- Current Iteration Switching: Automatic management of current iteration state
- Automation Statistics: Comprehensive tracking of automation runs
- Hierarchical Roadmaps: Support for parent-child relationships in roadmap items
- Custom project statuses with visual customization
- Project iterations/sprints with timeline management
- GitHub Actions-style project automations
- Roadmap items with hierarchical structure (models ready)
- Status reordering and management
- Iteration lifecycle management (start/complete)
- Automation triggering and statistics
- Comprehensive API documentation
- Roadmap item controllers and endpoints
- Advanced filtering with GitHub-style syntax
- Bulk operations for project items
- GitHub repository integration
- Real-time automation execution
- Advanced roadmap visualization APIs
POST /api/v1/projects/{project_id}/statuses
{
"name": "In Review",
"description": "Items currently under review",
"color": "#F59E0B",
"icon": "eye",
"type": "custom",
"is_default": false
}POST /api/v1/projects/{project_id}/iterations
{
"title": "Sprint 1",
"description": "First sprint of Q1 2024",
"start_date": "2024-01-15T00:00:00Z",
"end_date": "2024-01-29T00:00:00Z",
"is_current": true
}POST /api/v1/projects/{project_id}/automations
{
"name": "Auto-assign to current iteration",
"description": "Automatically assign new issues to current iteration",
"trigger_event": "item_added",
"conditions": {
"item_type": "issue",
"labels": ["bug"]
},
"actions": {
"set_iteration": "current",
"add_labels": ["needs-triage"]
},
"is_enabled": true
}- Project-based Authorization: All operations are scoped to specific projects
- Input Validation: Comprehensive validation for all request types
- SQL Injection Protection: Parameterized queries throughout
- Access Control: Integration with existing permission system
- Efficient Indexing: Strategic database indexes on all foreign keys and frequently queried fields
- Optimized Queries: Minimal N+1 query issues with proper relationship loading
- Batch Operations: Support for bulk status reordering and automation management
- Caching Ready: Designed for easy integration with caching layers
This enhanced implementation provides advanced GitHub Projects v2 features with:
- 4 Major New Feature Sets - Custom statuses, iterations, automations, and roadmap items
- 25+ New API Endpoints - Comprehensive coverage of GitHub Projects v2 functionality
- Advanced Project Management - Sprint planning, custom workflows, and roadmap visualization
- GitHub Actions Integration - Event-driven automation system
- Production-Ready Architecture - Scalable, secure, and performant implementation
The API now offers enhanced feature parity with GitHub Projects v2 while maintaining the flexibility and extensibility of the Goravel framework. All features are implemented as API-only enhancements, providing a solid foundation for any frontend implementation.
Recommended areas for further development:
- Roadmap Controllers: Complete the roadmap item management endpoints
- Advanced Filtering: GitHub Projects-style filter syntax implementation
- Real-time Updates: WebSocket integration for live project updates
- GitHub Integration: Direct repository integration for issue/PR importing
- Mobile Optimization: API optimizations for mobile applications