dis-frontend-dataset-controller
September 18, 2026 ยท View on GitHub
An application to serve dataset overview pages on the ONS website
Table of Contents
Getting Started
To get a local copy up and running, follow these simple steps.
Pre-requisites
Ensure you have the following installed:
- Python: Version specified in
.python-version. We recommend using pyenv for managing Python versions. - Poetry: This is used to manage package dependencies and virtual environments.
- Docker
- Operating System: Ubuntu/macOS
Installation
-
Clone the repository and install the required dependencies.
git clone https://github.com/ONSdigital/dis-frontend-dataset-controller.git -
Install dependencies
Poetry is used to manage dependencies in this project. For more information, read the Poetry documentation.
To install all dependencies, including development dependencies, run:
make install-devInstall the Git hooks used for local validation:
make install-pre-commitTo install only production dependencies, run:
make install -
Run the application
make run
Development
Get started with development by running the following commands.
Before proceeding, make sure you have the development dependencies installed using the make install-dev command.
A Makefile is provided to simplify common development tasks. To view all available commands, run:
make
Run Tests with Coverage
The unit tests are written using the pytest framework. To run the tests and check coverage, run:
make test
Linting and Formatting
Various tools are used to lint and format the code in this project.
Python
The project uses Ruff and pylint for linting and formatting of the Python code.
The tools are configured using the pyproject.toml file.
To lint the Python code, run:
make lint
To auto-format the Python code, and correct fixable linting issues, run:
make format
To run the configured pre-commit hooks across the repository, run:
make pre-commit
MegaLinter (Lint/Format non-python files)
MegaLinter is utilised to lint the non-python files in the project. It offers a single interface to execute a suite of linters for multiple languages and formats, ensuring adherence to best practices and maintaining consistency across the repository without the need to install each linter individually.
MegaLinter examines various file types and tools, including GitHub Actions, Shell scripts, Dockerfile, etc. It is
configured using the .mega-linter.yml file.
To run MegaLinter, ensure you have Docker installed on your system.
Note
- If you use Colima for Docker on macOS, run
colima start --editand setmountType: virtiofsin the profile YAML so that bind mounts work correctly withmake megalint. - The initial run may take some time while the Docker image is downloaded. Subsequent runs will be considerably faster due to Docker caching. ๐
To start the linter and automatically rectify fixable issues, run:
make megalint
To run only a specific linter, pass LINTER variable:
make megalint LINTER=YAML_YAMLLINT
This maps to MegaLinter's ENABLE_LINTERS environment variable. See the
supported linters list for valid names.
Contributing
See CONTRIBUTING.md for details.
License
Copyright ยฉ 2026 Crown Copyright (Office for National Statistics)
Unless stated otherwise, the codebase is released under the MIT License. This covers both the codebase and any sample code in the documentation.
The documentation in this repo are released under the Open Government Licence v3.0.