https://github.com/dominiklindorfer/point-counter
Padel & Tennis Point Counter
https://github.com/dominiklindorfer/point-counter
android app counter padel point sport tennis
Last synced: 3 months ago
JSON representation
Padel & Tennis Point Counter
- Host: GitHub
- URL: https://github.com/dominiklindorfer/point-counter
- Owner: DominikLindorfer
- License: mit
- Created: 2026-03-15T15:40:29.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-05T22:07:49.000Z (3 months ago)
- Last Synced: 2026-04-05T22:09:17.399Z (3 months ago)
- Topics: android, app, counter, padel, point, sport, tennis
- Language: Kotlin
- Homepage:
- Size: 162 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Padel & Tennis Point Counter
A courtside scoreboard for padel & tennis — big scores, Bluetooth remote control, zero setup.
No ads. No logins. Free and open source!
---
Place your tablet courtside and everyone can read the score. Pair a cheap Bluetooth remote and score points without leaving the court.
https://github.com/user-attachments/assets/ad0aed53-c02c-48b0-93c0-9c121f993f9b
## Setup that I personally use
All you need is an Android tablet, a stand, and a Bluetooth remote. This is what I use but modify as suits you best:
| | Link |
|------|------|
| **Android Tablet** — Xiaomi Redmi Pad Pro | [Amazon.de](https://www.amazon.de/dp/B0FJ9234ZX) |
| **Tablet Stand** | [Amazon.de](https://www.amazon.de/dp/B0DRXP3V6W) |
| **Bluetooth Remote** | [Amazon.de](https://www.amazon.de/dp/B08MKJX4MH) |
## Features
| | |
|---|---|
| **Full padel/tennis scoring** | 0 / 15 / 30 / 40 / Deuce / AD — games, sets, and tiebreaks |
| **Golden Point mode** | No advantage at 40-40 — toggle on or off |
| **Automatic tiebreaks** | Kicks in at 6-6 with proper tiebreak scoring |
| **Configurable sets** | Play to 1, 2, or 3 sets (or infinite) |
| **Bluetooth remote** | Score with a wrist-mounted media controller — no screen touch needed |
| **Serve indicator** | Shows serving team and serve side (L/R), auto-rotates each game |
| **Match timer** | Elapsed time starts on the first point |
| **Team customization** | Custom names and 8 color presets per team |
| **Swap sides** | One tap to mirror teams when you switch court ends |
| **Match history** | Auto-saves completed matches with scores, duration, and stats |
| **Share results** | Export match results via WhatsApp, email, or any app |
| **Undo** | Made a mistake? One button to go back |
| **Immersive display** | Full-screen, landscape-locked, screen stays on |
| **Animated transitions** | Score changes with smooth bounce effects and a trophy on match point |
## Bluetooth Setup
The app works with cheap Bluetooth media controllers (like wrist-mounted remotes). They pair as standard HID devices — no special permissions needed.
### Button Mapping
| Button | Action |
|--------|--------|
| Volume Up | Team 1 scores |
| Volume Down | Team 2 scores |
| Next Track `>>` | Team 1 scores |
| Previous Track `<<` | Team 2 scores |
| Play / Pause | Undo |
### Pairing
1. Put your Bluetooth controller in pairing mode
2. Open Android **Settings > Bluetooth** and pair the device
3. Open Point Counter — button presses are captured automatically
> **Tip:** If your controller sends different key codes, you can customize the mapping in `MainActivity.kt` — see the [KeyEvent docs](https://developer.android.com/reference/android/view/KeyEvent).
## Building from Source
```bash
# Clone the repository
git clone https://github.com/DominikLindorfer/Point-Counter.git
# Open in Android Studio, sync Gradle, and run
# Min SDK 26 (Android 8.0) · Target SDK 36 (Android 15)
```
## Project Structure
```
app/src/main/java/io/github/dominiklindorfer/padelcounter/
├── MainActivity.kt UI — ScoreBoard, TeamPanel, SettingsSidebar, MatchTimer
├── MatchState.kt Scoring logic — MatchState, PadelScoring, MatchViewModel
├── MatchStorage.kt Match history persistence (SharedPreferences + JSON)
├── MatchHistoryScreen.kt Match history UI with share/export
├── CameraOverlay.kt Camera preview & video recording overlay
└── MatchViewModelFactory.kt ViewModel factory
```
## Tech Stack
- **Kotlin** + **Jetpack Compose** (Material 3)
- **CameraX** for optional video capture
- **AndroidX Lifecycle** + ViewModel
- No network calls, no third-party analytics, no ads
## Privacy
This app collects **zero data**. No accounts, no analytics, no internet access. See [PRIVACY_POLICY.md](PRIVACY_POLICY.md).
## License
MIT — see [LICENSE](LICENSE) for details.
---
Built for the court, not the cloud.