Froide is a Freedom Of Information Portal using Django 4.2+ on Python 3.12+.
It is used by the German and the Austrian FOI site, but it is fully internationalized and written in English.
Required system tools:
- Python 3.12+
- Node.js 22+
- Docker or compatible containerisation tool
- make
- uv
- pnpm
- pre-commit
Required system libraries:
After clone, create a Python virtual environment and install dependencies:
# create and activate virtual envornment uv venv source .venv/bin/activate # install dependencies uv pip sync requirements-test.txt # Install git pre-commit hook pre-commit install # build froide backend uv pip install -e . --no-deps # install frontend dependencies pnpm install # install UI test browser (optional) playwright install --with-deps chromium # build froide frontend pnpm run build # or run the frontend devserver pnpm run dev You can run your own Postgres+PostGIS database and Elasticsearch service or run them with Docker:
docker compose -f compose-dev.yaml up This will start Postgres and Elasticsearch and listen on port 5432 and 9200 respectively. You can adjust the port mapping in the compose-dev.yaml.
If you need to adjust settings, you can copy the froide/local_settings.py.example to froide/local_settings.py and edit it. More steps:
# To initialise the database: python manage.py migrate --skip-checks # Create a superuser python manage.py createsuperuser # Create and populate search index python manage.py search_index --create python manage.py search_index --populate # Run the Django development server python manage.py runserver Make sure the services are running.
# Run all tests make test # Run only unit/integration tests make testci # Run only end-to-end tests make testui For Python code, we use ruff for linting and formatting. JavaScript, Vue and SCSS files are formatted and linted with ESLint and Prettier.
Make sure to have pre-commit hooks registered (pre-commit install). For VSCode, we recommend some extensions
{ "eslint.format.enable": true, "eslint.packageManager": "pnpm", "vetur.format.defaultFormatter.css": "prettier", "vetur.format.defaultFormatter.html": "prettier", "vetur.format.defaultFormatter.js": "prettier-eslint" }make requirements Read the documentation including a Getting Started Guide.
Froide is supported by the Open Knowledge Foundation Germany and Open Knowledge Foundation International.
Froide is licensed under the MIT License.