BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
Baran’s Scoreboard – Free, open-source tool for creating and customising scoreboards, leaderboards and tournament brackets. Features timers, themes, sharing, image exports and local saving. No account required.
翻訳待ち
Loading the full README.
Read the full README ↗Baran's Scoreboard is a free, open-source toolkit for keeping score, designing leaderboards and making tournament brackets.
Open Scoreboard · Български · Türkçe
It is local-first: no account is needed, and scoreboard names, teams, scores, and settings stay in each browser. Share a snapshot with a link or keep a JSON backup. Links contain the board data in the URL and do not sync later changes.
You need Node.js 24 LTS (or a compatible version at least 22.18) and npm.
git clone https://github.com/baranhq/scoreboard.git
cd scoreboard
npm ci
npm run dev
Open localhost:3000. This works without PHP or a database.
The frontend uses Next.js, React, TypeScript and Tailwind CSS. Production builds export static files to out/; they do not require a Node.js server. The optional backend needs PHP with PDO MySQL and mbstring, plus MySQL/MariaDB. See the deployment requirements.
| Command | Purpose |
|---|---|
npm run dev | Start the frontend development server. |
npm test | Run TypeScript regression tests, including browser-storage and consent lifecycle checks. |
npm run lint | Run ESLint, TypeScript and PHP syntax checks. |
npm run test:php | Run PHP security and policy-rendering regressions. |
npm run build | Generate fonts, notices, policies, the static export and PHP deployment files. |
python3 tests/seo-export.py | Check metadata, locale links and indexing rules in the completed export. |
npm run format:check | Check source and documentation formatting. |
npm run preview | Serve out/ locally with PHP at http://localhost:8080. |
Run a production build before export checks or previewing. If a route was removed and type checking reports obsolete .next route types, rebuild to refresh them. The disposable-database HTTP suite and current verification limits are described in verification notes.
Configuration names and safe examples are in .env.example. NEXT_PUBLIC_* values appear in browser output; never put secrets in them. Set the public origin and operator details for your instance, and keep indexing disabled on private or staging copies. Analytics require explicit backend configuration and separate visitor consent. Self-hosters must adapt the privacy notice to their actual services and processing.
You can run it privately at home, on a home server/NAS, or on a rented Linux server. You do not need to buy a domain or make the site public. The guide explains a local-only Docker setup, optional access from your home network, a static-only setup, and shared hosting.
➡️ Read the self-hosting guide
For PHP/Apache shared hosting, keep the source checkout outside the document root and store server settings in $HOME/scoreboard-private/.env. Run npm ci and npm run build; the build loads that file automatically, defaults the admin URL to /admin, and writes the matching Apache rewrite into out/.htaccess. Set ADMIN_PATH in the private file to use a different path. Upload the complete out/ contents. See the deployment guide for PHP, database, and one-time hosting setup.
/ introduces the platform. Each language has /[lang]/tools/scoreboard/, /[lang]/leaderboards/ and /[lang]/brackets/ introductions. The existing /scoreboard/ and /[lang]/scoreboard/ editors still work; new editors are at /[lang]/leaderboards/edit/ and /[lang]/brackets/edit/.
Existing Scoreboards keep their original scoreboard IndexedDB store and version 1/2 backup compatibility. New tables use a separate scoreboard-studio database and version 1 JSON documents. Import opens an independent copy. Untouched examples do not write to storage. Edits have a tab-session recovery draft; Save makes a durable library entry. Clearing browser data removes local saves; download backups before moving devices or domains. PNGs are rendered locally from the same SVG as the preview, normally at 2× resolution; exceptionally large graphics are scaled to stay within a 32-megapixel / 16,384px canvas budget.
No new runtime dependencies, trackers or accounts are required. Existing AWStats, optional first-party analytics and consent-controlled Cloudflare Web Analytics disclosures remain in place. Self-hosters with privately published policy overrides must publish the updated EN/BG/TR local-storage paragraph themselves.
For a contribution, keep the change focused, explain the problem and run the relevant checks above. Include translations for user-facing changes. Report suspected vulnerabilities privately to [email protected] rather than posting exploit details in a public issue.
Copyright © 2026 Baran Ahmedov. Licensed under the MIT License.