GithubHelp home page GithubHelp logo

ethorn / eit-web-ar Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 453.94 MB

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

Shell 5.08% JavaScript 83.60% HTML 8.73% CSS 2.58%

eit-web-ar's Introduction

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!

eit-web-ar's People

Contributors

erlendb avatar ethorn avatar jonaspetersorensen avatar jonasrj97 avatar olaals avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.