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-releasesrepo - Build and save theme data to
data/out/theme-data
- Read theme data from the
- Plugin Data
- Read plugin data from the
obsidian-releasesrepo, 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.comtodata/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