An Online BarCamp Session Grid Viewer
Waznex Server (What's Next?) is a web application server designed for BarCamp Grand Rapids, but which should be useful for other BarCamps or conferences with a rapidly-changing physical session grid. Its purpose is to host an online version of the meatspace presentation session grid. Essentially, attendees upload a photo of the session grid to the WaznexServer instance:
and the server converts this into an interactive grid:
This allows attendees to see what's going on in upcoming sessions without going out to the lobby.
Waznex Server is based on the Flask microframework and can easily be hosted on a Linux or OSX server. I currently recommend running in production on Ubuntu with at least 1GB of RAM.
- Install Docker and git
git clone https://github.com/brousch/WaznexServer.gitcd WaznexServermake docker_dev(or run Docker commands from Makefile manually)- Ctrl-C to stop it. Re-run it if you make file changes (no shared volumes currently)
- SSH to server as root
apt updateapt install -y make gitmkdir /opt/waznexservercd /opt/waznexservergit clone https://github.com/brousch/WaznexServer.gitcd WaznexServermake init_production
- Modify the image and thumbnail paths found near the top of
config.pyto reflect your file system. - Modify the
templates/index.htmlfile to change the page title. - Modify the
static/css/main.cssfile to change the style. - Also be sure to disable debugging in a live deployment.
make docker_devormake docker_dev_debugif you need flask DEBUG mode. Or runpython -m waznexserver.waznexserverin your own Python environment
- Make sure DNS is set up to point to the server
- SSH to server as root
cd /opt/waznexserver/WaznexServer- Set up HTTPS e.g. https://www.linode.com/docs/guides/enabling-https-using-certbot-with-nginx-on-ubuntu
snap install --classic certbotln -s /snap/bin/certbot /usr/bin/certbotservice nginx stopcertbot --nginx
- Set up HTTP/2 (just append
http2tolistenin/etc/nginx/sites-available/default) e.g. https://www.linode.com/docs/guides/how-to-configure-http-2-on-nginx/ make run_production
- Python 2.7 -> 3.12
- Upgrade all python libraries
- Docker instead of Vagrantfile and system services
- Ubuntu 18.04 -> 24.04
- Run splitting code immediately instead of on a cron
- Optimize splitting calls
- Lots of cleanup
- responsive full width display
- UI & wording updates
- show relative time since photo uploaded
- caching headers for static files
- auto-rotate iphone images
- system service for splitting the grid
- jinja loop fix
- pip/python2 bootstrap fix
- Upgraded to Ubuntu 18.04 Bionic
- Switched install from upstart to systemd for Ubuntu 16.04
- Moved to sockets for nginx to waznexserver communication
- Added Vagrant for easier development
- Much improved Makefile for easier development and production installation
- Usable documentation
- Newer versions of Flask and dependencies.
- Diagnostic image link between sizes and mark bad.
- Mark bad button.
- It now has a database backend using SQLAlchemy instead of the thread-unsafe global list. This has only been tested with Sqlite so far.
- You can now control how many images are shown on the main page - it's no longer hard-coded to 3.
- Version 0.1 includes the bare essentials of a working server.
- It can accept file uploads and will display the three most recent uploads using the mobile web theme.
- It generates two additional sized versions of each photo: a downsized version with maximum size of 1024x1024 pixels, and a thumbnail version with a maximum size of 316x316 pixels. The downsized version is useful for viewing on mobile platforms that limit download size (WebOS). The thumbnail version is sized to fit the mobile theme width.

