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.