Engineering Effort Report

Solara28 codebase · measured 2026-08-19/20, revision factor updated 2026-08-20 · unlisted page, not linked from any site navigation

This page converts the measured size of the Solara28 codebase into a human-equivalent workload, then into a salary-based cost estimate. Every number below is derived from fixed conversion rules applied to things that were actually counted in the repository — lines of code, translation words, documentation words, and file counts. Nothing here is a recorded timesheet, an invoice, or a project quote. It is a reproducible calculation, and the calculation is described in full below so it can be checked or challenged.

The headline numbers

60,462
Realistic loaded working days
274.8
Realistic loaded person-years

This is the loaded, realistic figure — it accounts for the fact that most artifacts get revised, and that a paid day is never 100% heads-down production time: it includes meetings, planning, code review, support, and normal breaks. The underlying calculation starts from a smaller, purely hypothetical artifact baseline (18,207 days / 82.8 person-years — the theoretical minimum if every line were written once, correctly, with zero revision or overhead) and then loads it up to the realistic figure above; that baseline number appears later on this page only as a documented step in the calculation, not as a standalone answer, because on its own it does not represent a realistic staffing or cost scenario. How the loading was calculated, including how much of the revision assumption is now measured from this repository's own history rather than assumed outright, is explained in full below.

How the working-day count was built

The starting point was a full, excluded-and-labelled inventory of the repository: every TypeScript/TSX source file, every Supabase edge function, every SQL schema and migration file, every translation JSON file across five languages, every configuration file for Vercel/Supabase/CI, every script, and every Markdown document. Generated code (a 31,836-line auto-generated database type file), dependency lockfiles, test-result output, and node_modules were explicitly excluded — they were not authored by a person and including them would inflate the count without representing real effort.

Each category of measured content was converted to working days using one fixed rate, applied uniformly rather than tuned per role:

The exact conversion rules, applied uniformly across every role:

ItemRule
Working day8 hours
Technical artifacts80 authored physical LOC per working day
Technical documentation1,500 Markdown words per working day
Base-language and neutral content1,000 value words per working day
Target-language translation2,000 value words per working day
Role roundingRound each role upward to the next whole working day
Legacy overlapExact SHA-256 duplicate files removed before conversion
Other exclusions from working daysGit metadata, worktrees, backups, generated locks, build/dist/coverage/cache output, test results, binary media, credentials, and secret values

These rates are stated assumptions, not figures pulled from an external productivity study — no universally agreed "lines of code per day" industry benchmark exists, and this report does not claim one does. They are applied consistently across the entire codebase so the resulting comparison between roles is at least internally fair, even though the absolute rate itself is a judgment call. PLOC means physical lines of text. Translation word counts use recursive JSON string values; JSON keys are excluded.

The measured input, and exactly how each role's day total was derived:

RoleNon-overlapping measured inputCalculationWorking days
Frontend and application engineering842,691 source TS/TSX − 48,813 named-test LOC − 31,836 generated-type LOC + 1,439 non-TS source support + 2,399 public support + 552 root HTML766,432 / 809,581
Backend, API, and edge integrations125,811 edge-function TS − 7,454 named-test LOC118,357 / 801,480
Database and data engineering60,018 canonical schema + 12,944 migrations + 83,682 sample-data SQL156,644 / 801,959
QA and security verification48,813 frontend tests + 7,454 edge tests + 47,771 top-level test assets104,038 / 801,301
Cloud, DevOps, and tooling4,262 config − 378 localized HTML + 948 Vercel API + 15,861 non-Markdown scripts + 487 non-overlapping tool code21,180 / 80265
Localization243,245 base/neutral words and 871,581 target-language words243,245/1,000 + 871,581/2,000680
Technical documentation and architecture621 active current Markdown files / 1,959,249 words1,959,249 / 1,5001,307
Current repository subtotalSum of rounded role rows16,573
Legacy full-stack lineage810 exact-file-unique authored files / 130,645 PLOC130,645 / 801,634
Combined workload representedCurrent repository plus exact-file-deduplicated legacy archiveSum of rounded role rows18,207

The legacy row exists because an earlier, single-tenant version of this application was built and later superseded. Its surviving source was deduplicated by exact file hash before conversion, so files that are byte-identical across versions are only counted once. Cloud-provider runtime remains in its owning application or edge-function row; dedicated deployment configuration, Vercel API code, scripts, CI/CD, and operational tooling are assigned to Cloud/DevOps.

From artifact days to a loaded, paid-time estimate

The 18,207-day baseline only counts the act of producing the final artifact. It does not account for two things that are true of almost all real software work: artifacts get revised, and a paid working day is never spent entirely on production.

Revision. A first pass at this estimate assumed every artifact received one flat, uniform revision equal to 30% of its value — a stated assumption, not a measurement. That flat number has since been replaced, role by role, with a revision factor measured directly from this repository's own Git history, wherever the role's source files are tracked in Git. For each role, every commit touching that role's files was walked and every deleted line counted — a deleted line is a line that existed and was later removed or rewritten, the direct signature of rework. Three one-time bulk events (the original repository import and a duplicated documentation/backup detracking commit, together 84.8% of all raw historical churn) were excluded first, since they are not iterative revision. The result is a per-role ratio ranging from 12.1% to 51.4% — tests are revised least, localization and edge functions are revised most — a 4.2× spread that a single flat percentage cannot represent. Four roles (database, architecture, technical writing, and the legacy archive) keep the original 30% assumption, disclosed as still unmeasured, because their source material lives in a part of the repository that is not tracked in Git at all and therefore has no history to measure. Applying the measured ratios where they exist, and the disclosed 30% assumption where they do not, to the 18,207-day baseline (plus a smaller, separately measured backup-only content floor for material that exists in historical backups but not in the current tree) produces a focused-effort figure of 27,206 days.

Paid-time utilization. A focused-effort day is not the same as a paid day. A peer-reviewed study of 5,971 professional software developers at Microsoft, published in IEEE Transactions on Software Engineering (Meyer, Barr, Bird & Zimmermann, 2019), measured how developers actually spend a full workday. Summing that study's own reported activity categories: 45% of a typical day is development-heavy work (coding, debugging, testing, specification, review, documentation), 36% is collaboration (meetings, email, interruptions, helping others), and the remaining 16% is other necessary work and ordinary breaks. In other words, on an average day a developer spends well under half their paid time on the activity that actually produces the artifact.

Dividing the 27,206-day focused-effort figure by that 45% development-heavy share converts it into a loaded, paid-day figure: 60,462 working days, equal to 274.8 person-years at 220 paid working days per year. This is the number that is comparable to what it would actually cost to staff and pay a team to produce this body of work under normal, real-world working conditions — not just the time spent literally writing the artifact.

Sensitivity, not certainty. The same study also reports the development-heavy share on a "good" workday (50%) and a "bad" workday (42%). Applying those alternate shares to the same focused-effort figure gives a plausible range from roughly 54,400 to 64,800 loaded working days (about 247 to 295 person-years) depending on which slice of the study is used. 274.8 person-years is the mean-workday figure, presented as the primary estimate because it reflects an average day rather than a best or worst one. A separate, slightly lower figure (270.2 person-years) exists from an earlier pass of this same calculation that used a flat 30% revision factor for every role instead of the measured per-role ratios described above; the two are close only because the measured ratios happen to average out near 30% across the roles they cover — the per-role distribution underneath them is materially different.

Turning working days into a labor cost estimate

Each role's working-day total was converted to a salary-equivalent cost using published, externally sourced 2026 salary ranges for Switzerland and Germany — national salary guides (Robert Half, jobs.ch) and, where available, official government wage data (Germany's Bundesagentur für Arbeit Entgeltatlas). The formula is simple and identical for every role:

role cost = working days × annual gross salary ÷ 220

220 is used as the number of paid working days in a year. Every figure below is a national gross base salary range — it excludes bonuses, benefits, employer social contributions, recruiting cost, equipment, and facilities, because no specific employee profiles or invoices exist to price those. Two of the German government salary-data pages cited in the underlying calculation render their figures dynamically and could not be independently re-confirmed at time of writing; every other salary source was directly and successfully re-checked against the live page.

SDLC roles, salary ranges, and per-role cost (unloaded baseline days — intermediate calculation step)

The role costs below use the unloaded 18,207-day artifact baseline, before the revision and paid-time-utilization loading described further down this page is applied — they are shown to make the per-role salary math auditable, not as a realistic cost estimate on their own. The realistic, loaded per-role cost is in the "Realistic loaded TCO" section below. Each role cost below is working days × annual gross salary / 220, using published 2026 salary-market ranges (Robert Half, jobs.ch, and where available Germany's official Bundesagentur für Arbeit Entgeltatlas). The 1,307-day technical documentation/architecture row from the table above is split here without changing its total: 342 days for architecture/API/database/production-staging/testing/governance Markdown (511,903 words), and 965 days for the remaining technical-writing Markdown (1,447,346 words).

Frontend/application engineer 9,581 days

Product implementation and maintenance

Switzerland salary/yr
CHF 87,750–115,500
Switzerland role cost
CHF 3.82M–5.03M
Germany salary/yr
EUR 57,000–91,500
Germany role cost
EUR 2.48M–3.98M
Backend/API/edge engineer 1,480 days

APIs, edge functions, and integrations

Switzerland salary/yr
CHF 101,500–142,500
Switzerland role cost
CHF 0.68M–0.96M
Germany salary/yr
EUR 60,250–95,500
Germany role cost
EUR 0.41M–0.64M
Database/data engineer 1,959 days

Schema, migrations, RLS, and data lifecycle

Switzerland salary/yr
CHF 112,500–148,500 (BI proxy)
Switzerland role cost
CHF 1.00M–1.32M
Germany salary/yr
EUR 63,500–86,250
Germany role cost
EUR 0.57M–0.77M
QA/security verification engineer 1,301 days

Test automation, quality gates, security verification

Switzerland salary/yr
CHF 77,986–104,000
Switzerland role cost
CHF 0.46M–0.62M
Germany salary/yr
EUR 55,788–87,000 (unverified)
Germany role cost
EUR 0.33M–0.51M
Cloud/DevOps/tooling engineer 265 days

CI/CD, deployment, provider configuration, operations

Switzerland salary/yr
CHF 91,250–142,500
Switzerland role cost
CHF 0.11M–0.17M
Germany salary/yr
EUR 69,250–99,500
Germany role cost
EUR 0.08M–0.12M
Localization specialist 680 days

Base copy and four target-language corpora

Switzerland salary/yr
CHF 80,000–95,200
Switzerland role cost
CHF 0.25M–0.29M
Germany salary/yr
EUR 37,764–71,436 (unverified)
Germany role cost
EUR 0.12M–0.22M
Solution architect / SDLC governance 342 days

Architecture, lifecycle standards, technical governance

Switzerland salary/yr
CHF 130,000–158,500
Switzerland role cost
CHF 0.20M–0.25M
Germany salary/yr
EUR 75,500–109,500
Germany role cost
EUR 0.12M–0.17M
Technical writer 965 days

Product, operational, and reference documentation

Switzerland salary/yr
CHF 85,500–107,780
Switzerland role cost
CHF 0.38M–0.47M
Germany salary/yr
EUR 39,500–54,800
Germany role cost
EUR 0.17M–0.24M
Legacy full-stack engineer 1,634 days

Restored-version maintenance and migration surface

Switzerland salary/yr
CHF 101,500–142,500 (Software Developer proxy)
Switzerland role cost
CHF 0.75M–1.06M
Germany salary/yr
EUR 48,000–70,000
Germany role cost
EUR 0.36M–0.52M

Robert Half ranges are national 2026 25th–75th-percentile starting base salaries, excluding bonuses and benefits. Swiss jobs.ch ranges use 0–2-year and 21+-year experience averages and include bonuses/13th-month salary. German government ranges are 2025 full-time monthly quartiles, annualized. Two Entgeltatlas pages (QA/security, localization) render their figures dynamically and could not be independently re-confirmed at the time of writing — marked unverified above; every other salary source was directly re-checked against its live page and matched exactly.

Cost of the hypothetical artifact baseline (intermediate calculation step, not a realistic figure)

Before loading, the same salary ranges applied to the unloaded 18,207-day baseline produce the table below. This is not presented as a cost estimate in its own right — it is the input the realistic, loaded TCO in the next section is built from, shown here only so the full calculation is auditable end to end.

ScopeDaysCH lowCH midCH highDE lowDE midDE high
Current repository16,573CHF 6.90MCHF 8.01MCHF 9.11MEUR 4.27MEUR 5.47MEUR 6.66M
Legacy archive1,634CHF 0.75MCHF 0.91MCHF 1.06MEUR 0.36MEUR 0.44MEUR 0.52M
Combined unloaded baseline (not realistic on its own)18,207CHF 7.66MCHF 8.91MCHF 10.17MEUR 4.63MEUR 5.91MEUR 7.18M

Realistic loaded TCO — 60,462-day, measured-ratio scenario

Applying the same per-role salary ranges to the loaded 60,462-day figure (rather than the 18,207-day artifact baseline) produces the labor-cost sensitivity that includes the per-role measured (or, for four roles, disclosed-assumed) revision factor and the study-derived 45% paid-time utilization factor:

RoleLoaded working daysSwitzerland (CHF)Germany (EUR)
Frontend / application engineer (33.9% measured)28,50911.37M–14.97M7.39M–11.86M
Backend / API / edge engineer (44.3% measured)4,7472.19M–3.07M1.30M–2.06M
Database / data engineer (30% assumed)10,4235.33M–7.04M3.01M–4.09M
QA / security verification engineer (12.1% measured)3,2431.15M–1.53M0.82M–1.28M
Cloud / DevOps / tooling engineer (13.4% measured)6690.28M–0.43M0.21M–0.30M
Localization specialist (51.4% measured)2,2890.83M–0.99M0.39M–0.74M
Solution architect / SDLC governance (30% assumed)1,5850.94M–1.14M0.54M–0.79M
Technical writer (30% assumed)4,2741.66M–2.09M0.77M–1.06M
Legacy full-stack engineer (30% assumed)4,7232.18M–3.06M1.03M–1.50M
CHF 25.93M–34.33M
Switzerland · 60,462 days
EUR 15.46M–23.69M
Germany · 60,462 days

Measured-ratio TCO — full breakdown

ScopeDaysCH lowCH midCH highDE lowDE midDE high
Existing artifact baseline18,207CHF 7.66MCHF 8.91MCHF 10.17MEUR 4.63MEUR 5.91MEUR 7.18M
Measured-ratio revision + 45% utilization loaded TCO60,462CHF 25.93MCHF 30.13MCHF 34.33MEUR 15.46MEUR 19.58MEUR 23.69M
Increase over the artifact baseline42,255CHF 18.27MCHF 21.22MCHF 24.16MEUR 10.83MEUR 13.67MEUR 16.51M

This is the most defensible loaded estimate in this document, because five of its nine revision factors are measured from the repository's own history rather than assumed. The remaining four roles (database, architecture, technical writing, legacy) still rest on the disclosed 30% assumption, for the structural reason given above — their source lives in a part of the repository this project deliberately does not track in Git.

Equivalent human headcount

A person-year is one person working for one year. Converting the realistic, loaded total (274.8 person-years — the figure that accounts for revision effort and normal paid-workday overhead) into a headcount is division, not a new estimate — and it requires a delivery-window input this page has no way to measure or verify, so no single number is presented as "the" answer. Only the realistic total is used here; the smaller, unloaded 82.8-person-year artifact-baseline figure is not, because it does not represent a realistic staffing scenario on its own (see "The headline numbers" above).

Delivery windowRealistic headcount (274.8 person-years ÷ window)
1 year275
2 years137
3 years92
5 years55

This is exact division, nothing more. This page does not contain a measurement of how large a team this specific project could actually sustain, how coordination overhead would scale for this specific codebase, or what delivery timeline is achievable — those would require a separate, explicitly scoped staffing study, not a derivation from the artifact and salary data collected here. No delivery window or headcount in the table above is asserted to be more realistic than another; the table exists only to show what the realistic total implies at a few common window lengths.

What this number is, and is not

This is a reproducible calculation from measured artifacts, not a record of actual elapsed time, an audited invoice, or a certified cost estimate. Every input line count, word count, and file count in the underlying calculation was independently measured against the repository, and the revision factor for five of nine roles is now measured from the repository's own Git history rather than assumed. The conversion rates (lines per day, words per day) remain disclosed assumptions rather than externally validated constants, as does the 30% revision factor still used for the four roles whose source material is not tracked in Git at all (database, architecture, technical writing, legacy archive). The salary figures are real, current, published national data, independently re-verified against their source pages at the time of writing, with one exception (two dynamically rendered government salary pages) noted openly above rather than silently presented as confirmed.