Data Model snapshot (7 December 2020): https://i.imgur.com/A4fPDf5.png
Stack:
- Ubuntu 22.04 (LTS)
- Python 3.14
- Django 6.0
- PostgreSQL 16.10
- Bootstrap 3/jQuery 1.12
- SolidJS
- MQTT event passing
- Take payments for pre-registration using Square, both online and in-person with an iPad app as a customer-facing display, with cash drawer and receipt printer integration.
- Manage staff registration and department hierarchies.
- Handle dealer applications, registration, and payments.
- Create limited-use discounts.
- Handle on-site registration on your own kiosks, or via a public URL.
- Populate attendee information by scanning their ID.
- Print badges on the fly with a custom template on any compatible card or label printer, with Unicode-supported fonts (Emoji!)
- Protect admin and volunteer logins with TOTP 2-Factor or FIDO U2F.
# Install docker using the instructions at either:
# https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04 or
# https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository.
# Download docker-compose.yml and example.env files from this repo
# Create .env from template and edit relevant settings (API keys, etc)
cp example.env .env
# You’ll need a Square developer account to take payments: https://squareup.com/signup?country_code=us&v=developers
# If your hosting provider is not configured for a mail relay, you’ll want to populate these lines with SMTP account credentials with e.g. gmail or mailgun.
# Run in Docker
docker compose up -d
# Create superuser account
docker compose exec app /app/manage.py createsuperuser
# Respond to prompts as needed
# Go to http://localhost:8000/registration/ in a web browser and follow the setup directions.
The following was tested on a fresh installation of Ubuntu 20.04.
# Get the software from Github
git clone https://github.com/furthemore/APIS.git
cd APIS
# Create .env from template and edit relevant settings (API keys, etc)
cp example.env .env
# You’ll need a Square developer account to take payments: https://squareup.com/signup?country_code=us&v=developers
# If your hosting provider is not configured for a mail relay, you’ll want to populate these lines with SMTP account credentials with e.g. gmail or mailgun.
# Install make and other necessary utilities
apt install build-essential
# Install docker using the instructions at either:
# https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04 or
# https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository.
# Give yourself permission to run Docker commands
sudo usermod -aG docker ${USER}
# Log out and back in to make it take effect
# Build image
make build-docker-image
# Run in Docker
docker compose up -d
# Create Superuser
docker compose exec app /app/manage.py createsuperuser
# Respond to prompts as needed
# Run the development server
make dev
# Go to http://localhost:8000/registration/ in a web browser and follow the directions.
git clone https://github.com/furthemore/APIS.git
cd APIS
uv sync
# Create a development database server
python manage.py make_db
# Start the development database server
python manage.py start_db
# Review your settings, including the database settings from the output from make_db.
cp fm_eventmanager/settings.py.devel fm_eventmanager/settings.py
python manage.py migrate
python manage.py createsuperuser
# Create a self-signed certificate if you want to test or hack on U2F
openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 \
-keyout localhost.key -out localhost.crt -subj /CN=localhost
# Get it running (omit --cert localhost for HTTP)
python manage.py runserver_plus --cert localhost.crt
For production use you will also need an MQTT broker for some features like taking on-site payments with the iPad application. Please see this documentation for notes about configuring a broker.
Using pre-commit
- Install:
pip install pre-commitorbrew install pre-commit. - then run:
pre-commit install, this will apply the hooks defined in.pre-commit-config.yamlto every commit
