An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          


Point Counter — courtside scoreboard

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!


License: MIT
Platform: Android
Min SDK 26
Kotlin + Jetpack Compose

---

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



Get it on Google Play

## 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.


Bluetooth remote control

### 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.