A comprehensive dashboard for analyzing F-Droid app store metrics, including search patterns and app download statistics.
Note
The calculations are a bit iffy. (My calculations always are :P)
And I am unsure whether the data labels mean what I think they mean.
Enjoy it while it works! I probably won’t maintain it long-term. Still maintaining it as of Jan 2026. No idea why.
You can add badges to your README file to display various metrics (monthly) for your package.
A GitHub Actions cronjob runs daily to recompute these metrics.

This is how those look (customizable):
Replace io.github.kitswas.virtualgamepadmobile with your package ID.
You can find the processed data files in the processed directory. (Search for your package ID)
- Search query analysis and trends
- Geographic distribution of searches
- Error analysis and technical metrics
- Time series visualization
- App download patterns from HTTP servers
- Request path analysis (JAR files, repository diffs, etc.)
- Server performance comparison
- Geographic distribution of downloads
https://fdroid-metrics.streamlit.app/
You need the uv package/project manager to install the dependencies.
You can get uv here.
Tip
To change the Python version, change the requires-python field in pyproject.toml
and the number in .python-version.
uv will take care of the rest.
Set up the environment. (Only once)
uv venv
# .venv/Scripts/activate # Windows
source .venv/bin/activate # Linux/MacOS
uv sync --link-mode=symlink # Install the dependencies, use -U to updateOr use the Dockerfile. (Min 2GB RAM, 2 CPU Cores) (4 CPU Cores recommended)
Launch the interactive multipage dashboard:
uv run streamlit run dashboard.pyThe dashboard will be available at http://localhost:8501.
The data fetchers have been revamped to support flexible date range queries. Each data file represents cumulative metrics since the previous date (usually weekly snapshots).
Download F-Droid search metrics data:
# Download data for a specific date range (recommended)
uv run python -m etl.getdata_search --start 2024-09-01 --end 2024-09-30
# Download current month (legacy mode)
uv run python -m etl.getdata_search
# Download specific month (legacy mode)
uv run python -m etl.getdata_search 2024 12
# Get help
uv run python -m etl.getdata_search --helpDownload F-Droid app metrics data from HTTP servers:
# Download data for a specific date range (recommended)
uv run python -m etl.getdata_apps --start 2024-09-01 --end 2024-09-30
# Download current month (legacy mode)
uv run python -m etl.getdata_apps
# Download specific month (legacy mode)
uv run python -m etl.getdata_apps 2024 6
# Get help
uv run python -m etl.getdata_apps --helpNote: The fetchers will automatically:
- Fetch the
index.jsonfrom each server - Filter available dates that fall within your specified range
- Download only the matching date files (e.g.,
2025-09-29.json) - Skip files that already exist locally
We have ruff for code formatting and linting.
Install the VSCode extension
and enable Format on Save for a better experience.
To fix imports:
uv run ruff check --select I --fix # Sort imports
uv run ruff check --select F401 --fix # Remove unused importsTo check for linting errors:
uv run ruff check # Use --fix to fix the errorsTo format the code:
uv run ruff format