Alexandria was the result of my Google Summer of Code project from 2017.

I wrote it in Python using Flask. There’s a few parts to Alexandria:

  • A highly configurable configuration engine built around a modular generator (‘factory-ish’) type design
  • A content browser intended for many different content sources with a whole bunch of different options for content display
  • A web administration back-end for handling administrative tasks such as
    • turning on and off services
    • configuring network interfaces
    • configuring services
    • managing content sources
    • etc.
  • A script to generate Raspberry Pi SD card images via a systemd container
  • A whole bunch of scripts to generate configuration files and manage services

The web side uses Flask’s blueprints, making it possible to turn off (or on) any part of the interface as needed. The administration interface was intentionally made to be as customizable and flexible as possible. There’s only a few things that can’t be done with the fallback configuration editor.

In the end, I got Alexandria to about 80% of where I was hoping I would get it. There are still rough spots and a lot of places where I struggled. A full write-up of my experience is available in the GitHub repository.