Development

Working with Miniflux’s code base is pretty simple:

Requirements

Checkout the Source Code

Fork the project and clone the repository locally.

Miniflux uses Go Modules to manage dependencies.

Compilation

Build the application for the actual platform:

make miniflux

To define a specific version number:

make miniflux VERSION=2.0.29

Cross compilation:

# Build all binaries for all supported platforms
make build

# Build Linux binary for amd64 architecture
make linux-amd64

# ARM 64 bits (arm64v8)
make linux-arm64

# ARM 32 bits variant 7 (arm32v7)
make linux-armv7

# ARM 32 bits variant 6 (arm32v6)
make linux-armv6

# ARM 32 bits variant 5 (arm32v5)
make linux-armv5

# Mac OS (amd64)
make darwin-amd64

# Mac OS (arm64 / Apple Silicon)
make darwin-arm64

# FreeBSD (amd64)
make freebsd-amd64

# OpenBSD (amd64)
make openbsd-amd64

# Windows (amd64)
make windows-amd64

Remove Precompiled Binaries

make clean

Run the Software Locally

make run

This command runs the software in debug mode. If needed, you can run a local Postgresql database with docker

Linter

make lint

Unit Tests

make test

Integration Tests

Integration tests are testing API endpoints with a real database.

You need to have Postgresql installed locally preconfigured with the user “postgres” and the password “postgres”. You can run a local Postgresql database with docker

To run integration tests, execute the following command:

make integration-test ; make clean-integration-test

If the test suite fail, you will see the logs of Miniflux.

Build Docker Image

Miniflux supports different architectures for Docker images: amd64, arm32v6, arm32v7 and arm64v8.

Here an example to build only the amd64 image:

make docker-image

Build all images and override the image name:

make docker-images DOCKER_IMAGE=your-namespace/miniflux

Override the build version:

make docker-images DOCKER_IMAGE=your-namespace/miniflux VERSION=42

Note that you need to enable Docker experimental features to build multi platform images. Miniflux uses buildx.

Build RPM package

You can build your own RPM package by using this command:

make rpm

Note that Docker is required to generate the RPM package. All build operations are running inside a container.

Build Debian package

You can build your own Debian package by using this command:

make debian

Use the following command to build packages for all supported architectures (amd64, arm64, and armhf):

make debian-packages

Note that Docker is required to generate the Debian packages. All build operations are running inside a container.

GitHub Codespaces

Miniflux development environment is preconfigured for GitHub Codespaces. It could be useful for small contributions.

Just click on “Create codespace” button in GitHub web ui to create a new development environment in the cloud. Once it’s ready, you can use Visual Studio Code to edit the source code.

Run local Postgresql database with docker

Based on postgres docker image

You can create a local Postgresql database, for tests, easily with the following command

docker run --rm --name local-miniflux2-db -p 5432:5432 -e POSTGRES_DB=miniflux2 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres postgres

Having persistent data

docker volume create local-miniflux2-data
docker run --rm --name local-miniflux2-db -p 5432:5432 -v local-miniflux2-data:/var/lib/postgresql/data -e POSTGRES_DB=miniflux2 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres postgres

Delete data

docker volume rm local-miniflux2-data