A comprehensive guide for managing collaborative data engineering projects using GitHub Issues, Milestones, and Pull Requests.
Background: Adapted from my previous team's workflow and refined as team leader for current bootcamp project.
Define project phases to track progress:
| Milestone | Description |
|---|---|
| Milestone 1 | Pipeline architecture design (Airflow DAG, infrastructure setup) |
| Milestone 2 | Data collection and CSV storage (extract/transform per team) |
| Milestone 3 | Database loading automation (Airflow → Snowflake) |
| Milestone 4 | Data transformation for visualization |
| Milestone 5 | Final dashboard and presentation |
Use these labels for both Issues and Commits:
| Label | Description |
|---|---|
| FEAT | New feature implementation |
| FIX | Bug fixes |
| DOCS | Documentation updates |
| REFACTOR | Code refactoring (no feature change) |
| PERFORMANCE | Performance improvements |
| CHORE | Build/config/dependency updates |
| INFRA | Infrastructure changes (EC2, Airflow, CI/CD) |
| STRUCTURE | Folder/file structure reorganization |
Issue Title Format: [WORK_TYPE] Brief description
Example: [FEAT] Build NASDAQ data collection DAG
Issue Details:
- Title: Follow the format above
- Description: Provide detailed context about the task
- Assignee: Assign yourself
- Labels: Select appropriate label(s)
- Projects: Link to project board (e.g., "Economic Indicators")
- Milestone: Assign relevant milestone
- Check that the issue appears on the project board
- Move it to "In Progress" before starting work
Branch Naming Format: #issue-number-description
Example: #15-stock-data-scraper
git checkout main
git pull origin main
git checkout -b #15-stock-data-scraperCommit Message Format: work-type: description #issue-number
Example: feat: build NASDAQ data collection pipeline #15
Guidelines:
- Keep description concise (around 50 characters)
- Use lowercase for work type
- Always reference the issue number
git add .
git commit -m "feat: add yfinance data extraction for NASDAQ #15"
git push origin #15-stock-data-scraperUse this template for consistency:
### Related Issue
#15
### Changes Made
- Implemented yfinance data collection for NASDAQ/S&P500
- Created Airflow DAG for scheduled extraction
- Configured Snowflake auto-loading pipeline
### Notes
- Followed previous project architecture
- Tested with sample date rangePR Checklist:
- Link the related issue
- Request review from at least one team member
- Ensure CI/CD checks pass (if configured)
- Use "Squash and Merge" when merging to keep history clean
| Situation | Branch Name Example |
|---|---|
| New feature | #12-airflow-dag-setup |
| Bug fix | #18-fix-snowflake-connection |
| Documentation | #5-update-readme |
Good commit messages help the team understand changes at a glance.
Examples:
feat: add S3 file upload task to DAG #23
fix: resolve Airflow scheduler timezone issue #19
docs: add setup instructions for EC2 environment #7
refactor: simplify data transformation logic #31
chore: update requirements.txt with latest packages #14-
Rebase your branch with main to avoid conflicts:
git checkout main git pull origin main git checkout #15-stock-data-scraper git rebase main -
Push your changes:
git push -f origin #15-stock-data-scraper
- At least one team member must review and approve
- Address any requested changes
- Once approved, use "Squash and Merge" for a clean history
- Delete the branch after merging
| Action | Command/Format |
|---|---|
| Create branch | git checkout -b #15-description |
| Commit | work-type: description #issue-number |
| Issue title | [WORK_TYPE] Description |
| Before PR | git rebase main |
| Merge strategy | Squash and Merge |
Tags: #git #github #workflow #team-collaboration #project-management #best-practices