Novi Systems

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.

Fig. 1

Commits per month

August 2026 was the peak: 568 commits in 31 days

  • Backend
  • Frontend
Show as table
MonthBackendFrontendTotal
May 202513013
June 202518018
July 202551051
August 20258022102
September 20256395158
October 20252488112
November 2025443781
December 2025213051
January 202655100155
February 20263967106
March 202670113183
April 202610493197
May 20266185146
June 2026421759
July 202687102189
August 2026301267568
September 2026171156327
October 2026212185397
November 2026101
Fig. 2

Commits by hour of day

The three hours from 21:00 hold 28% of all commits. Central European time.

Show as table
HourCommits
00:00 to 01:00187
01:00 to 02:0034
02:00 to 03:003
03:00 to 04:001
04:00 to 05:000
05:00 to 06:000
06:00 to 07:0010
07:00 to 08:0018
08:00 to 09:0039
09:00 to 10:0085
10:00 to 11:00133
11:00 to 12:00179
12:00 to 13:00173
13:00 to 14:00171
14:00 to 15:00133
15:00 to 16:00120
16:00 to 17:00134
17:00 to 18:00153
18:00 to 19:00153
19:00 to 20:00180
20:00 to 21:00188
21:00 to 22:00258
22:00 to 23:00283
23:00 to 00:00279
Fig. 3

Commits by weekday

Weekends carry 25% of the work

Show as table
WeekdayCommits
Monday444
Tuesday449
Wednesday355
Thursday514
Friday412
Saturday402
Sunday338
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.

Fig. 4

Hand-written code by kind

Lines that are neither blank nor comment: 517,140 in all. Tests are 24%.

The same count, by body of code
Body of codeFilesRaw linesCode lines
Backend services510248,365182,994
Backend tests577135,380108,008
Interface contracts28,3095,743
Backend scripts and configuration8415,02410,833
Frontend application309210,284148,232
Frontend tests17824,28717,552
Stylesheets9451,07840,084
Frontend pages and scripts154,1943,694
Hand-written code1,769696,921517,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.