Trello
Project Management Tool
Trello
Overview
Trello is a simple project management tool based on Kanban boards. It organizes tasks through visual card management, making it optimal for small teams and individual use with intuitive operation. It has strong popularity among teams prioritizing simplicity and has achieved top-class evaluation for ease of use.
Details
Trello manages projects using three simple concepts: "Boards," "Lists," and "Cards." Visual workflow management based on the Kanban method allows teams to grasp work status at a glance. As part of Atlassian products, functionality can be added through extensions called PowerUps.
Key Features
- Kanban Boards: Intuitive visual workflow management
- Drag & Drop: Simple card movement for status updates
- PowerUp Extensions: Additional features like calendar, time tracking, voting
- Checklists: Task subdivision within cards
- Label System: Colorful label categorization
- Due Date Management: Deadline setting and reminder features
- Comments & Attachments: File attachments and team communication
- Mobile Support: Comfortable operation on smartphones and tablets
Target Teams
- Small development teams (5-15 people)
- Individual project management
- Creative teams
- Non-technical teams (marketing, sales, etc.)
- Educational institutions and learning projects
Pros and Cons
Pros
- Extremely intuitive with low learning curve
- Free plan provides sufficient functionality
- Beautiful and visually clear interface
- Excellent mobile app usability
- Flexible feature expansion through PowerUps
- API integration with Atlassian ecosystem
Cons
- Insufficient features for complex project management
- Weak Gantt chart and dependency management
- Basic reporting and analytics features
- Lacks management features for large teams
- Time tracking features depend on PowerUps
- Limited customization options
Reference Pages
- Trello Official Website
- Trello Guide
- Trello API Documentation
- Trello PowerUps
- Trello Blog
- Atlassian Community - Trello
Code Examples
Basic Setup
# Install Trello CLI (unofficial)
npm install -g trello-cli
# Setup API authentication
trello set-auth
# Get board list
trello show-boards
# Show specific board details
trello show-board "My Project Board"
Project Creation
# Example using Ruby Trello gem
require 'trello'
# Authentication setup
Trello.configure do |config|
config.developer_public_key = 'your_public_key'
config.member_token = 'your_member_token'
end
# Create new board
board = Trello::Board.create(
name: 'Web App Development Project',
description: 'Q1 web application development',
organization_id: 'org_id' # optional
)
puts "Board created: #{board.name} (ID: #{board.id})"
# Create lists on the board
lists = [
'Ideas & Backlog',
'To Do',
'In Progress',
'Review',
'Done'
]
created_lists = {}
lists.each do |list_name|
list = Trello::List.create(
name: list_name,
board_id: board.id
)
created_lists[list_name] = list
puts "List created: #{list.name}"
end
# Create labels
labels = [
{ name: 'Bug', color: 'red' },
{ name: 'Feature', color: 'green' },
{ name: 'Enhancement', color: 'yellow' },
{ name: 'Urgent', color: 'orange' },
{ name: 'Documentation', color: 'blue' }
]
labels.each do |label_data|
label = Trello::Label.create(
name: label_data[:name],
color: label_data[:color],
board_id: board.id
)
puts "Label created: #{label.name}"
end
Issue Management
# Create card (task)
card = Trello::Card.create(
name: 'Implement user login functionality',
desc: '''
## Requirements
- JWT authentication implementation
- Password hashing
- Session management
## Acceptance Criteria
- [ ] Create login screen
- [ ] Implement authentication API
- [ ] Implement session management
- [ ] Create tests
## Notes
- Must meet security requirements
- Responsive design support
''',
list_id: created_lists['To Do'].id,
due: Date.parse('2024-01-31')
)
# Assign member to card
member = Trello::Member.find('member_username')
card.add_member(member)
# Add label
card.add_label(label_id)
# Add checklist
checklist = Trello::Checklist.create(
name: 'Implementation Tasks',
board_id: board.id,
card_id: card.id
)
# Add checklist items
checklist_items = [
'Database design',
'API design',
'Frontend implementation',
'Backend implementation',
'Create tests',
'Deploy'
]
checklist_items.each do |item_name|
checklist.add_item(item_name)
end
# Add comment to card
card.add_comment('Starting development. Please comment if you have questions.')
# Add attachment (design documents, etc.)
card.add_attachment(
url: 'https://docs.google.com/document/d/...',
name: 'Login Feature Design Document'
)
# Move card (status change)
in_progress_list = created_lists['In Progress']
card.move_to_list(in_progress_list)
puts "Card created: #{card.name}"
Workflow Configuration
# PowerUp utilization example (time tracking)
def setup_time_tracking_powerup(board_id)
# PowerUps are usually configured via web interface
# API has limitations, manual setup recommended
puts "Please enable Time Tracking PowerUp via web interface"
end
# Create card template
def create_card_template(list_id, template_type)
templates = {
'bug_report' => {
name: '[Bug] Enter title',
desc: '''
## Bug Details
- **Environment**:
- **Steps to Reproduce**:
1.
2.
3.
- **Expected Behavior**:
- **Actual Behavior**:
- **Screenshots**:
## Additional Information
- **Browser**:
- **OS**:
- **Related Issues**:
'''
},
'feature_request' => {
name: '[Feature] New feature title',
desc: '''
## Feature Overview
- **Purpose**:
- **Target Users**:
- **Value Proposition**:
## Requirements
### Functional Requirements
- [ ]
- [ ]
### Non-functional Requirements
- [ ]
- [ ]
## Acceptance Criteria
- [ ]
- [ ]
## References
-
'''
}
}
template = templates[template_type]
if template
card = Trello::Card.create(
name: template[:name],
desc: template[:desc],
list_id: list_id
)
puts "Template created: #{template[:name]}"
return card
end
end
# Automation rules (using Butler PowerUp)
def setup_automation_rules
automation_rules = [
{
name: 'Auto-move overdue cards',
trigger: 'When card due date passes',
action: 'Move to "Overdue" list'
},
{
name: 'Auto-assign labeled cards',
trigger: 'When urgent label is added',
action: 'Assign to project manager'
},
{
name: 'Comment notifications',
trigger: 'When comment is added to card',
action: 'Send Slack message'
}
]
puts "Please set up the following automation rules in Butler PowerUp:"
automation_rules.each_with_index do |rule, index|
puts "#{index + 1}. #{rule[:name]}"
puts " Trigger: #{rule[:trigger]}"
puts " Action: #{rule[:action]}"
end
end
Reporting Features
# Generate board progress report
def generate_board_report(board_id)
board = Trello::Board.find(board_id)
lists = board.lists
report = {
board_name: board.name,
total_cards: 0,
lists_stats: {},
member_stats: {},
label_stats: {},
overdue_cards: []
}
lists.each do |list|
cards = list.cards
report[:total_cards] += cards.length
report[:lists_stats][list.name] = {
card_count: cards.length,
cards: []
}
cards.each do |card|
card_info = {
name: card.name,
due_date: card.due,
members: card.members.map(&:full_name),
labels: card.labels.map(&:name)
}
# Check for overdue
if card.due && Date.parse(card.due) < Date.today
report[:overdue_cards] << card_info
end
# Member statistics
card.members.each do |member|
report[:member_stats][member.full_name] ||= 0
report[:member_stats][member.full_name] += 1
end
# Label statistics
card.labels.each do |label|
report[:label_stats][label.name] ||= 0
report[:label_stats][label.name] += 1
end
report[:lists_stats][list.name][:cards] << card_info
end
end
return report
end
# Output report
def output_report(report)
puts "=" * 50
puts "Trello Board Report: #{report[:board_name]}"
puts "=" * 50
puts "Total cards: #{report[:total_cards]}"
puts
puts "【Statistics by List】"
report[:lists_stats].each do |list_name, stats|
puts "#{list_name}: #{stats[:card_count]} cards"
end
puts
puts "【Cards by Member】"
report[:member_stats].each do |member, count|
puts "#{member}: #{count} cards"
end
puts
puts "【Statistics by Label】"
report[:label_stats].each do |label, count|
puts "#{label}: #{count} cards"
end
puts
if report[:overdue_cards].any?
puts "【Overdue Cards】"
report[:overdue_cards].each do |card|
puts "- #{card[:name]} (Due: #{card[:due_date]})"
end
end
end
# Usage example
board_id = 'your_board_id'
report = generate_board_report(board_id)
output_report(report)
Team Collaboration
# Slack integration webhook setup
def setup_slack_integration(board_id, slack_webhook_url)
webhook_config = {
callbackURL: slack_webhook_url,
description: 'Slack notification setup',
active: true
}
# Trello Webhook configuration
webhook = Trello::Webhook.create(webhook_config.merge(
idModel: board_id,
modelType: 'board'
))
puts "Slack integration webhook setup complete: #{webhook.id}"
end
# GitHub integration (using PowerUp)
def integrate_with_github(board_id, github_repo)
# After enabling GitHub PowerUp
puts "Please set up repository integration in GitHub PowerUp:"
puts "Repository: #{github_repo}"
puts "Configuration:"
puts "- Display commit information"
puts "- Display PR information"
puts "- Bidirectional sync with Issues"
end
# Google Drive integration
def integrate_with_google_drive(board_id)
puts "Enable Google Drive PowerUp and configure:"
puts "- Attach Google Docs to cards"
puts "- Project planning with spreadsheets"
puts "- Share presentation materials"
end
# Calendar view (Calendar PowerUp)
def setup_calendar_view(board_id)
puts "Enable Calendar PowerUp to enhance deadline management:"
puts "- Display card due dates in calendar"
puts "- Sync with Google Calendar or Outlook"
puts "- Visualize team work schedule"
end
# Time tracking functionality
def setup_time_tracking(board_id)
puts "Measure work time with Time Tracking PowerUp:"
puts "- Record work time per card"
puts "- Aggregate work time by member"
puts "- Analyze project effort"
end