Case study
Custom features for a site locked inside a closed website builder
OutKast Assassins is a competitive Call of Duty clan founded in July 2012, playing on Xbox 360 and Xbox One.
- Client
- OutKast Assassins
- Sector
- Competitive gaming
- Year
- 2014
- Stack
- PHP, MySQL, webs.com
The constraint
The clan's site ran on webs.com, a drag-and-drop website builder. That was the right call for them: it was cheap, and anyone in the clan could edit a page. But it is a closed platform. No server-side code, no database, and no way to reach the accounts its own members were already logging in with.
What they wanted was not a brochure. They wanted a live roster showing who was online on Xbox, streamer status pulled from Twitch, tournament brackets, match reporting and a members' chat. A drag-and-drop builder cannot host any of that, and rebuilding the whole site elsewhere would have taken away the thing they liked most, which was being able to edit it themselves.
The approach
So we did not replace their site. We built a companion application alongside it, hosted separately, and embedded it back into their pages. The clan kept editing webs.com exactly as before, and the parts that needed a real backend simply appeared inside it.
The piece that made this work was authentication. Rather than asking members to hold a second set of credentials, the companion app posted their existing webs.com login straight to the platform's own auth endpoint and used the answer to decide whether to open a session of its own. To a member it was one account. Behind the scenes it was two systems agreeing with each other.
What we built
- 01
An authentication bridge to a closed platform
webs.com would not let anything else use its accounts. Rather than making members register twice, the login form posted their existing webs.com credentials to the platform's own auth endpoint, read the response, and on success opened an independent session backed by our own database. One set of credentials, two systems.
- 02
A live Xbox Live roster
Every member on the roster showed a real online or offline badge, resolved from their gamertag at page load. There was no public Xbox presence API to call, so the status was read from a public gamertag lookup and parsed out. A custom error handler made any failure fall back to offline rather than breaking the roster.
- 03
Twitch stream status
The clan's streamers appeared with live status pulled from the Twitch API, so the site showed who was broadcasting right now. Admins could add, edit and remove channels without touching code.
- 04
Tournaments, matches and brackets
Tournament creation, match reporting and brackets, with games managed from the admin panel. This drove the Tournaments, Play Match, Report and Bracket sections of the site.
- 05
Member chat
A session-backed chat for members, tied to the same accounts as the login bridge, with its own user administration.
- 06
An admin panel behind everything
A single place to manage members, chat users, Twitch channels, games and tournaments, so the clan could run the site day to day without us.
The result
The clan got a site that behaved like a custom-built community platform while still being editable by anyone in the group. Members saw at a glance who was online and who was streaming, tournaments ran through the site rather than through forum posts, and the admin panel meant nobody had to come back to us for routine changes.
The wider lesson is one we still apply: a closed platform is rarely the end of the conversation. If it can be authenticated against and embedded into, you can add almost anything to it without asking the client to throw away what already works.
View the archived site as it stood in March 2015.
We'd been told a few times that what we wanted wasn't possible on webs.com. Hassan found a way to do it anyway, and members never had to make a second account. Tournaments and the roster ran through the site instead of through forum posts, which saved us a lot of admin.
Work with us
Stuck inside a platform that will not bend?
That is usually where we come in. Tell us what is in the way.