A service that synchronizes tickets between Linear and Jira to ensure consistent workflow across both platforms.
The Insync service provides bidirectional synchronization between Linear and Jira platforms, ensuring that:
- When an issue is created in Linear, it is also created in Jira
- Status updates are synchronized between both platforms (Todo → To Do, In Progress → In Progress, etc.)
- Changes to issue details are reflected in both systems
The service uses webhooks from both platforms to detect changes and APIs to make corresponding updates.
The service follows a webhook-driven architecture:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ Linear │ ◄─────┐ │ Insync Service │ ┌─────► │ Jira │
│ │ │ │ │ │ │ │
│ Issues API │ ◄─────┼────┤ Webhook ├───►│──────►│ Issues API │
│ Webhooks │ │ │ Processing │ │ │ Webhooks │
│ │ ◄─────┘ │ │◄───┘ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
For detailed information about the APIs and webhooks used by both platforms, see docs/api.md
For detailed workflow diagrams showing how the sync process works, see docs/workflow-diagrams.md
- Bidirectional Sync: Changes in either system are reflected in the other
- Status Mapping: Automatic mapping between Linear and Jira status systems
- Real-time Updates: Uses webhooks for immediate synchronization
- Conflict Resolution: Handles potential sync conflicts gracefully
- Error Handling: Robust error handling and retry mechanisms
- Field Mapping: Maps common fields between the two systems
| Linear Status | Jira Status |
|---|---|
| Todo | To Do |
| In Progress | In Progress |
| In Review | In Review / Code Review |
| Done | Done |
The service will be implemented in phases:
- Create issues in Jira when they're created in Linear
- Sync status changes between platforms
- Handle basic field mapping
- Enable updates to issue details (description, assignee, etc.)
- Handle comment synchronization
- Add more comprehensive field mapping
- Support for attachments
- Custom field mapping
- Enhanced error handling and reporting
To set up the service locally:
- Clone the repository
- Install dependencies
- Configure API keys for both Linear and Jira
- Set up webhook endpoints
- Run the service
The service requires the following configuration:
- Linear API key
- Jira API key
- Jira site URL
- Webhook endpoint URLs
- Field mapping configuration
- All webhook endpoints use HTTPS
- HMAC signature verification for webhook authenticity
- API keys stored securely
- Rate limiting to prevent abuse
The service includes:
- Comprehensive logging for sync operations
- Error tracking and alerting
- Performance metrics
- Sync status reporting
- Go 1.19+
- Access to Linear workspace
- Access to Jira instance
go mod tidy
go run main.goWe welcome contributions to improve the sync service. Please see our contributing guidelines for more information.
This project is licensed under the MIT License.