Wiki

Clone wiki

streetsign-server / Home

StreetSign (server)

Welcome to the StreetSign Project! This repository is for the main server - which currently is pretty much of the whole project. There are also bits such as the raspberry-pi X11/chromium/python client system, the ansible based deployment & management scripts, local client "oh no I can't see the server!" nicely formatted error messages, "sneakersync" (for keeping clients up to date even with no ethernet connection), a future hardware accelerated client, etc, etc.

The idea was to keep everything as simple as possible (but no simpler). The main server is Python, using the very simple "Peewee" ORM, and the "Flask" micro-framework. The database is intended to be usually Sqlite, but you can adapt the system to mysql or whatever if you really feel like it (although, honestly, read the Sqlite spec. Do you really need something more powerful than that? Really?)

The front end 'screens' are HTML5/CSS3 & jQuery/Javascript. The back end is the same, with a sprinkling of knockout.js for one or two more complex editor components.

Overview

One machine, of pretty much any spec (a raspberry pi works fine) is the "server", which you connect to with a web interface to set up "screens" (output URLs) which then display "feeds" (categories) of "posts" (display items), either as fade-in-fade-out 'zones', looping through the posts, or as scrolling news-tickers. There's a basic but effective user management system built in, so you can set different users (or groups of users) as authors able to write for various feeds, publishers, able to publish posts on a feed, or whatever.

Client computers (again, raspberry pi's work pretty well) then connect to the screen URL, and display it. Usually full screen. The page keeps itself up to date by pulling data from the server as JSON, and adding it into the list, deleting old posts, etc.

Posts are given a life-time, and within that lifetime can have "time restrictions", so you can have a week-long lifetime for a "lunchtime" post, say, but only display it from 12:00 - 13:30 each day.

History

StreetSign was initially written in about 3 weeks before Teenstreet 2013. We had planned to use Concerto, and Screenly however at that stage although their websites were really slick, they had certain limitations and annoyances which meant it wasn't really viable for us to use & support at the event. (No easily user-modifyable themes, the server was moderately complex to install on a standard linux computer w/o a large RoR stack, no "rich text" content boxes, no easy way to have a section of a "screen" which could display pictures and text post types, and written in Ruby on Rails.

So anyway, we used StreetSign quite happily at teenstreet, with one old dodgy looking single-core server, and 5 raspberry pi clients around the campus. TODO: post pictures.

We ended up having no ethernet for the first few days due to cabling issues, but with the simple ansible deployment and low server requirements, could easily install StreetSign on to each of the pis, and then have each one using it's own local server. With a basic 'sneakersync' script, someone then updated the info on the screens a few times a day with a bicycle and USB stick (everything was automated, so no just plugging in the stick would automatically pull data from the server, or update the client).

Updated