Caution
This repository will no longer be maintained; check out the AnimeCon Volunteer Manager instead.
This repository contains a Volunteer Portal frontend implementation for the AnimeCon 2022 festival. The backend may be found in the volunteer-portal-api project, also published on GitHub.
This project has been designed to be applicable to other conferences as well. Fork this repository, provide an implementation of the API and replace the resources in static/ as you see fit. Contributions are most welcomed, even when they are not immediately applicable to AnimeCon.
The Volunteer Portal is a frontend project that allows
The volunteer portal interacts with a server endpoint through a defined API, which it assumes runs on the same origin as the frontend. This can be overridden by setting the REACT_APP_API_HOST
environment variable to another origin just before invoking webpack. The endpoint paths are defined in ApiRequest.ts, and are not intended to be configurable.
The ts-json-schema-generator library is used for converting the TypeScript API definitions to a JSON scheme, for which we've written a small, manual validator used responses from the server endpoint.
The base library provides the majority of the volunteer portal's business logic. Code in this directory cannot participate in constructing the (Preact) DOM. Furthermore, code in this directory is expected to be tested. TypeScript interfaces are used to hide internal implementation details from API consumers, although this is not a strict requirement.
The Welcome App is the overview page that should be shown when a visitor loads the volunteer portal for the first time. The intention of this app is to provide convenient access to either apply to participate in an event, or access their schedule for an event.
Visibility of events in the Welcome App is defined by the API endpoint. Administrator users receive additional visibility, wherein options made available through privilege are clearly highlighted.
The Registration App is where volunteers can find additional information about a particular event, and, when enabled, apply to participate in it. Content for an event's registration environment is to be provided by the API endpoint.
Both the ability to apply and the ability to display progression of an application are reliant on the User functionality, and the volunteer having identified to their account. This, too, is controled by the API endpoint.
The Schedule App is where volunteers can find their schedules for a particular event. It's a reasonably powerful and complex app that further displays the event's entire programme, participating volunteers, and enables a volunteer to quickly search through both.
The Display App is an interface specifically built for the physical Volunteering Location Screens, which are based on 7" Raspberry Pi touch interfaces at a very particular resolution. Access to the displayed content is only available with a specific display identifier.