Roadmap Block
The roadmap block configures project-level settings for roadmapping and task planning. This block defines team capacity, timeline parameters, and project planning constraints.
Purpose
The roadmap block helps you:
- Set project timeline and start date
- Define team capacity and resources
- Configure working hours
- Establish planning parameters
Syntax
roadmap {
start_date = "YYYY-MM-DD"
team_size = N
hours_per_day = N
}Attributes
Required Attributes
None - all attributes are optional with sensible defaults.
Optional Attributes
start_date
The project start date for roadmap planning.
- Type: String (date)
- Required: No
- Format:
"YYYY-MM-DD" - Default: Current date
roadmap {
start_date = "2025-01-01"
}team_size
Number of team members available for the project.
- Type: Number
- Required: No
- Default: 1
roadmap {
team_size = 5
}hours_per_day
Available working hours per team member per day.
- Type: Number
- Required: No
- Default: 8
- Common values: 4-8 hours
roadmap {
hours_per_day = 6
}Examples
Basic Roadmap
roadmap {
start_date = "2025-01-01"
team_size = 3
hours_per_day = 6
}Small Team
roadmap {
start_date = "2025-02-01"
team_size = 2
hours_per_day = 8
}Part-Time Team
roadmap {
start_date = "2025-01-15"
team_size = 4
hours_per_day = 4 # Half days
}Integration with Tasks
The roadmap configuration works with task blocks to calculate:
- Start and end dates for each task
- Resource allocation
- Timeline dependencies
- Project completion estimates
Example with tasks:
roadmap {
start_date = "2025-01-01"
team_size = 3
hours_per_day = 6
}
task "Build Customer Table" {
builds "Sales.Customer"
assignee = "alice"
status = "pending"
}
task "Build Order Table" {
builds "Sales.Order"
depends_on "Build Customer Table"
assignee = "bob"
status = "pending"
}
task "Customer Dashboard" {
builds "Sales_Analytics.Customer_Overview"
depends_on "Build Customer Table"
depends_on "Build Order Table"
assignee = "charlie"
status = "pending"
}Capacity Calculation
The roadmap block enables automatic capacity calculations:
Total Daily Capacity:
daily_capacity = team_size × hours_per_dayExample:
roadmap {
team_size = 3 # 3 people
hours_per_day = 6 # 6 hours each
}
# Total = 3 × 6 = 18 hours per dayWeekly Capacity:
weekly_capacity = daily_capacity × 5 # 5 working daysUse Cases
1. Sprint Planning
roadmap {
start_date = "2025-01-06" # Monday
team_size = 5
hours_per_day = 6 # 6 productive hours
}
task "Sprint 1 - Core Entities" {
builds "Platform.User"
builds "Platform.Account"
manual_hours = 120 # 2 weeks
}
task "Sprint 2 - Data Products" {
builds "SaaS_Metrics"
depends_on "Sprint 1 - Core Entities"
manual_hours = 120
}2. Phased Rollout
roadmap {
start_date = "2025-02-01"
team_size = 8
hours_per_day = 7
}
task "Phase 1 - Foundation" {
builds "Customer.Customer"
builds "Sales.Order"
manual_hours = 200
}
task "Phase 2 - Analytics" {
builds "Customer_Analytics"
depends_on "Phase 1 - Foundation"
manual_hours = 150
}
task "Phase 3 - Advanced Features" {
builds "Product_Recommendations"
depends_on "Phase 2 - Analytics"
manual_hours = 180
}3. Resource Constrained
roadmap {
start_date = "2025-01-15"
team_size = 2 # Small team
hours_per_day = 4 # Part-time
}
task "MVP - Essential Entities" {
builds "Platform.User"
builds "Platform.Subscription"
manual_hours = 80
notes = "Focus on core functionality only"
}Best Practices
Be realistic with hours per day
mml# Unrealistic - assumes 100% coding time roadmap { hours_per_day = 8 } # Realistic - accounts for meetings, interruptions roadmap { hours_per_day = 6 }Account for team availability
mml# If you have 5 people but 2 are part-time roadmap { team_size = 3 # Full-time equivalents hours_per_day = 6 }Start dates should be Mondays
mml# Good - starts on a Monday roadmap { start_date = "2025-01-06" } # Avoid - mid-week starts complicate planning roadmap { start_date = "2025-01-08" # Wednesday }Update as team changes
mml# Before - solo developer roadmap { start_date = "2025-01-01" team_size = 1 hours_per_day = 8 } # After - team grows roadmap { start_date = "2025-02-01" team_size = 3 hours_per_day = 6 }Document assumptions
mmlroadmap { start_date = "2025-01-01" team_size = 5 hours_per_day = 6 # Assumes: # - 2 senior, 3 mid-level engineers # - 6 productive hours (2 hours for meetings, etc.) # - No major holidays in timeline }
Complete Example
# Roadmap configuration
roadmap {
start_date = "2025-01-06"
team_size = 4
hours_per_day = 6
}
# Domains
domain "Sales" {
entity "Customer" { ... }
entity "Order" { ... }
}
# Entity estimates
entity_estimate "Sales.Customer" {
estimated_hours = 80
complexity = "medium"
}
entity_estimate "Sales.Order" {
estimated_hours = 60
complexity = "low"
}
# Tasks
task "Customer Entity" {
builds "Sales.Customer"
assignee = "alice"
status = "in-progress"
# Duration: ~2.7 weeks (80 hours ÷ (4 people × 6 hours/day))
}
task "Order Entity" {
builds "Sales.Order"
depends_on "Customer Entity"
assignee = "bob"
status = "pending"
# Duration: ~2 weeks (60 hours ÷ (4 people × 6 hours/day))
}
task "Sales Dashboard" {
builds "Sales_Analytics.Revenue_Dashboard"
depends_on "Customer Entity"
depends_on "Order Entity"
assignee = "charlie"
status = "pending"
manual_hours = 40
}Viewing the Roadmap
In the Modality app, the roadmap view shows:
- Timeline with task bars
- Dependencies between tasks
- Resource allocation
- Team assignments
- Progress tracking
Limitations
- Assumes uniform team productivity
- Does not account for holidays/vacations
- Simple linear task scheduling
- No parallel task optimization
For more accurate planning, consider:
- Adding buffer time to estimates
- Using conservative hours per day
- Regular progress updates
- Adjusting team size as needed
Related
- Task Block - Define individual tasks
- Estimating Guide - Estimate entity complexity
- Roadmapping Guide - Create project roadmaps
