Project
Concrete initiatives with deliverables
Project
Projects are concrete initiatives with defined scope, deliverables, and timelines. Projects contain Tasks and roll up to Plans.
Overview
A Project is a bounded effort to produce specific deliverables. Unlike ongoing operations, projects have a clear start, end, and success criteria.
import { Project } from 'business-as-code'
const project = Project('Customer Portal Redesign', {
plan: retentionPlan,
deliverables: [
'New dashboard UI',
'Self-service account management',
'Usage analytics page',
],
timeline: {
start: '2024-03-01',
end: '2024-05-15',
},
team: ['@alice', '@bob', '@carol'],
})Creating Projects
import { Project } from 'business-as-code'
const project = Project('API v2 Development', {
// Optional link to plan
plan: apiModernizationPlan,
// What we're building
description: 'Build next-generation REST and GraphQL APIs',
deliverables: [
'REST API with OpenAPI spec',
'GraphQL API with schema',
'SDK for JavaScript and Python',
'API documentation site',
],
// Timeline
timeline: {
start: '2024-02-01',
end: '2024-04-30',
milestones: [
{ name: 'API Design Complete', date: '2024-02-15' },
{ name: 'Alpha Release', date: '2024-03-15' },
{ name: 'Beta Release', date: '2024-04-15' },
],
},
// Resources
team: {
lead: '@sarah',
members: ['@mike', '@lisa', '@john'],
},
budget: 75000,
})Project Tasks
Projects contain tasks:
import { Task } from 'digital-tasks'
// Add tasks to project
await project.addTask(Task('Design API schema'))
await project.addTask(Task('Implement authentication'))
await project.addTask(Task('Write integration tests'))
// Get all tasks
const tasks = await project.tasks()
// Task completion drives project progress
project.progress // Based on completed tasksProject Boards
// Kanban-style board
const board = await project.board()
// {
// backlog: [task1, task2],
// todo: [task3],
// inProgress: [task4, task5],
// review: [task6],
// done: [task7, task8, task9]
// }
// Move tasks
await task4.moveTo('review')Milestones
// Track milestone progress
const milestones = project.milestones
for (const milestone of milestones) {
console.log(milestone.name, milestone.status, milestone.progress)
}
// Mark milestone complete
await project.completeMilestone('Alpha Release')Project Health
project.health // 'healthy' | 'at_risk' | 'critical'
// Health factors
project.schedule.status // 'on_track' | 'behind' | 'ahead'
project.budget.status // 'on_track' | 'over' | 'under'
project.scope.status // 'stable' | 'creeping' | 'reduced'
// Blockers
const blockers = await project.blockers()Project States
project.status // 'planning' | 'active' | 'paused' | 'completed' | 'cancelled'
await project.start()
await project.pause('Waiting for dependency')
await project.resume()
await project.complete()See Also
- Plan - Strategic context for projects
- Task - Work items within projects
- Goal - What projects contribute to
- Workflow - Automated project workflows
Was this page helpful?