How I Built RegiaPadel.com: A Lightweight Americano Padel Tournament Manager

The itch I needed to scratch
I’ve been playing padel for a couple of years, and something started to annoy me: the tournament apps I tried were either riddled with ads, locked behind paywalls, or bloated with unnecessary features.
I just wanted to have a simple way to organize local tournaments, especially Americano-style tournaments we love playing with our group.
So like any Web developer, I said: “Fine. I’ll build my own.”
Enter RegiaPadel.com 🎾💻
The philosophy: Keep It Simple Stupid (KISS)
I designed RegiaPadel.com around a few strict principles:
- No frameworks: Pure vanilla JavaScript.
- No build step: Just open index.html and go.
- Ultra-fast and offline-capable: Using
localStorage
for persistence. - No tracking, no ads, no nonsense.
- Single-page application (SPA) with old-school simplicity.
- SOLID principles + TDD practices.
This wasn’t just about building an app. It was a test of how lean and powerful a modern browser-based project can be.
Core features
Here’s what RegiaPadel is planned to do:
- Create and manage Americano padel tournaments
- Automatic match scheduling and court assignment
- Track scores and display real-time leaderboard
- Semi-finals generation once group play is complete
- Data persistence with localStorage
- Responsive design for mobile/tablet/desktop
- Dark mode + Accessibility
- Export/import tournaments as JSON
- Load as a fully static site. No backend!
Almost all features are completed now, but I plan to add more in the future based on your feedback.
My favorite hacker-friendly features
🏟️ Balanced match distribution
The biggest algorithmic challenge was ensuring balanced match distribution across courts, minimizing repeat matches, and making sure everyone played fairly.
🕒 Persistent countdown drawer
A persistent countdown drawer was implemented at the top of the page, providing users with a clear and constant view of the time remaining on each round.

⏳ Score picker & countdown timer
This might sound trivial but designing an intuitive score picker with touch-friendly controls and an accurate countdown timer for match play added a level of polish I’m proud of.

If none of the pre-defined scores fit your needs, you can always add a custom score.

📦 File structure (KISS style)
Here’s how the project is structured:
├── index.html
├── src/
│ ├── js/
│ │ ├── models/
│ │ ├── services/
│ │ ├── utils/
│ │ ├── components/
│ │ └── app.js
│ ├── css/
│ └── templates/
├── public/
│ └── assets/
└── tests/
No bundlers, no Webpack, no Vite. Just a plain python -m http.server
is enough to serve and develop the app.
How to run it locally
If you want to explore it:
python -m http.server
# or
npx http-server
Then open http://localhost:8000
Tech stack
- Vanilla JS (ES modules)
- localStorage for persistence
- HTML/CSS with no frameworks
- JSDoc for lightweight type annotations + documentation
- Manual testing + automated TDD unit tests
What I learned
The experience taught me:
- Modern browsers are incredibly capable if you don’t overload them.
- Sometimes less is much more.
- By stripping down frameworks, I delivered an app that loads instantly and works offline.
Future ideas
I may consider open-sourcing RegiaPadel at some point.
There’s also room for:
- A Progressive Web App (PWA) upgrade
- A public tournament sharing feature
- More granular scoring rules per country/clubs
Closing thoughts
I built RegiaPadel.com because I needed it.
But I hope it inspires others to rethink whether they truly need to reach for a framework or backend when building small utility apps.
The browser is the ultimate runtime, and with just JavaScript + localStorage, you can deliver powerful apps at scale.
If you want to build something similar or want me to expand on any part of the journey, let me know on X or drop me a message!