Git Product home page Git Product logo

apis's Introduction

APIS EventManager

Build Coverage Status

Data Model snapshot (7 December 2020): https://i.imgur.com/A4fPDf5.png

Stack:

  • Ubuntu 20.04 (LTS)
  • Postgres
  • Python 3.8 - 3.10
  • Django 3.2
  • Bootstrap 3
  • jQuery 1.12

Features

  • Take payments for pre-registration using Square, both online and in-person with an Android app as a customer-facing display, with cash drawer and receipt printer integration.
  • Manage staff registration and department heirarchies.
  • 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 with a simple browser worker.
  • 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.

# Build base docker image:
make build-base-docker-image

# Edit Dockerfile and replace the first line with output from last command. (The console will remind you.)

# Give yourself permission to run Docker commands
sudo usermod -aG docker ${USER}
# Log out and back in to make it take effect

# Build final 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

# OPTIONAL: If you intend to run APIS in production, configure your webserver to act as a reverse proxy.
# Example docs: https://www.digitalocean.com/community/tutorials/how-to-use-apache-as-a-reverse-proxy-with-mod_proxy-on-ubuntu-16-04

# 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
python3 -v venv venv
source venv/bin/activate
pip install -r requirements.txt

# Review your settings
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

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 evey commit

apis's People

Contributors

alsaihn avatar cmhedrick avatar dependabot[bot] avatar dozertrashpanda avatar meanderfox avatar rechner avatar resba avatar shishome avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apis's Issues

Make tokens one-use

After using a token to register as staff or dealer, or after adding a Jersey to an attendee record, create a new token on the applicable part of the record.

Store past tokens for reference?

Change onsite reg birthdate field to 3 field entry

The default behavior on tablets for the date field type is a bottleneck for onsite registration. Switch back to year (4-digits validation, =< current year), day (2-digits validation, <= 31), and month (dropdown, spelled-out) fields.

Example image from samsung account

Create add/change assistants form

Business rules:
show existing assistants
not charge for changing assistant information
not allow removing assistants
charge for adding new assistants

Exhibitions staff are responsible for ensuring assistants have not been registered already, there's a different process for changing those if they already have.

Create checkout page

Page to display orders so far, button to add another person and button to continue to checkout.

Options form

Use options returned with pricelevel items to collect option values from attendee

Integration with User Accounts

Should we be integrating with Users so we can offer people the ability to manage their registration? Like signing up to do panels or registering with marketplace?

Updates to staff forms for 2019

-- Add a blank option at the top of the t-shirt size list and make it required. This is to prevent people from leaving their selection as Small and being upset at con when they get a Small.
-- Add badge ID (read only) to staff admin page
-- Add checkbox for "Checked In" status to staff admin page

Add dealer lookup and payment

Assumed: Dealers receive a link to the lookup form with their registration token in the url

The lookup form will:

  • Ask for their email
  • Retrieve the dealer application that matches both token and email (error popup if not found)
  • Display a version of the application with their info, allowing changes to some fields (have initial list from Indigo)
  • Take payment

New staff whose initial reg and staff reg are different price points are being charged the difference.

If a person registers during pre-reg, then gets promoted to staff after prices have changed, they are being charged the difference. This is because they have a paid badge before they get to the staff registration form, so the discount is voided.

Current workaround - Reg Head is changing price types to the current set before promoting to staff.

Possible fix - make the staff reg token reset after reg, force staff to use upgrade form to upgrade levels, remove discount void from staff total calculation since they can only ever use it once.

Allow merchandise to be listed and purchased by any attendee level in same card

Add mechanism to allow any attendee level to pre-order con store merchandise and pay for it in the same cart to allow for presale, which can help prevent over/understock of convention merchandise, drive sales, and allow non-sponsor levels to customise their swag experience before the event.

Integration of an existing Django e-commerce module may be an easy way to accomplish this.

Potential - Driver's License scanners for on-site reg

Idea to allow us and/or attendees to scan their driver's license to pre-fill name, dob and address into the reg form.

Are there any legal qualifications to be able to own/use the scanners?
How much do they cost?

Birthdate not being accepted on the dealer form

Dealer emailed that they couldn't enter their birthdate. The form blanked it out whenever they tried to enter it.

Potentially a problem with how their specific browser implements a date type field, so adding bootstrap datepicker instead.

Create upgrade level form

Rules:
Can only upgrade, or change options for existing level
If upgrading, any shared options should keep their existing data

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.