A stats website for the Obsidian Eco-System.
https://www.moritzjung.dev/obsidian-stats/
The project is split into 4 parts.
- The website located in
website
- A shared Rust library in
data-lib
- The data collection code in
data
- The data analysis code used for the website in
data-wasm
All collected data is persisted in the data/out
folder and tracked in Git, except for cloned plugin repos.
The project uses Makefiles that sometimes think targets are up to date. In that case you can add the -B
flag to the make command.
Requirements:
- Bun
- Latest Rust Compiler
- wasm-pack
- Probably be on Linux, idk
To test and build the website locally you first need to build the data-wasm
folder.
For this you can run make wasm
in the repo root.
After this you can navigate to the website
folder and install dependencies with bun i
.
Then you can run either the dev server with bun run dev
or build the website via bun run build
.
Requirements:
- Latest Rust Compiler
- Probably Linux, idk
- 10+ minutes of time
Depending on your goal, the first thing you might want to run is make submodule-update
.
After that you can run the data collection via make data
.
The data collection consists of multiple phases:
- Theme Data
- Read theme data from the
obsidian-releases
repo - Build and save theme data to
data/out/theme-data
- Read theme data from the
- Plugin Data
- Read plugin data from the
obsidian-releases
repo, including download data - Build plugin, download, and version data
- Save that data to
data/out/plugin-data
- Read plugin data from the
- Clone Plugin Repos to
data/out/plugin-repos
- Extract extra data from plugin repos to
data/out/plugin-repo-data
- Process licenses from
choosealicense.com
todata/out/licenses.json
- Obsidian Releases Data
- Get release data from GitHub releases, process, and save to
data/out/releases-github-raw
. This data is incremental. - Interpolate download data and save to
data/out/releases-github-interpolated
- Get the Obsidian changelog, process and save to
data/out/releases-changelog
- Get release data from GitHub releases, process, and save to
Currently you select which steps to run by commenting out the steps that you don't want in data/src/main.rs
.
I want to thank the following people:
- Fevol for his work on parsing Obsidian release data
- joethei for answering all my questions about plugin and theme releases
- The Astro team for their work on Astro and Starlight