DEV Community

Alex Cole
Alex Cole

Posted on

I Couldn't Find a Good Steam Tool, So I Learned Python and Built My Own

So there I was, a few months back, dealing with what had to be the most ridiculous problem ever. My buddy needed help setting up a game server, and we had to collect everyone's Steam IDs. I figured this would take like five minutes tops.

Man, was I wrong.

Every single website I found was a complete disaster. Pop-up ads attacking me from every angle, interfaces that looked like they were designed by someone who genuinely despised human beings, and half of them just gave up when they saw the random mix of ID formats our group was using (STEAM_..., [U:1:...], those custom URLs that everyone thinks make them look cool, you know the type).

I then just thought "Come on, how hard could it possibly be to just build something that doesn't suck?"

Famous last words, am I right? Turns out the answer was "way harder than I thought, but damn if it wasn't worth every frustrating minute." Armed with basically zero web development experience and what I can only call foolish optimism, this is the story of how I somehow managed to create steamid.one.

Choosing Tools When You're Clueless

Picture this: me, sitting at my computer, not even knowing what a "backend" was. Like, I knew it wasn't the front, but beyond that? Total mystery. So naturally, I did what any reasonable person would do and Googled "how to build a website with Python" and immediately felt overwhelmed.

The number of options was insane. Django (apparently it comes with "batteries included" but nobody explained what batteries), Flask (simple, but maybe too simple?), then someone mentioned React and suddenly we're talking about JavaScript frameworks and my brain just noped out.

I was about to give up when I found FastAPI. The documentation actually made sense to me, and every Reddit comment was basically just people saying "it's fast" and "it's easy to learn" over and over. Sometimes that's all the market research you need, right?

For hosting, everyone kept talking about Vercel and how it has this magical "it just works" Git integration. Since I definitely didn't want to spend months learning about servers and configuration files (spoiler: I still don't), it seemed perfect.

So here's what I ended up with, not because I was some kind of architecture genius, but because it felt like the path where I wouldn't completely lose my mind:

  • Backend: FastAPI because everyone said it was fast and I like fast things.
  • Hosting: Vercel because clicking "deploy" and having stuff just work sounded like a dream.
  • Frontend: Jinja2 Templates because the last thing I needed was to learn React while also learning everything else.

Image description

My First Real "Oh No" Moment

My first version was beautifully simple in that way that only works in tutorials. User types in a name, I ask the Steam API nicely, magic happens, everyone's happy. It actually worked! For exactly five minutes. Then everything went to hell.

HTTP Error 429: Too Many Requests

I stared at that error message like it was written in some ancient language. What the heck was a "rate limit"? Why was Steam suddenly being so mean to me? I thought we were cool!

After some desperate googling, I learned about caching. Apparently, you can't just hammer someone's API every time a user breathes on your website. Who knew?

This whole mess led me to Upstash Redis, which is basically a fancy database that remembers stuff for you. They had a free tier that was perfect for my "please don't make me go broke" budget.

Getting caching working was one of those lightbulb moments that made all the hair pulling worth it. It wasn't just about making things faster (though that was nice). It was literally the difference between having a working app and having a very expensive digital paperweight.

Before (aka "The Way That Doesn't Work"):

# This function was called on every single page load. Very bad!
async def resolve_vanity_url(vanity_name):
    # Always makes a fresh API call to Steam
    api_url = f"https://api.steampowered.com/ISteamUser/ResolveVanityURL/v1/?key={API_KEY}&vanityurl={vanity_name}"
    # ... http request logic ...
    return result
Enter fullscreen mode Exit fullscreen mode

After (aka "The Way That Actually Works"):

# The function that saved the whole project
async def resolve_vanity_url_with_cache(vanity_name):
    # 1. Check the cache first!
    cached_steam64 = redis_client.get(f"vanity_resolve:{vanity_name}")
    if cached_steam64:
        # If it's in the cache, return it instantly! No API call needed.
        return cached_steam64

    # 2. If not in cache, make the expensive API call
    api_url = f"https://api.steampowered.com/ISteamUser/ResolveVanityURL/v1/?key={API_KEY}&vanityurl={vanity_name}"
    # ... http request logic ...
    steam64 = result_from_api

    # 3. Store the result in the cache for next time
    if steam64:
        # Set it to expire after 1 day
        redis_client.set(f"vanity_resolve:{vanity_name}", steam64, ex=86400)

    return steam64
Enter fullscreen mode Exit fullscreen mode

That one little if cached_steam64: check was literally the difference between "cute programming exercise" and "wait, this might actually work."

The "Wait, This Actually Works" Moment

The day I finally worked up the courage to run git push and watch Vercel do its magic was honestly surreal. There it was: steamid.one, live on the actual internet, where real humans could find it and judge my questionable design choices.

It wasn't perfect. Hell, it wasn't even close to perfect. But it was mine, and more importantly, it actually did what it was supposed to do.

I sent the link to my buddy (the one who started this whole mess) fully expecting him to ignore it or maybe send back a thumbs up emoji. Instead, he was genuinely excited. He shared it in our Discord server, and suddenly I had a bunch of people actually using my thing.

They found bugs I never would have thought of. They suggested features that made me go "oh damn, that's actually brilliant." Suddenly, my little weekend project felt like something real, something that actually mattered to people.

Looking back, this whole adventure taught me way more than any tutorial or course ever could:

  • Just Start Building Stuff. You don't need to be an expert to begin. Pick whatever tools seem least scary and build the ugliest, most basic version of your idea. The momentum you get from having something that works is incredibly powerful.
  • Build Things That Fix Real Problems. If something genuinely annoys you (or your friends), there's a good chance it's bothering other people too. Those everyday frustrations are goldmines for project ideas.
  • Your First Users Are Pure Gold. The feedback I got from my gaming buddies was absolutely invaluable. They're the ones who suggested adding a profile comparison page and an AI tool for game recommendations. Features I never would have dreamed up sitting alone at my computer.

If you're just starting out in development and you've got some random idea bouncing around in your head, I really hope this story gives you the push to just go for it. Yeah, it's going to be challenging. Yeah, you're going to want to throw your computer out the window at least once. But man, when it finally works... there's nothing quite like it.

You can check out the final result here. It's still evolving, and it's completely free for anyone who wants to use it.

➡️ https://steamid.one

Thanks for sticking with me through this whole story! I'd love to hear about your own projects and those "wait, I think I can build this" moments in the comments below.

Top comments (0)