ethorn / eit-web-ar

The project I worked on during my summer internship at Equinor. We explored the potentials of Augmented Reality using web frameworks like A-frame and AR.js.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Emerging IT - Web AR

Summer 2020 Internship Project

The challenges for the average Equinor employee to use dedicated AR devices in a office environment are

  • Devices are not easily available
  • Devices require setup on dedicated machines
  • Equinor managed pcs are a no-go due to the way they are locked down
  • Management of both device setup and usage scenarios are too cumbersome for quick and easy show and tell demos, or simply exploration of a 3d design you are working on

To be able to make (a limited subset of) the possibilities of AR available to as many people as possible we can

  • Use their mobile phone as device
  • Use a web app so that no installations is required
  • And then help tracking by using QR codes or GPS coords for where AR should kick in

By using WebXR we trade (advanced) device capabilities to gain user availability - both for end-users and developers. By gaining easy availability we hope to be able to quickly explore use cases where "lightweight" AR can enhance the daily work experience.

Explore AR possibilites with the user

alt text

Table of contents

For developers

For users

For Equinor

Technologies

CICD

  • webpack
    Build and bundle the web components of the app

  • Docker
    We use multistage dockerfiles to build the images. docker-compose is used for development purposes only.

  • Omnia Radix
    CICD and hosting in the playground environment. Radix configuration is mainly handled in radixconfiguration.yaml

Components

Core

  • frontend
    A client side web app.
    nginx acts as a "backend" in that it

    • Serve static js/css/html to the client
    • Route /api to the backend component
  • backend
    Handle business logic for multiplayer scenarios.
    It is a nodejs server running express to expose a REST api.
    Dependent on component storage for, well, data storage.

  • storage
    Storage is a simple redis container with no file storage or backup

Additional components when app is available in Radix (public)

  • auth-proxy
    Main entry point for the app when making the app available to the public in radix.
    It allows traffic to the frontend component if the aad app authenticate the user. Based on radix auth proxy example

  • aad app
    OAuth in Azure

Security

Development

Each component has a docker-compose.yaml that contains everything we need to run a development environment for that specific component, while the other components are run using their production dockerfiles. See each component README for how to get it up and running.

If you need to have the development environment for all components available at the same time then use the ./docker-compose.yaml found in repo root.

Storage credentials in shared .env file

We make use of docker-compose .env file to insert credentials as environment variables in the storage and backend container.
This .env file is shared among the development environments (docker-compose) for all the app components.

  1. Create your own .env file in root of repo
  2. Add variables in key=value format
    REDIS_PASSWORD=<insert-your-password>
  3. Make sure .env is gitignored!

About

The project I worked on during my summer internship at Equinor. We explored the potentials of Augmented Reality using web frameworks like A-frame and AR.js.

License:MIT License


Languages

Language:JavaScript 83.6%Language:HTML 8.7%Language:Shell 5.1%Language:CSS 2.6%