Inspiration

Monash has seen a huge spike in basketball interest but the courts haven't kept up. We got tired of walking all the way to the court only to find it packed with no game to join, and no way to know beforehand. BamBii fixes that. Real-time court activity, open session invites, and no more wasted trips.

What it does

BamBii tells you how many people are currently on a basketball court in real time. A small device installed at the court passively detects nearby Bluetooth signals from players' phones and uses that count as a proxy for court occupancy. The live data is pushed to the BamBii web app, where anyone can check the busyness of their local court, view historical usage trends, and plan their session accordingly.

How we built it

The system is built around three core components:

  • Hardware (Raspberry Pi 4): A Raspberry Pi sits at the court and continuously scans for nearby Bluetooth devices. It publishes a live count to an MQTT broker and subscribes to scan-trigger messages.
  • MQTT Broker: Acts as the cloud messaging backbone. The Pi publishes occupancy counts and subscribes to scan commands; the web backend does the reverse — subscribing to counts and publishing scan requests.
  • NextJS (React): A clean, responsive frontend displays the court name, location, live people count, and a "Court Usage Over Time" chart. The backend subscribes to MQTT topics and serves real-time data to the UI.

Challenges we ran into

  • Bluetooth accuracy: Bluetooth device counts don't map perfectly to people — one person might have multiple devices, or devices from a nearby building could skew the count. We had to tune the scanning radius and filtering logic to improve reliability.
  • MQTT connectivity: Ensuring a stable, low-latency connection between the Pi and the broker in an outdoor environment with variable Wi-Fi was trickier than expected.
  • Privacy considerations: Scanning for Bluetooth devices raises legitimate privacy questions. We made sure BamBii only counts devices — it never records identifiers or tracks individuals.

Accomplishments that we're proud of

  • A fully end-to-end working system: from a physical device on a real court to a live number on a webpage.
  • A genuinely useful product, BamBii solves a real problem for real basketball players in our community.
  • Clean, intuitive UI that makes the data immediately understandable at a glance. Successfully integrating hardware, messaging infrastructure, and a web frontend into a cohesive product under hackathon time pressure.

What we learned

  • How to work with MQTT pub/sub architecture for real-time IoT data pipelines.
  • The nuances of Bluetooth scanning on Linux and how to handle noisy, real-world signal environments.
  • How to balance technical feasibility with user privacy in a passive sensing system.
  • The importance of designing for the edge case and what the app shows when there's no data, when the Pi goes offline, or when counts spike unexpectedly.

What's next for BamBii

  • More courts & sports: Expanding to other outdoor courts across Melbourne and eventually other cities.
  • Court booking & sessions: Letting players schedule pickup games and invite others through the app.
  • Smarter occupancy detection: Exploring computer vision or dedicated BLE beacons for more accurate, privacy-preserving counts.
  • Notifications: Alerting users when their favourite court quiets down. Community features: Reviews, court ratings, and player meetups, making BamBii the go-to platform for Australia's outdoor basketball community.

Built With

Share this project:

Updates