FSFE Community Database Backend
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Reinhard Müller f061512635 Properly format email addresses with special characters 4 days ago
bin Reset to correct email recipient after testing 6 days ago
config Extend documentation for command line tools 3 weeks ago
doc Don't write email address in clear text in doc 3 weeks ago
fsfe_cd_back Properly format email addresses with special characters 4 days ago
test Complete test routines to 100% coverage 2 months ago
.dockerignore Add documentation directory to .dockerignore 1 month ago
.drone.yml Load complete envidonment from .env 1 month ago
.env Remove unnecessary "export" from .env 2 months ago
.gitignore Add automatic pytest coverage HTML statistic 3 months ago
.isort.cfg Clean up isort config 2 months ago
Dockerfile Change aqbanking config routine 2 months ago
Dockerfile-quality Go back to system wide install for quality checks 1 month ago
LICENSE Update copyright headers 3 months ago
MANIFEST.in Fix installation of templates 1 year ago
Makefile Add documentation about hacking tools and conventions 1 month ago
Pipfile Update dependencies 3 weeks ago
Pipfile.lock Update dependencies 3 weeks ago
README.md Move API and commandline tools documentation to separate files 1 month ago
docker-compose-quality.yml Create a dedicated container for the quality check 1 month ago
docker-compose.yml Add some more files to .dockerignore 2 months ago
setup.py Clean up isort config 2 months ago


FSFE Community Database Backend

The backend for the FSFE Community Database, including a Python interface to the data, a resource server for the frontend, and some command line tools used for manual data maintenance


The FSFE Community Database is a combined tool for donation management, administration of accounts for FSFE’s services, and opt-in based distribution of information emails.

All relevant data for these purposes is stored in a PostgreSQL database on the one hand and FSFE’s LDAP server on the other hand. Access to that data is encapsulated by the FSFE Community Database Backend (fsfe-cd-back), which provides both a set of commandline tools for manual administration tasks, and a protected RESTful(ish) network API to be used by other components.

The FSFE Community Database Authentication Server (fsfe-cd-auth) is an OpenID Connect Provider running on https://id.fsfe.org which authenticates a user against the LDAP server and then issues an access token which provides access to the authenticated user’s (and only the authenticated user’s) data though fsfe-cd-back’s API.

Finally, the FSFE Community Database Frontend is a web application through which the people stored in the database can manage their own data at https://my.fsfe.org. It sends users to fsfe-cd-auth to log in and then uses the user-bound access token returned from there to access the user’s data through fsfe-cd-back.


This repository contains the FSFE Community Database Backend. It essentially consists of three parts:

  1. An Object-Relational Mapper (ORM) which turns database records into Python objects and adds all the methods necessary to perform the tasks the FSFE Community Database is built for. This layer is the core of the whole structure. It is built with SQLAlchemy and resides in fsfe_cd_back/data.

  2. A resource server with a REST-like API to allow data access for the other components of fsfe-cd. All its access to the actual data goes through the ORM. The resource server is implemented with Flask and can be found in fsfe_cd_back/server.

  3. A set of command line tools for manual administration tasks, most of which are only a thin wrapper around methods implemented in the ORM. They are collected in the bin directory.

Further reading

The directory doc contains more detailled documentation.