'Schedule' came from a very specific kind of repetition.
At dinner, or while everybody was half-paying attention to something else, I kept getting some version of the same question: who plays today, are any games on, what time do they start.
It was never really a hard question. It was just annoying in the way small repeated questions become annoying when the answer is scattered across four league apps, search results, bad score widgets, and whatever happened to load first.
So I built a page for it.
The real job of the project
On paper, Schedule is just a Philadelphia sports schedule site.
In practice, the job ended up being more fun than that. I wanted one clean page that answered the exact questions normal people ask:
- who is playing today
- is anything on right now
- what already happened
- who else do we play this week
That sounds obvious, but most sports products are designed like you are already deep in the sport. They assume you want league-specific navigation, standings, betting clutter, clips, fantasy hooks, and ten other things before they get around to the one answer you actually needed.
At dinner, nobody wants a product tour. They want an answer in five seconds.
Why I made it Philly-specific
Making it just for the Sixers, Flyers, Eagles, and Phillies was the whole point.
The narrower scope made the page better. It let me remove everything that did not matter and organize the page around one city instead of one league. That is closer to how people actually talk about sports in real life anyway.
Nobody at the table was asking me to compare the entire NBA slate. They wanted to know if the Phillies were on, whether the Flyers already finished, or if there was anything worth turning on later.
What I cared about in the build
The project was less about complicated engineering and more about reducing friction.
I wanted the page to load fast, read clearly, and make the answer obvious without any hunting. Live games needed to stand out. Finals needed to be easy to scan. Upcoming games needed to feel like a useful look-ahead instead of a dump of schedule data.
I also liked that it could live as a small standalone Cloudflare project. That kept the deployment simple and made it easy to treat the site like a focused utility instead of something that needed a whole platform around it.
Right now the app is live on sports.liamj.dev
The part I actually like
My favorite projects are usually the ones that remove a small recurring annoyance.
I'm not trying to be a media company. Schedule is not trying to be a giant stats product. It just replaces a tiny household workflow with a better one.
Instead of me googling 3 different teams, there is an app on my phone's home screen.
That is the kind of project I respect more as I get older. Small scope, clear job, no extra ceremony.
What comes next
The only obvious next step is adding details to any of the live data for an ongiong game. Zach Wheeler throwing a no-hitter through 4? Michkov 1 goal away from a hat trick? etc. But it's more work for what is already a polished result.
Regardless, I have a place to go with one click on my phone.