Skip to content

Latest commit

 

History

944 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

APIS EventManager

Build Coverage Status

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

Features

  • 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.

Screenshot of Cash Register Position

Quick start

Running Using Published Docker Images

# 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.

Development Environment Setup

Building Docker Container

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.

Locally without docker (recommended for developers)

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

Production use

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.

Development

  1. Install: pip install pre-commit or brew install pre-commit.
  2. then run: pre-commit install, this will apply the hooks defined in .pre-commit-config.yaml to every commit

About

Event Management System for Fan Conventions

Resources

Stars

14 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages