Development

Working with Miniflux’s code base is pretty simple:

Requirements

Checkout the Source Code

Fork the project and clone the repository locally.

Since Go 1.11, you don’t need to work inside the $GOPATH. You can checkout the source code anywhere on your filesystem.

Miniflux is using 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.13

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-armv8

# 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

# 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 executes go generate and go run main.go.

Regenerate Embedded Files

To avoid any dependencies, all assets (Javascript, CSS, images, translations) are automatically included in the source code.

make generate

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”.

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 three different architectures for Docker containers: amd64, arm32v6, and arm64v8. There is one image for each architecture and a manifest.

Here an example to build your own image:

make docker-images DOCKER_IMAGE=your-namespace/miniflux

To override the build version:

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

To create the manifest and push the images:

make docker-manifest DOCKER_IMAGE=your-namespace/miniflux