{"repo":"steipete/stats-store","free":true,"listed":false,"github":"https://github.com/steipete/stats-store","clone":"git clone https://github.com/steipete/stats-store.git","description":"stats.store - Fast, open, privacy-first analytics for Sparkle.","language":"TypeScript","stars":62,"topics":["analytics","privacy-first","sparkle"],"license":null,"category":"analytics","readme_excerpt":"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. 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 or newer and pnpm 11.9 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: 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 1. Sparkle requests the proxy URL and identifies the app by bundle identifier, app name, or its user-agent","default_branch":null,"files":null,"tree":[],"storefront":"/r/steipete","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/steipete/stats-store/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}