Click to expand / collapse
| # | Section | Description |
|---|---|---|
| 1 | 🎯 Project Overview | What this project is about |
| 2 | ⚡ Key Features | Core product catalog capabilities |
| 3 | 🏗️ Architecture | System design & workflow |
| 4 | 📋 Product Backlog | All 10 user stories |
| 5 | 🏃 Sprint Planning | Sprint breakdown & board structure |
| 6 | 🏷️ Labeling Strategy | How issues are categorized |
| 7 | 📂 Repository Structure | File & folder layout |
| 8 | 🚀 Getting Started | How to clone & explore |
| 9 | 🔄 Agile Workflow | Scrum ceremonies & practices |
| 10 | 🤝 Contributing | How to contribute |
| 11 | 📜 License | License information |
This repository demonstrates the practical application of Agile and Scrum methodologies to plan, track, and manage the development of a back-end product catalog service for an e-commerce platform.
The project focuses on project management artifacts rather than code implementation — showcasing how a real-world development team would use GitHub's built-in tools (Issues, Projects, Milestones, Labels) to run an Agile sprint from inception to delivery.
┌─────────────────────────────────────────────────────────────────┐
│ │
│ ✅ Writing well-structured User Stories (As a / I need / │
│ So that) with Acceptance Criteria in Gherkin syntax │
│ │
│ ✅ Building & managing a Product Backlog with GitHub Issues │
│ │
│ ✅ Sprint Planning using GitHub Milestones │
│ │
│ ✅ Kanban board management via GitHub Projects │
│ │
│ ✅ Labeling & categorization strategy (enhancement, │
│ technical debt) │
│ │
│ ✅ Issue templates for consistent story creation │
│ │
└─────────────────────────────────────────────────────────────────┘
The product catalog service is designed to support the following RESTful operations:
|
|
graph LR
subgraph "🌐 Client Layer"
A["🛒 E-Commerce Frontend"]
B["📱 Mobile App"]
C["🔗 Third-Party APIs"]
end
subgraph "⚙️ Product Catalog Service"
D["🔀 API Gateway / Router"]
E["📦 Product CRUD"]
F["👍👎 Like / Dislike"]
G["🔍 Query & Search"]
end
subgraph "💾 Data Layer"
H["🗄️ Database"]
end
subgraph "☁️ Infrastructure"
I["🚀 CI/CD Pipeline"]
J["☁️ Cloud Platform"]
end
A --> D
B --> D
C --> D
D --> E
D --> F
D --> G
E --> H
F --> H
G --> H
I --> J
J --> D
style A fill:#6C63FF,stroke:#6C63FF,color:#fff
style B fill:#6C63FF,stroke:#6C63FF,color:#fff
style C fill:#6C63FF,stroke:#6C63FF,color:#fff
style D fill:#4ECDC4,stroke:#4ECDC4,color:#fff
style E fill:#FF6B6B,stroke:#FF6B6B,color:#fff
style F fill:#FF6B6B,stroke:#FF6B6B,color:#fff
style G fill:#FF6B6B,stroke:#FF6B6B,color:#fff
style H fill:#FFE66D,stroke:#FFE66D,color:#333
style I fill:#A8E6CF,stroke:#A8E6CF,color:#333
style J fill:#A8E6CF,stroke:#A8E6CF,color:#333
The backlog contains 10 user stories organized by stakeholder role. Each story follows the standard format and includes acceptance criteria.
📄 #1 — Create a product in the catalog
| Field | Details |
|---|---|
| Role | Catalog Administrator |
| Label | enhancement |
| Sprint | ✅ Sprint 1 |
| Assignee | @Sairaj213 |
As a catalog administrator
I need the ability to create a product in the catalog
So that new items can be added and made available for customers to view and purchase
Acceptance Criteria:
Given the catalog administrator has valid product details (name, description, price, sku)
When the administrator submits the new product to the catalog
Then the product is stored successfully in the database
And a confirmation with the new product ID and HTTP 201 status is returned🔍 #2 — Retrieve a product from the catalog
| Field | Details |
|---|---|
| Role | Customer / Client Application |
| Label | enhancement |
| Sprint | ✅ Sprint 1 |
| Assignee | @Sairaj213 |
As a customer or client application
I need the ability to retrieve a product from the catalog
So that I can view complete details, specifications, and pricing for a specific item
Acceptance Criteria:
Given a product exists in the catalog with a valid product ID
When a request is submitted to retrieve the product by its ID
Then the product details are returned with HTTP 200 status
And if the product does not exist, an error response with HTTP 404 status is returned✏️ #3 — Update a product in the catalog
| Field | Details |
|---|---|
| Role | Catalog Administrator |
| Label | enhancement |
| Sprint | ✅ Sprint 1 |
| Assignee | @Sairaj213 |
As a catalog administrator
I need the ability to update a product in the catalog
So that product information such as price, description, or inventory stays up to date
Acceptance Criteria:
Given an existing product in the catalog
When the administrator submits modified product details
Then the product record is updated in the catalog
And the updated details are returned with HTTP 200 status🗑️ #4 — Delete a product from the catalog
| Field | Details |
|---|---|
| Role | Catalog Administrator |
| Label | enhancement |
| Sprint | ✅ Sprint 1 |
| Assignee | @Sairaj213 |
As a catalog administrator
I need the ability to delete a product from the catalog
So that discontinued or obsolete products can be permanently removed
Acceptance Criteria:
Given an existing product in the catalog
When the administrator requests deletion of the product
Then the product is permanently removed from the catalog
And an HTTP 204 No Content response is returned👍 #5 — Like a product in the catalog
| Field | Details |
|---|---|
| Role | Customer / Shopper |
| Label | enhancement |
| Sprint | 📌 Backlog |
As a customer / shopper
I need the ability to Like a product in the catalog
So that I can indicate my preference and help other shoppers discover popular items
Acceptance Criteria:
Given a customer is browsing a product page
When the customer clicks the 'Like' button on a product
Then the like count for the product increments by 1
And the customer's like status is saved👎 #6 — Dislike a product in the catalog
| Field | Details |
|---|---|
| Role | Customer / Shopper |
| Label | enhancement |
| Sprint | 📌 Backlog |
As a customer / shopper
I need the ability to Dislike a product in the catalog
So that I can express that a product did not meet my expectations
📖 #7 — List all products in the catalog
| Field | Details |
|---|---|
| Role | Customer / Shopper |
| Label | enhancement |
| Sprint | 📌 Backlog |
As a customer / shopper
I need the ability to list all products in the catalog
So that I can browse through all available items in the store
🔎 #8 — Query a subset of products in the catalog
| Field | Details |
|---|---|
| Role | Customer / Shopper |
| Label | enhancement |
| Sprint | 📌 Backlog |
As a customer / shopper
I need the ability to query a subset of products in the catalog
So that I can find specific items by category, price range, or search keywords
☁️ #9 — Must be hosted in the cloud
| Field | Details |
|---|---|
| Role | DevOps Engineer |
| Label | technical debt |
| Sprint | 📌 Backlog |
As a DevOps engineer
I need the product catalog service to be hosted in the cloud
So that the application has high availability, elasticity, and reliable infrastructure
🔄 #10 — Must have automation to deploy new changes to the cloud
| Field | Details |
|---|---|
| Role | Developer / DevOps Engineer |
| Label | technical debt |
| Sprint | 📌 Backlog |
As a developer / DevOps engineer
I need automation to deploy new changes to the cloud
So that updates can be built, tested, and released continuously with minimal downtime and error
| Attribute | Value |
|---|---|
| 🏷️ Milestone | Sprint |
| ⏱️ Duration | 2 weeks |
| 📅 Due Date | September 20, 2026 |
| 📊 Stories in Sprint | 4 |
| 📌 Stories in Backlog | 6 |
pie title Story Distribution
"Sprint 1 (In Progress)" : 4
"Product Backlog" : 6
The project uses a GitHub Projects Kanban board with the following workflow:
graph LR
A["📥 New Issues"]
B["📝 Icebox"]
C["📋 Product Backlog"]
D["🏃 Sprint Backlog"]
E["🔨 In Progress"]
F["👀 Review / QA"]
G["✅ Done"]
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
style A fill:#E8E8E8,stroke:#999,color:#333
style B fill:#DDD6FE,stroke:#8B5CF6,color:#333
style C fill:#BFDBFE,stroke:#3B82F6,color:#333
style D fill:#FDE68A,stroke:#F59E0B,color:#333
style E fill:#FCA5A5,stroke:#EF4444,color:#333
style F fill:#A7F3D0,stroke:#10B981,color:#333
style G fill:#6EE7B7,stroke:#059669,color:#fff
| # | Story | Assignee | Status |
|---|---|---|---|
| 1 | Create a product in the catalog | @Sairaj213 | 🔨 In Progress |
| 2 | Retrieve a product from the catalog | @Sairaj213 | 🔨 In Progress |
| 3 | Update a product in the catalog | @Sairaj213 | 🔨 In Progress |
| 4 | Delete a product from the catalog | @Sairaj213 | 🔨 In Progress |
Issues are categorized using a clear labeling system to distinguish between feature work and infrastructure concerns:
| Label | Color | Purpose | Count |
|---|---|---|---|
| 🟦 | New feature or request | 8 | |
| 🟥 | Technical debt or infrastructure items | 2 | |
| 🔴 | Something isn't working | — | |
| 🔵 | Improvements or additions to docs | — | |
| 🟣 | Good for newcomers | — |
agile-final-project/
│
├── 📄 README.md # Project documentation (you are here!)
│
└── 📁 .github/
└── 📁 ISSUE_TEMPLATE/
└── 📄 user-story.md # User Story issue template
# ├── As a [role]
# ├── I need [function]
# ├── So that [benefit]
# └── Acceptance Criteria
💡 Note: This project focuses on Agile planning artifacts (user stories, sprint planning, backlog management) rather than application source code.
git clone https://github.com/Sairaj213/agile-final-project.git
cd agile-final-project| What to Explore | Where to Find It |
|---|---|
| 📋 Product Backlog | Issues Tab |
| 📊 Kanban Board | Projects Tab |
| 🏃 Sprint Milestone | Milestones |
| 🏷️ Labels | Labels |
| 📝 Issue Template | .github/ISSUE_TEMPLATE/user-story.md |
This project follows the Scrum framework with the following ceremonies and artifacts:
graph TB
subgraph "🔄 Scrum Framework"
A["📋 Product Backlog<br/><i>All 10 user stories</i>"]
B["🎯 Sprint Planning<br/><i>Select top-priority stories</i>"]
C["🏃 Sprint Backlog<br/><i>4 stories for Sprint 1</i>"]
D["📅 Daily Standup<br/><i>What did I do? What will I do?<br/>Any blockers?</i>"]
E["🔨 Development<br/><i>Build, test, iterate</i>"]
F["👀 Sprint Review<br/><i>Demo to stakeholders</i>"]
G["🔍 Sprint Retrospective<br/><i>What went well?<br/>What to improve?</i>"]
end
A --> B
B --> C
C --> D
D --> E
E --> D
E --> F
F --> G
G --> A
style A fill:#6C63FF,stroke:#6C63FF,color:#fff
style B fill:#4ECDC4,stroke:#4ECDC4,color:#fff
style C fill:#FFE66D,stroke:#FFE66D,color:#333
style D fill:#FF6B6B,stroke:#FF6B6B,color:#fff
style E fill:#A8E6CF,stroke:#A8E6CF,color:#333
style F fill:#DDA0DD,stroke:#DDA0DD,color:#333
style G fill:#F0E68C,stroke:#DAA520,color:#333
Every story follows a standardized template:
As a → [role] — Who benefits?
I need → [function] — What capability?
So that → [benefit] — Why does it matter?
Acceptance Criteria — Gherkin-style Given/When/Then
Contributions are welcome! Here's how you can help:
- 🍴 Fork the repository
- 🌿 Create a feature branch (
git checkout -b feature/amazing-feature) - 💾 Commit your changes (
git commit -m 'Add amazing feature') - 📤 Push to the branch (
git push origin feature/amazing-feature) - 🔃 Open a Pull Request
📌 Please use the User Story template when creating new issues.
