Return Home

Spaceport

Member portal for Calgary Protospace. It tracks dues, courses, training, access cards, and more.


Spaceport is the member portal that I wrote for Protospace, a makerspace that I frequent in Calgary. It is by far my largest project and the one I've spent the most time on. It has a database of all our members and tracks their transactions like dues and training fees. It allows members to sign up for classes and our instructors to teach courses. It also manages the access cards that members use to get into the building.

You can find the source code on Github.

spaceport1.png

Spaceport is tightly coupled to Protospace and has many integrations:

  • Syncs credentials to our AD controller for computer logins
  • Manages AD group membership to restrict machine use
  • Syncs credentials to our Discourse forum Spacebar
  • Manages Discourse groups to restrict topic access
  • Syncs credentials to our MediaWiki
  • Processes PayPal payment notifications
  • Syncs valid member cards to our door controller Airlock
  • Tracks training certifications for our tool lockouts
  • Emails interested members when a class is scheduled
  • Shows who's connected to our Minecraft server
  • Tracks who's logged into our laser cutter and CNC router
  • Tracks and bills for laser cutting time
  • Shows if the building alarm is armed or disarmed
  • Displays charts of various environmental sensors
  • Displays a photo of our garden

spaceport2.png

As of writing this there's 234 current Protospace members and 1408 historical or inactive memberships that it manages. Data is stored in a 49 MB SQLite database which makes it easy to back up or sync with my development server. The back end is written in Django / Python and the front end is React / JavaScript with Semantic UI for the graphics.

Site data is automatically compressed and backed up daily by two members. The software is free and open-source and can be set up by reading the documentation. Protospace directors also have admin access to the server's host in case something happens to me.