Development Workflow
Core Principles
-
No Work Without a Issue 🎟️
- All tasks start with a Linear issue
-
Linear is Our Hub 📌
- Project discussions and decisions live here
-
Consistent Process 🔄
- Follow our issue-to-deploy workflow
TL;DR Version
- Pick an issue from Linear
- Create a branch:
ENG-[number]-description - Code and commit
- Open a draft PR for early feedback (optional)
- Open a PR when ready for review
- Automated tests run via GitHub Actions
- Review, address feedback if any
- Merge and celebrate! 🎉
Want the full scoop? Keep Reading 👻
Issue Lifecycle
1. Issue Creation
- All work begins with a issue in Linear
- Tickets can be created by any team member, but must be approved by a project lead before work begins
2. Issue Statuses
Our workflow uses the following statuses:
- Backlog: Issues that are not yet prioritized or scheduled
- Todo: Prioritized issues ready to be worked on
- In Progress: Active development is happening
- PR Ready: Code is complete and a pull request is open
- In Review: Pull request is being reviewed
- Done: Issue is completed and merged
- Canceled: Issue is no longer relevant or has been abandoned
- Duplicate: Issue is a duplicate of another existing issue
3. Issue Labels
We use two categories for labels:
-
Scope (group):
- Backend: Server-side and database work
- Frontend: Client-side and UI work
- Fullstack: Encompasses both frontend and backend
-
Type:
- Bug: Errors or unexpected behavior
- Documentation: Improvements or additions to docs
- Enhancement: Improvements to existing features
- Feature: New functionality
- High Priority: Urgent issues needing immediate attention
- Tech Debt: Code improvements without changing functionality
Always add one Scope label and at least one Type label to your issue.
Development Process
1. Starting Work
- You will either be assigned a issue or choose/create one yourself.
- Move the issue to the "In Progress" column.
- Create a new branch in GitHub following the naming convention:
ENG-[issue-number]-brief-description
2. During Development
- Make regular commits with clear, concise messages
- If you need clarification, add comments to the Linear issue
- Update the issue description with any relevant information discovered during development
3. Opening a Pull Request
- When your code is ready for review, open a pull request in GitHub
- Name the PR:
[ENG-issue-number] Brief description - Move the Linear issue to "PR Ready"
- Assign reviewers in GitHub
4. Code Review
- Address any feedback from reviewers
- Update the PR as necessary
- Once approved, move the Linear issue to "In Review"
5. Merging and Deployment
- After final approval, merge the PR
- The Linear issue will automatically move to "Done"
- Delete the feature branch in GitHub
Linear-GitHub Integration
- Our Linear project is configured to recognize branch names and automatically link them to tickets
- PR status is reflected in Linear, updating issue statuses automatically
- Merged PRs automatically resolve linked Linear tickets
Best Practices
- Always check for existing tickets before creating new ones
- Keep tickets focused and atomic – one issue per distinct piece of work
- Use clear, descriptive titles for tickets and PRs
- Regularly update issue status to reflect current progress
- Include relevant details in issue descriptions (acceptance criteria, technical notes, etc.)
- Link to relevant resources or discussions in issue comments
Continuous Improvement
We're always looking to improve our processes. If you have suggestions or feedback about this workflow, please share them.