• Stars
    star
    102
  • Rank 335,584 (Top 7 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 7 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A simple Display for Meeting Rooms

Meeting Room Display

Meeting Room Display

This is a side project we built at Aerolab to show which meeting rooms are currently available (and for how long), as well as giving you the ability to anonymously book them for 30' with a single tap. This is all based on Google Calendar in a typical Google Apps for Business package.

The motivation behind this is that most meeting room software is needlessly complicated (and expensive!), so we built exactly what we needed as a Web App, which is then deployed to a bunch of cheap Fire HD 8 tablets using a headless web browser. It's simple, it works well to let people know that they shouldn't use a specific meeting room, and it looks kind of cool.

Setup & Config

This is a standard Node.js project, so you just need to run npm ci to install the dependencies and npm run dev to start development mode with live reload. Run npm run build and then npm start to run the app in production mode.

This is the most complicated step, as you are going to need to add two JSON files to make things work: A Google Credentials File, and a list of Meeting Rooms (also known as Resources in Google Calendar).

Google Credentials

Go to the Google Developer Console and create a new Project. After that's done, you need to do a few more things:

  • From the Library menu, you need to Enable the Google Calendar API (use the search if it's not in the popular list)
  • From the Credentials menu, Create a Service Account, and select JSON as the key type. Save this file as you'll need it in a while.
  • Take note of the Service Account ID as well (it looks like accountname@(...).iam.gserviceaccount.com)
  • Rename the JSON key file to rooms-client.json and place it in the root of the project.

Configure the supported Meeting Rooms

Go to Google Calendar and click edit on each meeting room calendar. For each one of them do the following:

  • On the Calendar Details tab, Take note of the Calendar ID (it looks like [email protected]).
  • Under the Share this Calendar, Share it with the Service Account ID (add accountname@(...).iam.gserviceaccount.com to the calendar and give it full access)

After you've done that, you need to Create a rooms.json file in the root of the project detailing all the enabled rooms, their names and Calendar IDs, using a slug as the key. It should look like this:

{
    "lounge": {"name": "Lounge", "slug": "lounge", "position": "right", "id": "[email protected]"},
    "super-room": {"name": "Super Room", "slug": "super-room", "position": "left", "id": "[email protected]"},
}

The position just shows where the room is located relative to the display. The only options are left or right.

Using the app

Open a browser on http://localhost:3000/room-slug (not literally, replace room-slug with the proper room key, like lounge or super-room). You should be able to see the current status of the room and book it.

Deploying

We provide a Dockerfile, which you can easily use on Now, or any other service you prefer. We are not using any sort of authentication or env variables as this is a quick internal project, but you're free to add some sort of auth if you want.

License

MIT, of course.

More Repositories

1

midnight.js

Switch your nav's design on the fly
JavaScript
3,669
star
2

blockrain.js

HTML5 Tetris Game for jQuery
JavaScript
954
star
3

readremaining.js

How long you'll need to read an article
JavaScript
553
star
4

nextjs-pwa

Build a PWA with Next.JS
JavaScript
142
star
5

setup

Make your Mac Aerowesome
Python
134
star
6

frontend-developer-coding-challenge

Are your looking for a remote developer job? Solve this frontend developer challenge and show us what you can do and what you are an expert at!
125
star
7

pixelcounterapp

How many pixels have you crafted?
HTML
68
star
8

booom

Dribbble Enhancement Suite
JavaScript
51
star
9

lullaby

A treatment for tinnitus
JavaScript
44
star
10

youtube-tv

Build a desktop app with Node Webkit
JavaScript
42
star
11

subtle-animations

How to add simple UI details
CSS
35
star
12

coding-challenges

Show your abilities as a developer
HTML
35
star
13

welcome

A macOS app to onboard new Aerolabers
JavaScript
34
star
14

platzi-pwa

Material de PWA en Platzi
JavaScript
28
star
15

acanohayluz

Reporte de cortes de luz en Argentina
PHP
20
star
16

workshop-nextjs

Aprendiendo Next.JS
JavaScript
16
star
17

pixelcounter

Count the pixels in all the images in a folder
JavaScript
15
star
18

svg

The SVG Workflow
HTML
15
star
19

aerolab.github.io

Open Source Projects by Aerolab
JavaScript
13
star
20

activate-mac

Activate Windows. For Mac.
JavaScript
12
star
21

criterios

Criterios de Calidad de Aerolab
HTML
11
star
22

fullstack-developer-coding-challenge

HTML
11
star
23

aerolab-cli

A tool for automating dev tasks
JavaScript
10
star
24

perfect

The only perfect piece of software
9
star
25

platzi-nextjs

Material de Next.JS en Platzi
JavaScript
9
star
26

iojs-colorpicker

A color picker for our IO.JS logo
JavaScript
8
star
27

nokia-psd

The long-awaited PSD for Nokia 1100
SCSS
7
star
28

type

Workshop de tipografía
CSS
7
star
29

jsconf2014-workshop

Node-Webkit Workshop for JSConf
JavaScript
7
star
30

meeting-quantifier

How much did you spend on that meeting?
CSS
6
star
31

goldenimage.js

Fix camera rotation of an image
JavaScript
6
star
32

iojs-logo

IO.JS Logo Proposal
6
star
33

nextjs-routing

Routing y Layout avanzado con Next.JS
JavaScript
5
star
34

rosarigasino

Egasel mejogasor lenguagasaje degasel mugasundo
JavaScript
5
star
35

zeplin-renamer

Rename Zeplin images for React Native
Python
5
star
36

nextjs-intro

Introducción a Next.JS y Styled JSX
JavaScript
5
star
37

origami

Workshop de Origami
3
star
38

startupmap

Mapping Startups in Latin America
CSS
3
star
39

tutorial-navigator

A tutorial for Auth0
JavaScript
1
star
40

meeetup

Buenos Aires Dribbble Meetup 2014
1
star
41

next-sanity-starter

Next.js starter with Santy
TypeScript
1
star