steipete/stats-store has 64 GitHub stars and 10 forks. Star changes are not measured yet. Last checked 2026-11-14 05:17 UTC. Last push 2026-11-09.
計測したスター増加
- 24時間
- 履歴を収集中
- 7日間
- 履歴を収集中
- 15日間
- 履歴を収集中
- 1か月
- 履歴を収集中
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
概要
stats.store - Fast, open, privacy-first analytics for Sparkle.
データREADME.md
オリジナルstats.store 📊 — Sparkle checks in, useful numbers come out

stats.store proxies Sparkle appcast requests and presents the attached update statistics in a dashboard for macOS app maintainers. The hosted service is free for open-source apps, and the project can also be self-hosted with Supabase and Vercel.
<key>SUFeedURL</key>
<string>https://stats.store/api/v1/appcast/appcast.xml</string>
The proxy returns the app's registered upstream feed and records the profile fields Sparkle sends with the update check.
Install
The hosted service at stats.store does not require an installation. Email Peter with the app's display name, bundle identifier, and current appcast URL to register an open-source app.
For your own deployment, use Node.js 24.15+ (24.x) or 26+, and pnpm 12.4.1 or newer, then follow the deployment guide to configure Supabase, apply the database migrations, and deploy the Next.js app.
Quick start
After the app is registered, replace its existing SUFeedURL value with the stats.store proxy URL:
<key>SUFeedURL</key>
<string>https://stats.store/api/v1/appcast/appcast.xml</string>
Sparkle continues to check for updates through the same appcast. Once update checks arrive, open stats.store to inspect daily users, app-version adoption, macOS versions, CPU architectures, hardware models, languages, memory, and core counts.
Prerelease channels can use https://stats.store/api/v1/appcast/appcast-prerelease.xml. The registered upstream feed must expose the corresponding appcast; see the appcast proxy guide for URL mapping and troubleshooting.
How it works
- Sparkle requests the proxy URL and identifies the app by bundle identifier, app name, or its user-agent.
- stats.store hashes the request IP with the current UTC date and records the Sparkle fields that are present.
- The proxy fetches the app's registered upstream appcast and returns it to Sparkle.
- The dashboard reads aggregate data from Supabase and updates through Supabase Realtime.
For apps that send telemetry directly, the project also exposes POST /api/v1/ingest; its payload and responses are documented in the Sparkle integration guide.
Data and privacy
The service stores a daily SHA-256 digest derived from the request IP, never the raw IP. Including the date makes the digest useful for counting daily unique clients without creating a stable identifier across days.
When Sparkle supplies them, stats.store records the app version, macOS version, CPU type and core count, language, hardware model, and memory. It does not receive in-app behavior events through the appcast proxy. Vercel Web Analytics is disabled unless a self-hosted deployment explicitly sets NEXT_PUBLIC_ENABLE_VERCEL_ANALYTICS=1.
The architecture notes describe the data flow, schema, endpoints, and aggregation model. The project story explains the motivation behind the hosted service.
Self-hosting
Self-hosting requires a Supabase project and the environment values listed in .env.example. Apply every numbered SQL file currently present in scripts/ in numeric order, then apply the managed migrations in supabase/migrations/ as described in the deployment guide.
With the database and .env.local ready:
pnpm install
pnpm dev
The local dashboard runs at http://localhost:3000. See the registration guide to add an app and the real-time setup guide to enable live dashboard updates.
Development
pnpm lint
pnpm typecheck
pnpm test
SKIP_ENV_VALIDATION=true pnpm build
Tests cover the API routes, dashboard components, hooks, and data formatting. See tests/README.md for focused commands and CONTRIBUTING.md for the contribution workflow.
Community
Use GitHub Issues for bugs and feature discussions. You can also reach Peter Steinberger or follow @steipete.
Built by Peter Steinberger for the Mac developer community.
License
No license file is currently included in this repository.
関連プロジェクトを探す
Asabeneh/30-Days-Of-Python
30 Days of Python プログラミングチャレンジは、Python プログラミング言語を 30 日で学ぶためのステップバイステップのガイドです。このチャレンジは 100 日以上かかることもあります。自分のペースで進めてください。こちらの動画も役立つかもしれません: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,717 スターgrafana/grafana
オープンで組み合わせ可能なオブザーバビリティおよびデータ可視化プラットフォームです。Prometheus、Loki、Elasticsearch、InfluxDB、Postgres など、複数のソースからメトリクス、ログ、トレースを可視化できます。
77,896 スターredis/redis
リアルタイムのデータ駆動型アプリケーションを構築する開発者にとって、Redis は最も選ばれ、最速で、機能が最も豊富なキャッシュ、データ構造サーバー、ドキュメントおよびベクトルクエリエンジンです。
77,491 スターapache/superset
Apache Superset は、データ可視化とデータ探索のためのプラットフォームです。
75,522 スター