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:
- Multi-stage builds
- Local build cache volumes
- The buildx integration for BuildKit
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.