Skip to content

Codebase Statistics

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.

Metricv5.01.5
Release date2026-01-30
Branchmain
Latest commitMerge PR #2441
Metricv5.01.5
Total files (excl. git, node_modules, dist)1,544
Total lines of code261,906
Total characters42,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 typeFilesLinesv5.01.5 % of authored
.vue704112,32971.55%
.js (non-bundled)36741,46726.41%
.scss221,9521.24%
.css47070.45%
.html65170.33%
.ts2180.01%
Metricv5.01.5
Total Vue SFCs703
Components (in components/)680
Pages (in pages/)17
Layouts (in layouts/)3
Component directories363
Metricv5.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 typeFilesLines
.mdx426,178
.md301,358
.json4691,807
.yml121,136
.svg1244,283
ItemDetail
Storybook bundles (storybook-static/)10 minified JS files, ~32M chars
JSON bulkMostly 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/.

Terminal window
EXCLUDE="-not -path './.git/*' -not -path './node_modules/*' -not -path './.cache/*' -not -path './dist/*' -not -path './.quasar/*' -not -path './functions/node_modules/*'"
# Total files
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"
done
# Vue breakdown
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
# Store modules
find . -path '*/store*' -name '*.js' -not -path './node_modules/*' | wc -l
# Frontend vs backend JS
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