Back to blog

MVP's architecture

Mays Copeland

Mays Copeland

One of my longest struggles with an in-season tool has been figuring out the right architecture that lets you integrate with various league platforms. Everything has tradeoffs, but I've finally settled on a direction.

My final shortlist had two technologies. I started building on one a few weeks ago, then ended up switching to the other.

Server-side proxy

My first approach was to have server-side code that would make GET/POST requests to the league platform that looked like they came from the user. When you wanted to see your roster on MVP, the MVP server would send a request to ESPN (or wherever), get back the roster data, and then enrich and reformat it for the user.

If the user made a move on MVP, the MVP server would send a request to ESPN that looked like it was the user making the move on the ESPN website.

The beauty of this is that it would work from a browser on any device—desktop or mobile.

Well, there was one catch. To make those requests, the MVP server would need your credentials, usually tucked away in a cookie on your browser. So it would need a lightweight Chrome extension that could read those cookies and pass them along to the MVP server. Once you had extracted the cookies with the Chrome extension on a desktop computer, you'd be able to go the MVP site to make your moves on any device.

A secondary concern was what might happen if the league sites noticed an abnormally large number of requests all coming from the MVP server. Would they block it?

But really, I have to admit that I just wasn't excited about this. I can't quite put my finger on it, but, even after I got a start on building this, I wasn't feeling it. Partly there was a sense of overwhelm of how much data needed tracking: Players, projections, league info, but also schedules and injury statuses.

So after I got a little ways down this road, I started giving more thought to option #2.

Full Chrome extension

What if we just did everything from the Chrome extension?

We could piggyback on the requests a user made to the league sites, so we didn't need any authentication data or permissions. The requests would be coming from the user's browser, just like they always had, so that concern goes away.

This also lifts the weight of having to track schedules and injuries: We've got this information already on the league pages.

The big problem—which I had initially considered a dealbreaker—is mobile: Chrome extensions are essentially desktop-only. I'm old enough that I like setting my teams from a computer, but I recognize that most people prefer their phones. Going this direction shuts that door.

Here's how I came to terms with it:

Stop guessing. Start winning.

MVP gives you clear, projection-driven answers to your toughest in-season fantasy decisions.

Get MVP