Novi.fm · measured 10 November 2026
Novi by the numbers
Everything the two repositories behind Novi.fm can tell about how the platform was built: 18 months of commits, and what they added up to.
2,914
Commits
517k
Lines of hand-written code
4,185
Named tests
662
Callable contracts, HTTP and RPC
17.6
Months, first commit to latest
365
Days with a commit, of 537
The rhythm
Both repositories, 17 May 2025 to 4 November 2026. Only one of the 78 weeks went by without a commit.
Commits per month
August 2026 was the peak: 568 commits in 31 days
- Backend
- Frontend
Show as table
| Month | Backend | Frontend | Total |
|---|---|---|---|
| May 2025 | 13 | 0 | 13 |
| June 2025 | 18 | 0 | 18 |
| July 2025 | 51 | 0 | 51 |
| August 2025 | 80 | 22 | 102 |
| September 2025 | 63 | 95 | 158 |
| October 2025 | 24 | 88 | 112 |
| November 2025 | 44 | 37 | 81 |
| December 2025 | 21 | 30 | 51 |
| January 2026 | 55 | 100 | 155 |
| February 2026 | 39 | 67 | 106 |
| March 2026 | 70 | 113 | 183 |
| April 2026 | 104 | 93 | 197 |
| May 2026 | 61 | 85 | 146 |
| June 2026 | 42 | 17 | 59 |
| July 2026 | 87 | 102 | 189 |
| August 2026 | 301 | 267 | 568 |
| September 2026 | 171 | 156 | 327 |
| October 2026 | 212 | 185 | 397 |
| November 2026 | 1 | 0 | 1 |
Commits by hour of day
The three hours from 21:00 hold 28% of all commits. Central European time.
Show as table
| Hour | Commits |
|---|---|
| 00:00 to 01:00 | 187 |
| 01:00 to 02:00 | 34 |
| 02:00 to 03:00 | 3 |
| 03:00 to 04:00 | 1 |
| 04:00 to 05:00 | 0 |
| 05:00 to 06:00 | 0 |
| 06:00 to 07:00 | 10 |
| 07:00 to 08:00 | 18 |
| 08:00 to 09:00 | 39 |
| 09:00 to 10:00 | 85 |
| 10:00 to 11:00 | 133 |
| 11:00 to 12:00 | 179 |
| 12:00 to 13:00 | 173 |
| 13:00 to 14:00 | 171 |
| 14:00 to 15:00 | 133 |
| 15:00 to 16:00 | 120 |
| 16:00 to 17:00 | 134 |
| 17:00 to 18:00 | 153 |
| 18:00 to 19:00 | 153 |
| 19:00 to 20:00 | 180 |
| 20:00 to 21:00 | 188 |
| 21:00 to 22:00 | 258 |
| 22:00 to 23:00 | 283 |
| 23:00 to 00:00 | 279 |
Commits by weekday
Weekends carry 25% of the work
Show as table
| Weekday | Commits |
|---|---|
| Monday | 444 |
| Tuesday | 449 |
| Wednesday | 355 |
| Thursday | 514 |
| Friday | 412 |
| Saturday | 402 |
| Sunday | 338 |
- Commits per active day
- 8.0
- Busiest single day
- 31 March 2026 · 66 commits
- Longest run of days with a commit
- 28 days
- Peak commit hour
- 22:00 to 23:00 · 283
- Night commits, 22:00 to 06:00
- 787 (27%)
- Weekend commits
- 740 (25%)
- Commits by kind
- feature 598 · fix 616 · docs 164 · chore 64 · performance 42
- Commit messages
- 292k words · 100 on average · longest 815
- Release tags since 5 August 2026
- 244 (about 3 a day)
- Distinct files ever touched
- 4,532
What it adds up to
Lines are counted from tracked files only. Generated code and committed evaluation data are left out of every figure.
Hand-written code by kind
Lines that are neither blank nor comment: 517,140 in all. Tests are 24%.
| Body of code | Files | Raw lines | Code lines |
|---|---|---|---|
| Backend services | 510 | 248,365 | 182,994 |
| Backend tests | 577 | 135,380 | 108,008 |
| Interface contracts | 2 | 8,309 | 5,743 |
| Backend scripts and configuration | 84 | 15,024 | 10,833 |
| Frontend application | 309 | 210,284 | 148,232 |
| Frontend tests | 178 | 24,287 | 17,552 |
| Stylesheets | 94 | 51,078 | 40,084 |
| Frontend pages and scripts | 15 | 4,194 | 3,694 |
| Hand-written code | 1,769 | 696,921 | 517,140 |
Contracts and endpoints
- RPC services
- 17
- RPC methods
- 341 · 21 streaming
- Messages · enumerations · fields
- 663 · 51 · 3,604
- HTTP routes, method and path
- 321 over 245 paths
- Callable contracts, in all
- 662
Tests
- Backend test functions
- 3,218 in 577 files
- Subtests · benchmarks
- 270 · 12
- End-to-end browser cases
- 754 in 144 suites
- Frontend unit cases
- 213 in 31 files
- Named tests, in all
- 4,185
- Backend test files against source files
- 577 against 510
Method. Commit counts and dates come from the history of both repositories as it stood on 10 November 2026, with every date and hour in Central European time. Line counts cover tracked files only, split into raw lines and lines that are neither blank nor comment. Routes are distinct method-and-path registrations in the route tables. RPCs, messages and fields are counted from the contract definitions. Tests are counted as test functions and test cases, not test files.