The Canestreet Website: From a Simple Showcase to the Tournament's Core ERP

If you type canestreet.it into your browser’s search bar, you’ll land on a sleek, modern website. The subject is instantly clear: a summer basketball tournament. The splash screen greets you with action shots from the courts, and a quick glance reveals everything you’d expect from a sports hub: team registration, live results, official rules, and a curated “About” section.

It looks exactly like what a professional tournament needs. And, as you might have guessed, it’s a website I built 😏

Canestreet is the name of a small summer basketball 3x3 tournament we host every year in my hometown Jesi, Italy. We’ve been running it for eight years now. What started out as a casual joke among friends has evolved into a highly anticipated summer event. And with that growth came a mountain of logistical headaches.

This article isn’t about the tournament itself (there is a whole other piece on that). Instead, this is a spin-off story. It’s a deep dive into a tool I briefly mentioned in the main article, but one that deserves its own spotlight: the Canestreet digital ecosystem.


The Good Ol’ Times: Rough Basketball and Small Needs

Canestreet was born in 2018, primarily as a fun way to break up the sweltering Italian summer heat. A few friends and I set up a modest event on a small basketball court owned by a local church.

In those early days, we didn’t need much technology. Word of mouth was our primary marketing engine. We only needed eight teams to make the tournament viable, and we reached almost all the players through friend-of-a-friend networks.

To give the event a slight digital footprint, we created an Instagram page. It was mostly fueled by memes, funny team descriptions, event announcements, and stories updating the match results. It was the perfect, low-friction hotspot to keep players engaged.

Instagram post from the early days
One of the Instagram Posts from the early days. What a simpatico umorista I was

We kept replicating the model year after year, even when we upgraded to a much larger playground. For nearly five years, Instagram remained our de facto point of contact with the outside world.

On the organizational side, however, we needed a bit more structure to track rounds, points, and final brackets. Pen and paper quickly became a nightmare for a tournament with more than 50 players. Our grand upgrade? A massive web of Google Sheets. At the time, it was a medium perfectly tailored to the size of our needs. But as the tournament continued to balloon, we began craving something that felt a bit more professional.

The Google Sheet we used in the first editions
The Google Sheet we used in the first editions. The whole tournament was based on that.

The First Website: The Showcase We Needed

We managed to run the tournament for three consecutive years before Covid brought everything to a grinding halt. That forced hiatus gave us time to rethink our next steps. More importantly for this story, it handed me, as a programmer, an abundance of free time to invest in whatever random side project crossed my mind.

That lockdown boredom was the exact cradle where the first version of the Canestreet website was born.

Homepage of the old website. Slay
Homepage of the old website. Slay

I wanted to give the tournament a proper virtual home. Instagram would still be our primary way to engage users, but like any growing entity, we needed a dedicated space on the web to showcase who we were outside of social media silos. Let’s be honest: an Instagram page isn’t the best business card when you’re pitching to a serious potential corporate sponsor.

Like any good engineer, I started by collecting requirements. What does a tournament website actually need?

Reconciling all of these features was a massive challenge for me at the time because my web development experience was pretty limited. I had experimented with a few small projects using Angular and headless CMSs (see the origins of CovidAnalysis and my blog for more funny stories!), but I had never built a comprehensive, production-grade web application.

Following the breadcrumbs of convenience led me straight to a precise technology. I had to strike a deal with the framework I disliked the most—the monster that powers half the web, yet is widely mocked by developers everywhere.

Yes, I’m talking about WordPress.

That's how I'm imaging me while working on a Wordpress projects (credits: Nano Banana)
That's how I imagine me working on a Wordpress project (credits: Nano Banana)

I genuinely dislike WordPress. It’s a CMS born for simple blogging that has been aggressively bent, twisted, and forced by themes and plugins to act as a solution for every website requirement under the sun. It’s flexible, sure, but forcing a tool so far outside its original scope always felt fundamentally wrong to me.

Yet, because it was an industry standard, it was the most pragmatic place to start experimenting. I knew that learning my way around a tool used by half the internet would eventually be a useful skill to have in my back pocket.

So, I held my nose, bought the domain thecanestreet.it, and linked it to a hosted WordPress instance. That’s the resulting stack I came out with:

Component Technology Cost Why We Used It
Framework WordPress Free (OSS) The industry standard for quickly building functional web spaces.
Page Builder Elementor Plugin Free Tier Allowed drag-and-drop page creation without deep frontend experience. I didn’t want to invest too much time on that.
Sports Engine WP Club Manager Free A pre-built plugin used to handle matches, players, and standings.
Registrations Google Forms (iFrame) €0 Embedded directly into the page to collect user sign-up data.
Hosting & Domain Self-Hosted €25/year Necessary to get a custom domain, Linux hosting and the WordPress database.

Quite cheap, but not free as you can see. I spent a month tinkering with the Elementor plugin, building out the pages we needed one by one. I built the homepage, added an “About” and “Contact” page, and even embedded a PDF viewer to display the official FIBA 3x3 rules. Finally, I spun up a news section utilizing the native WordPress blog architecture.

This first iteration actually survived for four years. Over time, I expanded its capabilities by adding a third-party plugin for live sports casting and embedding a basic Google Form iFrame to handle player sign-ups.

The solution was minimal, but it got the job done. The glaring downside? The sheer amount of manual data manipulation required behind the scenes:

Every time a developer handles a repetitive task that could easily be automated, an angel loses its wings 🥴 I knew I needed a change.


The Second Website: The AI Breakthrough

Then came the dawn of 2026, and everything shifted.

Over the previous several months, generative AI tools designed specifically for coding evolved from amusing novelties into powerhouse assistants. The launch of advanced coding models completely revolutionized our day-to-day engineering workflows.

These tools successfully took over the heavy lifting of concrete syntax and boilerplate implementation, freeing us up to focus on high-level architecture, system design, and product specifications. I was fortunate enough to be working at a company that actively encourages using tools like Claude Code, or Open Code, even subsidizing licenses for our personal development. It’s a massive win-win: continuous self-training for the employees, and unlimited building potential for the engineers.

She just wanted an ice cream
She just wanted an ice cream

I decided to burn down the old WordPress site and build a custom application from scratch. I didn’t want just a public showcase anymore; I wanted a fully bespoke Enterprise Resource Planning (ERP) system tailored perfectly to the chaos of a 3x3 basketball tournament.

I brainstormed architectures, aiming for modern tech stack performance while keeping hosting costs at a grand total of zero, or near-zero Euros per year.

Component Technology Cost Why We Used It
Framework Next.js (React) €0 Single codebase for both frontend UI and API backend routes.
Hosting Vercel €0 Seamless deployment and incredible loading speeds.
Database Supabase (PostgreSQL) €0 Relational powerhouse on a generous free tier.
Assistant Claude Code Sponsored Handled the heavy boilerplate lifting in seconds.
Domain canestreet.it (GoDaddy) €10/year Sticked to the provider since i have previous sites here (using other ones i could have expeded even less).

I had a functional, bare-bones prototype running in less than an afternoon. I was completely stunned. In just a few hours, I managed to build the core repository skeleton alongside clean, responsive designs for the home, about, contact, and rules sections.

Homepage of the old new website
Homepage of the new website. Type shit

Galvanized by this newfound velocity, I kept iterating. Within a week, the public-facing application was complete. The following week, I turned my attention to building a custom administrative back-office dashboard.

Built entirely around the real pain points we gathered over seven years of running tournaments, the new system seamlessly automates our entire operation:

Some screenshots from the mobile version of the website
Some screenshots from the mobile version of the website. Fully responsive, 100% compatible with every device.

Conclusion

Looking back at the trajectory of this project, it is genuinely incredible what a single independent developer can achieve with modern tools. Building a system of this complexity with my limited free time would have easily taken me several months of grueling weekend work in the past.

At the same time, working on this project clearly showed to me how it is easy to fall in rabbit holes, let the architecture degenerate into an unmaintainable mess. As engineers, it’s more critical than ever that we maintain absolute control over the code, thoroughly understand the output, and never go on “full auto-pilot.” Total reliance on automation is the easiest way to make a complex software project fail.

The best part? The entire Canestreet platform is completely open-source and available on my GitHub! The tournament is my hobby, and this code is simply the engineering cherry on top. If you run a local sports tournament and want a tailored, automated management system to make your event shine, feel free to clone the repository. Just remember to give credit to your favourite developer from Jesi 🥰

The Canestreet Website Project on GitHub
The Canestreet Website Project on GitHub