# Your First BMad Project
Build a complete project using BMad Method to experience the full workflow from concept to deployment.
!!! tip "Before You Start"
Ensure you've completed [installation](installation.md) and [verification](verification.md) before proceeding.
## Project Overview
We'll build a **Simple Task Manager** web application that demonstrates:
- 📋 **Complete BMad workflow** from requirements to deployment
- 🎭 **Persona switching** for different development phases
- ⚡ **Quality gates** and validation in practice
- 🧠 **Memory system** for learning and improvement
- 🤝 **Brotherhood review** process
**Expected time:** 45-60 minutes
---
## Step 1: Project Initialization
Let's start by setting up a new project using BMad Method:
### 1.1 Create Project Directory
```bash
# Create a new project directory
mkdir task-manager-app
cd task-manager-app
# Initialize the project with BMad Method
# (This copies the BMad system into your project)
cp -r /path/to/bmad-method/bmad-agent .
cp /path/to/bmad-method/verify-setup.sh .
# Initialize git repository
git init
git add .
git commit -m "Initial project setup with BMad Method"
```
### 1.2 Activate BMad Orchestrator
Start your BMad session and activate the first persona:
```bash
# Start BMad in your project directory
# This would typically be done in your IDE/Cursor
# For this tutorial, we'll simulate the process
```
**In your IDE (Cursor/VS Code):**
1. Open the project directory
2. Activate BMad Method (specific to your IDE integration)
3. You should see the BMad orchestrator ready
---
## Step 2: Requirements Analysis (Product Manager Persona)
Let's start by understanding what we need to build:
### 2.1 Activate Product Manager Persona
In BMad Orchestrator:
```
/pm
```
This activates the Product Manager persona (Jack), who will help us define requirements.
### 2.2 Create Product Requirements
**Task: Create PRD (Product Requirements Document)**
As the PM persona, let's define our task manager requirements:
```markdown
# Task Manager App - Product Requirements
## Problem Statement
Individual users need a simple, effective way to organize and track their daily tasks without the complexity of enterprise project management tools.
## Target User
- Individual professionals and students
- 25-45 years old
- Basic tech comfort level
- Need simple task organization
## Core Features (MVP)
1. **Task Creation** - Add tasks with title and description
2. **Task Management** - Mark complete, edit, delete
3. **Simple Organization** - Basic categories/labels
4. **Local Storage** - No account required initially
## Success Metrics
- User can create and complete first task within 2 minutes
- 80% task completion rate for created tasks
- Under 5 seconds for core operations
```
### 2.3 Quality Gate: PM Checklist
Run the PM checklist to validate requirements:
```
/checklist pm-checklist
```
**Key validations:**
- [ ] Clear problem statement
- [ ] Defined target user
- [ ] Specific success metrics
- [ ] Feasible scope for MVP
---
## Step 3: Architecture Design (Architect Persona)
Switch to technical architecture planning:
### 3.1 Activate Architect Persona
```
/architect
```
This activates the Architect persona (Mo) for technical design.
### 3.2 Create Architecture
**Task: Define Technical Architecture**
As the Architect, let's design our technical approach:
```markdown
# Task Manager - Technical Architecture
## Technology Stack
- **Frontend**: HTML5, CSS3, JavaScript (Vanilla)
- **Storage**: localStorage (browser-based)
- **Styling**: CSS Grid/Flexbox
- **Build**: Simple static files (no build process)
## Architecture Patterns
- **MVC Pattern**: Separate concerns clearly
- **Progressive Enhancement**: Works without JavaScript
- **Responsive Design**: Mobile-first approach
## File Structure
```
task-manager-app/
├── index.html
├── css/
│ └── styles.css
├── js/
│ ├── app.js
│ ├── task.js
│ └── storage.js
└── README.md
```
## Key Decisions
1. **No Framework**: Keep it simple for learning
2. **Local Storage**: No backend complexity
3. **Progressive Enhancement**: Accessibility first
```
### 3.3 Quality Gate: Architecture Review
Run Ultra-Deep Thinking Mode (UDTM) on the architecture:
```
/udtm
```
**UDTM Analysis:**
- ✅ Simplicity aligns with user needs
- ✅ No over-engineering for MVP scope
- ✅ Progressive enhancement ensures accessibility
- ⚠️ Consider: Future scalability if user growth occurs
- ✅ Technology choices match team skills
---
## Step 4: Development (Developer Persona)
Time to build the application:
### 4.1 Activate Developer Persona
```
/dev
```
This activates the Developer persona for implementation.
### 4.2 Build Core Components
**Task: Implement MVP Features**
#### Create HTML Structure (index.html)
```html
Task Manager
My Task Manager
Stay organized, get things done
```
#### Create CSS Styling (css/styles.css)
```css
/* Task Manager Styles */
:root {
--primary-color: #2563eb;
--secondary-color: #64748b;
--success-color: #059669;
--danger-color: #dc2626;
--background: #f8fafc;
--surface: #ffffff;
--text: #1e293b;
--text-muted: #64748b;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background-color: var(--background);
color: var(--text);
line-height: 1.6;
}
.container {
max-width: 600px;
margin: 0 auto;
padding: 20px;
}
header {
text-align: center;
margin-bottom: 2rem;
}
header h1 {
color: var(--primary-color);
margin-bottom: 0.5rem;
}
header p {
color: var(--text-muted);
}
.task-form {
display: flex;
gap: 0.5rem;
margin-bottom: 2rem;
}
#task-input {
flex: 1;
padding: 0.75rem;
border: 2px solid #e2e8f0;
border-radius: 0.5rem;
font-size: 1rem;
}
#task-input:focus {
outline: none;
border-color: var(--primary-color);
}
button {
padding: 0.75rem 1.5rem;
background: var(--primary-color);
color: white;
border: none;
border-radius: 0.5rem;
cursor: pointer;
font-size: 1rem;
}
button:hover {
background: #1d4ed8;
}
.task-list {
list-style: none;
}
.task-item {
background: var(--surface);
border-radius: 0.5rem;
padding: 1rem;
margin-bottom: 0.5rem;
display: flex;
align-items: center;
gap: 0.75rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.task-item.completed {
opacity: 0.6;
}
.task-item.completed .task-text {
text-decoration: line-through;
}
.task-checkbox {
width: 1.25rem;
height: 1.25rem;
}
.task-text {
flex: 1;
}
.task-delete {
background: var(--danger-color);
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
}
.task-delete:hover {
background: #b91c1c;
}
```
#### Create JavaScript Components
**Storage Module (js/storage.js)**
```javascript
// Local Storage Management
const TaskStorage = {
STORAGE_KEY: 'taskManager_tasks',
getTasks: function() {
const tasks = localStorage.getItem(this.STORAGE_KEY);
return tasks ? JSON.parse(tasks) : [];
},
saveTasks: function(tasks) {
localStorage.setItem(this.STORAGE_KEY, JSON.stringify(tasks));
},
addTask: function(task) {
const tasks = this.getTasks();
tasks.push(task);
this.saveTasks(tasks);
return task;
},
updateTask: function(id, updates) {
const tasks = this.getTasks();
const taskIndex = tasks.findIndex(task => task.id === id);
if (taskIndex !== -1) {
tasks[taskIndex] = { ...tasks[taskIndex], ...updates };
this.saveTasks(tasks);
return tasks[taskIndex];
}
return null;
},
deleteTask: function(id) {
const tasks = this.getTasks();
const filteredTasks = tasks.filter(task => task.id !== id);
this.saveTasks(filteredTasks);
return true;
}
};
```
**Task Model (js/task.js)**
```javascript
// Task Model and Operations
class Task {
constructor(text, id = null) {
this.id = id || Date.now().toString();
this.text = text;
this.completed = false;
this.createdAt = new Date().toISOString();
}
toggle() {
this.completed = !this.completed;
return this;
}
setText(newText) {
this.text = newText;
return this;
}
}
const TaskManager = {
tasks: [],
init: function() {
this.tasks = TaskStorage.getTasks().map(taskData =>
Object.assign(new Task(), taskData)
);
return this;
},
addTask: function(text) {
if (!text.trim()) return null;
const task = new Task(text.trim());
this.tasks.push(task);
TaskStorage.addTask(task);
return task;
},
toggleTask: function(id) {
const task = this.tasks.find(t => t.id === id);
if (task) {
task.toggle();
TaskStorage.updateTask(id, { completed: task.completed });
return task;
}
return null;
},
deleteTask: function(id) {
this.tasks = this.tasks.filter(task => task.id !== id);
TaskStorage.deleteTask(id);
return true;
},
getTasks: function() {
return this.tasks;
}
};
```
**Main Application (js/app.js)**
```javascript
// Main Application Logic
const App = {
elements: {},
init: function() {
this.cacheElements();
this.bindEvents();
TaskManager.init();
this.render();
console.log('Task Manager App initialized');
},
cacheElements: function() {
this.elements = {
taskForm: document.getElementById('task-form'),
taskInput: document.getElementById('task-input'),
taskList: document.getElementById('task-list')
};
},
bindEvents: function() {
this.elements.taskForm.addEventListener('submit', (e) => {
e.preventDefault();
this.addTask();
});
},
addTask: function() {
const text = this.elements.taskInput.value;
const task = TaskManager.addTask(text);
if (task) {
this.elements.taskInput.value = '';
this.render();
}
},
toggleTask: function(id) {
TaskManager.toggleTask(id);
this.render();
},
deleteTask: function(id) {
TaskManager.deleteTask(id);
this.render();
},
render: function() {
const tasks = TaskManager.getTasks();
this.elements.taskList.innerHTML = '';
tasks.forEach(task => {
const taskElement = this.createTaskElement(task);
this.elements.taskList.appendChild(taskElement);
});
},
createTaskElement: function(task) {
const li = document.createElement('li');
li.className = `task-item ${task.completed ? 'completed' : ''}`;
li.innerHTML = `
${task.text}
`;
// Bind events
const checkbox = li.querySelector('.task-checkbox');
const deleteBtn = li.querySelector('.task-delete');
checkbox.addEventListener('change', () => this.toggleTask(task.id));
deleteBtn.addEventListener('click', () => this.deleteTask(task.id));
return li;
}
};
// Initialize app when DOM is ready
document.addEventListener('DOMContentLoaded', () => {
App.init();
});
```
### 4.3 Quality Gate: Code Review
Run the development checklist:
```
/checklist code-review
```
**Key validations:**
- [ ] Code follows established patterns
- [ ] Proper error handling implemented
- [ ] Accessible HTML structure
- [ ] Responsive CSS design
- [ ] Clean JavaScript with separation of concerns
---
## Step 5: Testing & Validation
Ensure our application works correctly:
### 5.1 Manual Testing
**Test Core Functionality:**
1. **Add Task**: Enter "Learn BMad Method" → Click "Add Task"
2. **Complete Task**: Check the checkbox → Verify strikethrough
3. **Delete Task**: Click "Delete" → Confirm removal
4. **Persistence**: Refresh page → Verify tasks remain
**Test Edge Cases:**
- Empty task submission (should be prevented)
- Long task text (should wrap properly)
- Multiple rapid clicks (should work smoothly)
### 5.2 Quality Gate: Brotherhood Review
Request a Brotherhood review:
```
/brotherhood-review
```
**Review Criteria:**
- ✅ Meets all PRD requirements
- ✅ Clean, maintainable code
- ✅ Proper error handling
- ✅ Accessibility compliance
- ✅ Performance considerations
---
## Step 6: Documentation & Deployment
Complete the project with proper documentation:
### 6.1 Create README.md
```markdown
# Task Manager App
A simple, elegant task management application built with vanilla HTML, CSS, and JavaScript.
## Features
- ✅ Add new tasks
- ✅ Mark tasks as complete
- ✅ Delete tasks
- ✅ Persistent storage (localStorage)
- ✅ Responsive design
## Usage
1. Open `index.html` in your browser
2. Type a task and click "Add Task"
3. Check tasks as complete
4. Delete tasks when no longer needed
## Technical Details
- **No dependencies** - Pure HTML/CSS/JavaScript
- **Local storage** - Data persists between sessions
- **Responsive design** - Works on desktop and mobile
- **Accessible** - Screen reader friendly
## Development Process
This project was built using the BMad Method, demonstrating:
- Requirements analysis with PM persona
- Technical architecture with Architect persona
- Implementation with Developer persona
- Quality gates and UDTM validation
- Brotherhood review process
## File Structure
```
task-manager-app/
├── index.html # Main HTML file
├── css/
│ └── styles.css # Application styles
├── js/
│ ├── app.js # Main application logic
│ ├── task.js # Task model and manager
│ └── storage.js # Local storage operations
└── README.md # This file
```
## Next Steps
- [ ] Add task categories/labels
- [ ] Implement task editing
- [ ] Add due dates
- [ ] Export/import functionality
```
### 6.2 Deploy the Application
**Simple Deployment Options:**
1. **Local File System**: Open `index.html` directly in browser
2. **GitHub Pages**: Push to GitHub and enable Pages
3. **Netlify Drag & Drop**: Upload folder to Netlify
4. **Vercel**: Connect GitHub repo to Vercel
---
## Step 7: Reflection & Learning
Capture insights from your first BMad project:
### 7.1 Memory Creation
```
/memory add-project-insights
```
**Key Learnings:**
- BMad Method provides clear structure for development
- Persona switching helps focus on different concerns
- Quality gates prevent issues early
- UDTM ensures thorough thinking
- Brotherhood review catches blind spots
### 7.2 Process Improvements
**What worked well:**
- Clear persona responsibilities
- Incremental quality validation
- Structured thinking approach
**What to improve:**
- Earlier consideration of accessibility
- More thorough edge case testing
- Better integration of design thinking
---
## Congratulations! 🎉
You've successfully built your first project using BMad Method! You've experienced:
✅ **Complete workflow** from requirements to deployment
✅ **Persona switching** for different development phases
✅ **Quality gates** ensuring high standards
✅ **UDTM analysis** for thorough decision-making
✅ **Brotherhood review** for code quality
✅ **Memory system** for continuous learning
## Next Steps
Now that you understand the basics, explore advanced BMad Method features:
- :fontawesome-solid-terminal:{ .lg .middle } **[Master Commands](../commands/quick-reference.md)**
---
Learn all available BMad commands and their advanced usage patterns.
- :fontawesome-solid-diagram-project:{ .lg .middle } **[Advanced Workflows](first-project.md)**
---
Explore workflows for larger projects, team collaboration, and complex scenarios.
- :fontawesome-solid-lightbulb:{ .lg .middle } **[Real Examples](first-project.md)**
---
Study real-world examples and common patterns from successful BMad projects.
- :fontawesome-solid-graduation-cap:{ .lg .middle } **[Best Practices](first-project.md)**
---
Master advanced techniques and patterns for professional BMad development.
**Ready for more?** Try building a more complex application or explore team collaboration features!