SJAG Events

Volunteer duty booking web app

SJAG (St. John Ambulance Guernsey) Events is an online duty booking platform used by our volunteers to sign themselves up for public first aid duties - e.g. North Show. This is intended to replace the old manner of duty bookings, where a PDF from a spreadsheet would be printed or emailed out to show available duties, volunteers would then need to email back in to book on. This caused issues as the PDFs would have difficulty being displayed on mobile devices, and the process was quite a hassle. The new system uses a Flask web app that backs onto an sqlite database via SQLAlchemy, which handles the conversion of database records into usable objects. Users can log in and view what duties are available and what they have signed up for, they can see in real-time the level of cover who have signed up vs what is required, and alter or remove their bookings if need be. Actions are then approved by organiser users; with additional approval needed for Cadet bookings from our youth team, who have their own specific need-based features, such as the automatic generation of consent forms. The system also has additional capabilities, such as an iCalendar service which can automatically add bookings to the user's calendar, email notifications, and progressive web app (PWA) support which allows users to install the website as a pseudo-local app on their device. The system has currently been fully adopted by our youth division, with all bookings now handled online. Currently, only a portion of our adult volunteers have moved to the new system as early-adopters and testers, with a full roll-out planned for November. I developed and maintain this at no cost to the charity and count it as a part of my service to it, and intend to add additional features as the system enters full use.

Files & links:

Technologies:

  • Python3
  • Flask
    • Flask-Login
    • Flask-Mobility
    • Flask-SQLAlchemy
  • Jinja2
  • HTML
  • CSS
  • JS
  • SQL (SQLAlchemy)
  • Apache2 Web Server

Got any questions? Please feel free to reach out

james@jamesdev.co.gg