Software Project Cost Estimator
Your boss asks: "How much will this project cost?" You say: "Let me calculate." Then you open Excel and fill in a bunch of formulas. Actually, you don't need to — just enter the team configuration and timeline, and the cost calculates itself.
slex: "0.1",
namespace: "example_project_cost",
g: {
frontend: 2, backend: 3, tester: 1, designer: 1,
months: 6,
salary: 15000,
teamSize: function () { return this.frontend + this.backend + this.tester + this.designer; },
laborCost: function () { return this.teamSize() * this.salary * this.months; },
equipmentCost: function () { return this.teamSize() * 5000; },
officeCost: function () { return this.teamSize() * 2000 * this.months; },
subtotal: function () { return this.laborCost() + this.equipmentCost() + this.officeCost(); },
riskBuffer: function () { return this.subtotal() * 0.15; },
totalCost: function () { return this.subtotal() + this.riskBuffer(); },
perPersonCost: function () { return this.teamSize() > 0 ? this.totalCost() / this.teamSize() : 0; },
monthlyBurn: function () { return this.months > 0 ? this.totalCost() / this.months : 0; }
},
layout: {
"section:estimator": {
eyebrow: "Calculator",
title: "Software Project Cost Estimator",
subtitle: "Enter team configuration and timeline — cost calculates automatically.",
"card:estimator": {
title: "Project Cost Estimation",
"grid:team": {
columns: 1, mdColumns: 4,
"column:fe": {
"input:frontend": { label: "Frontend", "$value": "g.frontend", type: "number", unit: "ppl", onchange: "g.frontend = Number($event || 0)" }
},
"column:be": {
"input:backend": { label: "Backend", "$value": "g.backend", type: "number", unit: "ppl", onchange: "g.backend = Number($event || 0)" }
},
"column:qa": {
"input:tester": { label: "QA", "$value": "g.tester", type: "number", unit: "ppl", onchange: "g.tester = Number($event || 0)" }
},
"column:ui": {
"input:designer": { label: "Design", "$value": "g.designer", type: "number", unit: "ppl", onchange: "g.designer = Number($event || 0)" }
}
},
"grid:params": {
columns: 1, mdColumns: 2,
"column:period": {
"input:months": { label: "Timeline", "$value": "g.months", type: "number", unit: "months", onchange: "g.months = Number($event || 0)" },
"slider:months": { label: "Timeline", "$value": "g.months", min: 1, max: 24, step: 1, unit: "mo", onchange: "g.months = Number($event)" }
},
"column:salaryField": {
"input:salary": { label: "Avg monthly salary", "$value": "g.salary", type: "number", unit: "RMB", onchange: "g.salary = Number($event || 0)" },
"slider:salary": { label: "Avg monthly salary", "$value": "g.salary", min: 8000, max: 50000, step: 1000, unit: "RMB", onchange: "g.salary = Number($event)" }
}
},
"grid:results": {
columns: 1, mdColumns: 4,
"stat:team": { label: "Team", "$value": "g.teamSize()", unit: "ppl" },
"stat:total": { label: "Total cost", "$value": "g.totalCost().toFixed(0)", unit: "RMB" },
"stat:perperson": { label: "Per person", "$value": "g.perPersonCost().toFixed(0)", unit: "RMB" },
"stat:monthly": { label: "Monthly burn", "$value": "g.monthlyBurn().toFixed(0)", unit: "RMB" }
}
}
}
}
}7 people for 6 months — what's the monthly burn? Will adding a tester blow the budget? Drag to find out.
slex: "0.1",
namespace: "example_project_cost",
layout: {
"card:breakdown": {
title: "Cost Breakdown",
"grid:costs": {
columns: 1, mdColumns: 3,
"stat:labor": { label: "Labor cost", "$value": "g.laborCost().toFixed(0)", unit: "RMB" },
"stat:equipment": { label: "Equipment", "$value": "g.equipmentCost().toFixed(0)", unit: "RMB" },
"stat:office": { label: "Office cost", "$value": "g.officeCost().toFixed(0)", unit: "RMB" }
},
"grid:extra": {
columns: 1, mdColumns: 2,
"stat:risk": { label: "Risk buffer (15%)", "$value": "g.riskBuffer().toFixed(0)", unit: "RMB" },
"stat:total": { label: "Total", "$value": "g.totalCost().toFixed(0)", unit: "RMB" }
},
"callout:tip": {
"$tone": "g.months > 12 ? 'warning' : 'info'",
"$text": "g.months > 12 ? 'Timeline exceeds 1 year — consider phased delivery to reduce risk.' : '15% risk buffer is an industry rule of thumb. Complex projects may need 20-25%.'"
}
}
}
}Common configuration reference:
| Team | Timeline | Salary | Total Cost |
|---|---|---|---|
| 3 ppl | 3 months | 15k | 196,650 |
| 5 ppl | 6 months | 15k | 655,500 |
| 8 ppl | 9 months | 20k | 1,989,000 |
| 10 ppl | 12 months | 25k | 4,140,000 |
The 15% risk buffer is an industry rule of thumb — complex projects can go up to 20-25%. Equipment and office costs are per-person estimates, excluding servers and third-party services.