Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Development Tools

Git

SparkleMuffin uses Git to track source code changes. The code is available on GitHub at github.com/virtualtam/sparklemuffin.

To start using Git and GitHub:

Go

SparkleMuffin is written mainly in the Go programming language.

See go.mod for the minimum Go version that SparkleMuffin needs.

Linux

Install Go with your Linux distribution’s package manager.

macOS

Install Go with the Homebrew community packages:

$ brew install go

Windows

Install Go with winget:

$ winget install --id=GoLang.Go

Manual installation (advanced users)

To install a specific version of Go, see:

Node.js

SparkleMuffin uses the Node.js runtime to build its frontend assets.

Install the current Long-Term Support (LTS) version of Node.js.

Linux

Install Node.js with your Linux distribution’s package manager.

macOS

Install Node.js with the Homebrew community packages:

$ brew install node

Windows

Install Node.js with winget:

$ winget install --id=OpenJS.NodeJS

Docker

SparkleMuffin uses Docker to:

  • Package the application as easy-to-run Docker images;
  • Run database integration tests with Testcontainers;
  • Spin a local development environment with Docker Compose

Building Docker images locally needs a recent version of Docker. Local builds use:

Python and uv

SparkleMuffin uses SQLFluff to lint and format SQL migration files. SQLFluff is a Python tool, managed with uv.

See internal/repository/pyproject.toml for the pinned SQLFluff version.

Linux and macOS

Install uv with the standalone installer:

$ curl -LsSf https://astral.sh/uv/install.sh | sh

Windows

Install uv with winget:

$ winget install --id=astral-sh.uv

GNU Make

A Makefile provides targets to run tests and linters, generate documentation, and start local development environments.

lychee

SparkleMuffin uses lychee to check the generated HTML documentation for broken links.

mdBook

SparkleMuffin uses mdBook to generate a static HTML documentation from Markdown files.

Watchexec

SparkleMuffin uses watchexec to live-reload the development server when source files change on disk.