Skip to content
A small bottle app to go with the NAP report tool
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

North American Pairs District 23

This app is currently serving ACBL District 23 for the North American Pairs tournament. There are two main use cases:

  1. Enable uploading and reporting of players from designated NAP club games who qualify to advance to the next round of playoffs.

    Club managers and directors can upload ACBLscore game files directly to the app to report their qualifier lists.

    Players and interested parties can see the list of qualified players in a number of different formats.

    Files can be uploaded both as ACBLscore game files, or as an NAP report CSV file. Advantage goes to game file uploads, as the app is able to report table count, game date and session, and other valuable information.

  2. Accept reservations for games in the next round of playoffs.

    A partnership may use the site to announce their intention to play in one of the Unit Final games (the district semi-final).

    The partnership providesa contact email address. An email is sent to that address with a confirmation link. After clicking on the link from the email, the partnership is assigned a provisional table.

    At the tournament, entry slips will be available for all preregistered partnerships, and they will pay a slightly discounted fee.

Implementation and deployment

Nap-webapp is deployed on a Linode virtual machine running CentOS 7.

The front-end http server is NGINX, and the middleware is uwsgi.

The web framework is Bottle,

Basic data services are provided by the companion Python module nap, which handles data processing of game files.

There is no back end storage database! The fundamental storage is in disk files.

Memcached provides in-memory storage of the NAP data as JSON objects to avoid frequent processing of the ACBLscore game files.

Configuration variables:

hostname:port for memcached (localhost:11211)


Suggest /var/log/

Root directory of a tree of game files from qualifier games, must be read/write for the user running the app (for instance uwsgi).

Root directory where new game file uploads land for processing, must be read/write for the user running the app (uwsgi)

Root directory where registrations and confirmations are persisted, must be read/write for the user running the app (uwsgi).

Host name of the SMTP server (

User name for the mail server

Password for the mail server

You can’t perform that action at this time.