A service to allow easy display of meeting room status from Outlook/Exchange on a web based tablet interface
The easiest way to run the server is using docker-compose:
cp config.env.template config.env
vi config.env
# Update environment variables (see below)
docker-compose up
Once the image has finished building & everything is running, you should be able to hit [http://192.168.99.100:5000] to view the website.
Heroku should automatically work via the Procfile
To run on Cloud9 (and possibly Debian based Linux in general):
sudo apt-get install python-lxml
sudo pip install -r requirements.txt
python room_display/app.py runserver
The following environment variables can be set (all are optional):
- Server settings:
IP
: The IP to bind the web server to (defaults to0.0.0.0
)PORT
: The port to bind the web server to (defaults to5000
)
- Misc settings:
DEMO_MODE
: If this is set to"true"
, the server will operate in a demonstration mode (using example data)INSTABOOK_TIMES
: A comma separated list of meeting lengths allowed by Insta-booking
- Exchange settings:
OUTLOOK_DOMAIN
: Domain for the outlook user to log onto- If this is left blank, demo mode will be enabled
OUTLOOK_EWS_URL
: URL to the EWS endpoint on the exchange server e.g. [https:///EWS/Exchange.asmx]OUTLOOK_USERNAME
: User for exchangeOUTLOOK_PASSWORD
: Password for exchangeOUTLOOK_ROOM_DICT
(See below): A JSON dump of a dict containing the room name as a key and the room's email address as a valueOUTLOOK_ROOM_SEARCH_TERM
(See below): A string fragment to match to find contacts that are meeting rooms from the exchange global address listOUTLOOK_REFRESH_TIME
: How often to grab the data from ExchangeOUTLOOK_TIMEZONE_NAME
: What timezone the Exchange server is in e.g.Europe/London
- Security settings:
ALLOWED_IPS
: A comma separated listed of allowed IPs. Default is allowed by any IP.
- Frontend settings:
POLL_INTERVAL
: Poll wait time for the client in minutes. Defaults to 1.POLL_START_MINUTE
: Poll start time in minutes from midnight. Defaults to 420 (7am)POLL_END_MINUTE
: Poll end time in minutes from midnight. Defaults to 1140 (7pm).
Either the list of meeting rooms must be supplied as a json.dumps string:
json.dumps({'Meeting Room A': '[email protected]', 'Meeting Room B': '[email protected]'})
OR you can set the search term to a fragment of a meeting room name and let the app find the meeting rooms for itself. E.g.: If the meeting rooms are called "Cloud Meet", "Corporate Meet" and "Blue Meet" then the search term should be "Meet".
Backend:
- InstaBooking:
- Booking takes a while to showup; maybe add it to the booking list rather than refreshing?
- Check if the room is free
Frontend:
- UI improvements:
- Meeting progress bar / countdown clock
- Bigger colour bar
- On small screen, navbar obscures some meeting info
- InstaBooking:
- Show a confirmation dialog
- Let the user know if there was an error booking
- Extend booking
- Fix dashboard updating - Angular doesnt seem to pickup when
first_booking
is changed? - Add home page & move there after inactivity
- Add currently free room suggestions
- Add soonest free room suggestions
Extra ideas:
- Move to timestamps instead of minutes (to support multi-day meetings)
- Theme switching with https://github.com/jguadagno/bootstrapThemeSwitcher
- Room locations
- eInk/RaspberryPi Display
- Room facilities & icons
- Mulitple backends
- Angular
- Bootstrap
- BootstrapCDN for bootstrap theme hosting
- Bootswatch
- cdnjs for library hosting
- Flask
- IconArchive for the favicon
- jQuery