Inspiration

Almost completely out of thin air.

What it does

Once a session is initialized within the browser users on both web and iOS platforms can join and wait in lobby. Once ready the host session can begin the game and random seed words will be generated which the contestants guesses will be based on. With each round players rack up points and hopefully end up on top.

How we built it

With a diverse skillset we decides to start by making an Ember.JS frontend which would connect to our node server. This server made use of STDLIB to manage the api requests for the google trends module and .tech as the domain to host the front end. While this was being made we also began working on an iOS client app which would be able to connect to the sessions launched on a browser while maintaining a native iOS experience.

Used vultr as VPS, set up http://trendify.tech:8080/ to redirect all requests to VPS. VPS configured as centos7, with configured ip tables opening only port 8080 to the public.

Challenges we ran into

There was certainly alot of ground to cover in 24 hours. One of the more difficult tasks we faced was ironing out the web sockets events which needed to be revisited and a proper testing flow to allow trials of the backend and frontend independently.

Accomplishments that we're proud of

In retrospect we may not have wanted to take on a project with such breadth but overall we are most proud that we were able to persevere and see this through. This is ultimately a fairly functional and novel hack that we were able to complete in < 22 hours and thats something to be happy with.

What we learned

STDLIB and tools like it can really remove alot of the boilerplate with fast prototypes like these and allow you to get to the more involved pieces faster, web-sockets are definitely require a 'measure twice cut once' approach and in the future we will bear more foresight when planning out these design patterns.

Stlib as a development tool was great. Offers neat override behaviour of javascript proxies allowing for dynamic getters and setters. A bit buggy, but overall much easier to jump into compared to a larger cloud service, like AWS. Easy to set up endpoint function. We had used stlib to take a list of given keywords, and pass it forward to google-trends-(unofficial)-api. To avoid rate limiting, we batch the queries made to the room on session state changes.

What's next for Trendify

We would definitely like to allow more client configuration with Trendify like selection of a player to submit words to be used and to make this a game that can be played with one another across the globe rather then in the same room.

We also would like to spread the organization to include proper build tools, typings, automated testing to assert default behaviours, and external tools like streamlab, discord, and slack bots. Potentially set up IRC connection to twitch irssi, serve as a fast chat bot.

Repositories

  • Heimdall
    • Backend gateway Serves socket namespaces, and base auth flows into session access.
  • Saul
    • (Middle man, repo for the functions exported using stlib for google-trends-api)
  • Gandalf
    • Front end ember application. production build sits in express, serves as public directory.
  • Dumbledore
    • IOS application

Built With

Share this project:
×

Updates