Each column represents a snapshot taken at the time of a tagged release on main.
Add a new column for every major release to track growth over time.
Metric v5.01.5 Release date 2026-01-30 Branch mainLatest commit Merge PR #2441
Metric v5.01.5 Total files (excl. git, node_modules, dist)1,544 Total lines of code 261,906 Total characters 42,707,667 Authored code (lines) 156,990 Authored code % 59.94%
Authored code = .vue + .js (non-bundled) + .ts + .scss + .css + .html.
Excludes generated bundles (Storybook), JSON configs, documentation, SVG assets.
File type Files Lines v5.01.5 % of authored .vue704 112,329 71.55% .js (non-bundled)367 41,467 26.41% .scss22 1,952 1.24% .css4 707 0.45% .html6 517 0.33% .ts2 18 0.01%
Metric v5.01.5 Total Vue SFCs 703 Components (in components/)680 Pages (in pages/)17 Layouts (in layouts/)3 Component directories 363
Metric v5.01.5 Store modules (Vuex)92 Frontend JS files (src/)269 Frontend JS lines (src/)29,210 Backend JS files (functions/)4 Backend JS lines (functions/)431
File type Files Lines .mdx42 6,178 .md30 1,358 .json46 91,807 .yml12 1,136 .svg124 4,283
Item Detail Storybook bundles (storybook-static/)10 minified JS files, ~32M chars JSON bulk Mostly package-lock.json — ~91K lines
When tagging a new release, add a column to each table above. Run the
stats gathering commands documented in the
stats collection script section below.
Run from the sylva-enterprise root. All commands exclude .git/,
node_modules/, .cache/, dist/, .quasar/, and functions/node_modules/.
EXCLUDE = " -not -path './.git/*' -not -path './node_modules/*' -not -path './.cache/*' -not -path './dist/*' -not -path './.quasar/*' -not -path './functions/node_modules/*' "
eval " find . -type f $EXCLUDE " | wc -l
# Lines & chars per extension
for ext in vue js ts json css scss html yml yaml mdx md svg sh mdc ; do
files = $( eval " find . -type f $EXCLUDE -name '*. $ext ' " )
[ -z " $files " ] && continue
fcount = $( echo " $files " | wc -l | tr -d ' ' )
lcount = $( echo " $files " | tr ' \n ' ' \0 ' | xargs -0 wc -l | tail -1 | awk ' {print $1} ' )
ccount = $( echo " $files " | tr ' \n ' ' \0 ' | xargs -0 wc -c | tail -1 | awk ' {print $1} ' )
printf " %-8s %5s files %8s lines %10s chars\n " " . $ext " " $fcount " " $lcount " " $ccount "
find . -path ' */components/* ' -name ' *.vue ' $EXCLUDE | wc -l # components
find . -path ' */pages/* ' -name ' *.vue ' $EXCLUDE | wc -l # pages
find . -path ' */layouts/* ' -name ' *.vue ' $EXCLUDE | wc -l # layouts
find . -path ' */store* ' -name ' *.js ' -not -path ' ./node_modules/* ' | wc -l
find ./src -type f -name ' *.js ' -print0 | xargs -0 wc -l | tail -1
find ./functions -type f -name ' *.js ' -not -path ' ./functions/node_modules/* ' -print0 | xargs -0 wc -l | tail -1