Skip to content

7. Development

Markus Kuuse edited this page May 12, 2026 · 1 revision

Design Philosophy

Explo started as a simple personal Go script in 2023: fetch recommendations from ListenBrainz, find the tracks on Youtube, and create playlists in Navidrome (Subsonic). It was initially meant to be run as a single binary on a server. Its core goal has stayed the same, but many features have been developed to fit user requests.

Explo now fits into different environments. It can be run as a single binary or deployed via Docker, depending on user preference.

Explo is designed to be an set-and-forget solution. Once configured, it should run with minimal user intervention, continuously requesting music and creating playlists. Additional features may contain optional interaction, but automation remains the default.

Compatibility has been a priority from the start and also supports the set-and-forget design. Changes should be backward compatible whenever possible, with deprecation notices communicated before removing a feature.


Build from source

Prerequisites

  • Go >1.24.1
  • ffmpeg and yt-dlp installed and available in $PATH(or custom paths defined in .env)

To build Explo from source:

1. Clone the repository

Clone the repository and switch to the desired branch:

git clone https://github.com/LumePart/Explo.git
cd Explo
git checkout <branch name>

2. Set up environment

Copy the sample configuration and modify it (you can also refer to the Configuration Reference):

cp sample.env .env
nano .env

If testing functionality, set LISTENBRAINZ_DISCOVERY to api (downloads less songs)

3. Build

Build Explo with this command:

go build -o explo ./src/main

Clone this wiki locally