Code Monkey home page Code Monkey logo

auden's Introduction

auden

auden is an open-source, hackable audience engagement software, supporting multiple features, such as Live quiz and Voting system. Its hackable architecture allows developer to modify and add features to fit the event.

We used auden in Code in the Dark Thailand #3: CNX 2019 to encourage attendees to participate in the event more easily.

Instead of requiring all contestants to register beforehand (which takes quite a courage), a live quiz system allows anyone in the event to compete to become a contestant in each round.

Photo

Because this app supports multiple features, when it’s time for voting, attendees can vote on the same webpage without the need to switch between multiple apps (such as Mentimeter, Slido, and Kahoot).

Photo

Feature tour

Each feature (called scene) contains 3 user-facing components:

  • The Audience component is a mobile UI for audience to engage in the event.
  • The Presentation component displays what the audience will see on the big screen.
  • The Backstage component allows event staff to manipulate the scene (such as activating a question, displaying scoreboard, etc.)

quiz

Play a multiple-choice quiz game with any number of participants, similar to Kahoot.

Photo

vote

Create a live poll to gather audience’s opinion, similar to Mentimeter.

Photo

Technical

It is a webapp, built on top of:

  • React!
  • TypeScript!
  • Grommet!
  • Firebase Real-time Database!
  • fiery πŸ”₯!
  • Hooks and Suspense!

Set up Firebase project

  1. Set up Firebase Authentication to allow sign in using Facebook.

  2. Sign in using the web app, and obtain the Firebase user ID by running firebase.auth().currentUser.uid in the JavaScript console.

  3. Make the user an admin by writing true Firebase Database at /admins/$uid. Admin users can read and write anything.

Data model

Scene

Everything is organized into β€œscenes,” which represents a type of situation in an event.

For example, you can have a scene for a quiz, for a survey, for voting, for announcements, and an idle scene when there’s nothing interesting going on.

Each scene has:

  • A presentation display, for projecting to a large screen.
  • A audience UI to let audience engage with the event from their mobile phone (or desktop).
  • A backstage UI to manipulate the scene.

Data is structured in Firebase this way: Namespace β†’ Name β†’ Access pattern. This allows using same Firebase rules across all scene types, eliminating need for us to deploy new rules when adding new scene types.

Available access patterns:

  • public-read β€” Anyone can read but only admins can write. Examples:
    • main β†’ state β†’ public-read β†’ showLeaderboard
    • main β†’ settings β†’ public-read β†’ maxVotes
  • personal β€” Anyone can read, however, each user can write to their own personal slot. Examples:
    • main β†’ poll β†’ personal β†’ $uid β†’ selectedOption
  • events β€” Anyone can read. Each user can publish events. Append-only. Examples:
    • main β†’ chatMessages β†’ events β†’ $eventId
  • private β€” Each user can read and write to their own personal slot. Examples:
    • answers β†’ $questionId β†’ private β†’ $uid β†’ answerId
  • inbox β€” Each user can read data assigned to their own personal slot. Examples:
    • main β†’ role β†’ inbox β†’ $uid
  • secret β€” Only admin can access
    • main β†’ questions β†’ secret

Screen

An instance of a scene. It has:

  • Data stored in Firebase. How data is used is determined by scene type.

That can be one active screen at a given time.

auden's People

Contributors

dtinth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

auden's Issues

Make questions order correctly by index

Currently, it displays in the alphabetical order, which makes it harder to select the consecutive choices when you start to have more questions in the quiz

Screenshot 2020-02-08 12 50 06

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.