Inspiration

Home entertainment is a major part of our lives. Yet despite the numerous platforms that exist in this space, nearly all "modern" solutions are awkward and inefficient (think about clumsy typing interfaces on overpriced smart TVs). We created something more flexible, powerful, and entertaining - all with hardware everyone already owns.

What it does

Orion is a content consumption platform that was designed for the living room screen but that looks great on any device. It runs off of any computer, and transforms a connected mobile device into a dynamic remote. Additionally, the second screen adapts to display useful and interesting information related to what's being presented on the main screen. Any existing web-based or even local entertainment content is fully supported, so you can stream your favorite movies on the living room TV using your phone as a remote (and instantly unplug and take your entertainment with you, should you desire).

How we built it

The main platform was built with Electron.js and is compatible with any Windows, Mac, or Linux device. The mobile app (also cross-platform) was created using React Native and seamlessly interfaces with the primary client over wifi through socket.io. The custom UI on both the primary and secondary screens was meticulously designed by hand.

Implementation Details

The connection between the mobile and desktop clients is handled through a websocket created with socket.io. Because our desktop application runs locally, every socket message from the mobile device corresponds to an OS command to control mouse movement, volume, and key presses on the desktop side. Additionally, Orion also runs Chromium, which allows for the interaction of local state information (mouse, key, and click events) with web pages, creating a seamless user experience with mere millisecond delays. For example, consider a user clicking on the mobile touch area while hovering over content on the Orion desktop. This sends a socket.io event to our desktop application, which subsequently injects javascript into the web page. This javascript parses the URL and retrieves relevant information, such as search parameters and the video ID. All supplementary information - comments, reviews, and author information - is then sent back to the mobile device through another socket message.

Challenges we ran into

Dynamically linking the states of the main screen and "remote" (for two-way content sharing and controller input) was a serious challenge. It took us a few caffeine-intensive weekends to sort through the bugs

Accomplishments that we're proud of

Aside from the buttery-smooth interface, one of our favorite features is the platform's ability to launch any existing PC game and transform up to four connected mobile devices into virtual gamepads.

What we learned

Virtual input is a double-edged sword: you gain an expressive freedom inaccessible to dedicated hardware, but can easily lose a sense of coherence and simplicity if you're not careful. We learned to force ourselves to keep things intuitive in order to avoid feature-creep.

What's next for Orion

Though Orion can already support any web-based streaming service or content platform, we want to enrich the information that gets shared with the secondary device through available APIs.

***All content used with permissions through creative commons or API agreements.

Built With

Share this project:
×

Updates