Skip to main content

Providing a unified (well-documented) API to the Scouts' national membership system, Compass.

Project description

Compass Interface — the unofficial Compass API

Python Versions Status PyPI Latest Release Conda Latest Release License Code style: black

The Compass Interface project aims to provide a unified and well-documented API to the Scouts' national membership system, Compass.

Notice

This is not an official API to Compass and as such should be used in a way that doesn't cause a high request load on the Compass system.

Please also remember your personal data handling obligations (under both GDPR and Scouting policies) whilst using this system.

Objectives

The project aims to:

  • increase flexibility and simplicity when developing applications that interface with Compass data,
  • provide stability and abstract complexities of Compass, and
  • enable greater support to our adult volunteers and members.

Where to get it

The source code for the project is hosted on GitHub at the-scouts/compass-interface

The project can be installed through either pip or conda.

# conda
conda env update
conda activate compass-interface

If installing dependencies with pip, use a virtual environment to isolate your packages.

# or PyPI

# create venv
python -m venv venv

# activate venv - windows
.\venv\Scripts\activate
# activate venv - unix-like (macOS, linux)
source env/bin/activate 

# install dependencies
python -m pip install -r requirements.txt 

Dependencies

  • compass - Core Compass Interface, with parsing and validation logic
  • pandas - for data management and transformation
  • numba - to speed things up
  • pyarrow - to process and move data fast
  • FastAPI - for an intuitive API
  • uvicorn - serving on the lightning-fast ASGI server

Dev-dependencies

We use black, isort, ipython and others to speed up the development process!

Licence

Compass Interface is naturally open source and is licensed under the MIT license.

Usage

Running the API

To run the API either run uvicorn compass.api.app:app --reload in the root directory, or run the app.py file in the /compass/api/ directory. This second method also enables interactive debugging.

Alternatively, use Docker

Running the Compass Interface files directly

To run the Compass Interface files directly the top-level script.py file is useful for getting started immediately. Please make sure not to commit credentials to git, as these are assumed public as soon as they are on GitHub.

Docker

To run Compass Interface locally, we provide docker templates in /docker.

! Note: All commands below are run in the /docker directory.

Local hosting / development

To start docker, run docker-compose -f docker-compose.yml up -d.
To rebuild the Compass Interface backend, run docker-compose build backend.
To access an interative shell, run docker run -it backend bash.
To stop docker, run docker-compose down.

Deployment

To start docker, run docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d.
To stop docker, run docker-compose down.

Ports

When the containers are running, the FastAPI app is reached at localhost:8888 and Redis UI is available at localhost:8001.

If you are running the deployment configuration, you will also find the Traefik reverse proxy at localhost:80 and Traefik's dashboard at localhost:8080.

Support

For support please contact Adam Turner (@AA-Turner). There is a wider community of interest on the UK Scouts IT Lab group.

Ideas, Bugs, Features

Please use GitHub issues / Pull Requests to note bugs or feature requests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

compass-interface-0.22.7.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

compass_interface-0.22.7-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file compass-interface-0.22.7.tar.gz.

File metadata

  • Download URL: compass-interface-0.22.7.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for compass-interface-0.22.7.tar.gz
Algorithm Hash digest
SHA256 d42c0e46325451993f4c83d980bc122c33ee3282238349e51068e2022010a32a
MD5 3b2074129e77a63747f4a431ea2ce2f8
BLAKE2b-256 153d2c3121e0441b3eee4c77f53d16e5b48c8ced2aa090146e9e4bda02ef6d41

See more details on using hashes here.

File details

Details for the file compass_interface-0.22.7-py3-none-any.whl.

File metadata

  • Download URL: compass_interface-0.22.7-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for compass_interface-0.22.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7bbe18bf8e847f41094801a6e5703c778e005f1e705a1644ad0cd35fa56b3620
MD5 338e9856b81e53e2d3550f9ac5d8381b
BLAKE2b-256 4ca84adb0cc38c65cbf14a44c927af645cc73e5339d3c1c6c3465ba2f614995d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page