YotoShelf
Self-Host

Build from Source

Clone the repository and run YotoShelf locally with hot reload.

Every command on this page is a section of the application repository's CONTRIBUTING.md, fetched when this site is built. If you would rather read it at the source, that file is the source.

Prerequisites

  • misemise.jdx.dev (curl https://mise.run | sh)
  • ffmpegbrew install ffmpeg (macOS) or apt install ffmpeg

All other tools (Go, Node, sqlc, golangci-lint) are pinned in .mise.toml and installed by mise install.

Clone and start

git clone --recurse-submodules https://gitlab.com/yotoshelf/yotoshelf.git
cd yotoshelf
mise install    # installs exact Go, Node, sqlc, golangci-lint versions
just dev        # starts backend + frontend, creates admin user

Note: --recurse-submodules is required — the frontend consumes frontend/design as a git submodule. If you already cloned without it, run git submodule update --init.

Login at http://localhost:4300 with admin@localhost / admin.

Warning: The default credentials above are dev-only and are seeded automatically by just dev. Never use them in production — use create-admin with a strong password instead.

Recipes

just dev is one of several. The repository's CONTRIBUTING.md documents what each one does, rendered on Dev Loop; just --list in your clone prints the full set the justfile defines. just dev-prod is the production-mode variant: one embedded binary, the same way the container image runs.

Seed fixtures

To populate a running instance with test content, use the sibling fixtures repo:

python3 fixtures/seed.py <url> admin@localhost admin

The seed script requires the dev-permissive origin (i.e. YOTOSHELF_PUBLIC_URL must not be set, or must match the URL you pass). Default: http://localhost:4300.

Building the container image

Container builds happen in GitLab CI on main. The Containerfile uses a three-stage build: Node (frontend) → Go (binary) → Alpine (runtime + ffmpeg).

The repository documents no local build command, so this page does not invent one. To run the image the pipeline publishes, see Quick Start.