Getting Started
This page takes you from a fresh clone to a running backend and frontend, both
with hot reload. Local development is driven entirely by the root Makefile.
Prerequisites
Section titled “Prerequisites”- Docker + Compose: used to run PostgreSQL (with pgvector), Mailpit, and
a local TEI embedding service.
docker-composeorpodman-composeboth work. - Go 1.25.x: the
MakefilepinsGOTOOLCHAIN=go1.25.12, so Go downloads and uses that exact toolchain on demand even if your system Go is newer. - Node.js >= 22.22.0 for the frontend (its
enginesfield requires>=22.22.0). pre-commit— required; commits are gated on it. Install withpipx install pre-commitorbrew install pre-commit.- air — for backend hot reload. Install with
go install github.com/air-verse/air@latest.
Clone the repository
Section titled “Clone the repository”git clone https://github.com/vibexp/vibexp.gitcd vibexpInstall the pre-commit hooks
Section titled “Install the pre-commit hooks”Do this once per clone, before your first commit. The hooks run the same checks CI runs.
pre-commit installRun the backend
Section titled “Run the backend”make backend-run-devThis target:
- starts PostgreSQL, Mailpit, and a local embeddings service
(HuggingFace TEI serving
mxbai-embed-large-v1, 1024 dimensions) via Compose, - starts the API under air for hot reload on any
.gochange.
The local email inbox (Mailpit) UI is at http://localhost:8025, the
embeddings service health check is at http://localhost:8000/health
(port configurable via TEI_PORT; the first start downloads the model,
roughly 670 MB), and the API serves on http://localhost:8080 (health
check at http://localhost:8080/health).
Run the frontend
Section titled “Run the frontend”In a second terminal:
make frontend-run-devThis copies frontend/.env from .env.example if missing, installs
dependencies if node_modules is absent, and starts the Vite dev server at
http://localhost:5173.
Dev-login bypass (no identity provider needed locally)
Section titled “Dev-login bypass (no identity provider needed locally)”You do not need an identity provider to develop locally. The dev defaults
enable a dev-login bypass (auth.dev_login_enabled in config.yaml, honored
only in local development), so you can sign in and click around immediately. A
real provider (Google, GitHub, or generic OIDC) is only required for real
deployments — see the self-hosting docs for production auth configuration.
Common checks
Section titled “Common checks”Run these before committing (CI runs the same targets):
# Backendmake backend-test # go test -race ./...make backend-lint # golangci-lintmake backend-check # lint + vulncheck + security scan
# Frontendmake frontend-test # vitestmake frontend-lint # eslintmake frontend-type-check # tscWhere to go next
Section titled “Where to go next”- Contribution Workflow — branch, commit, and PR conventions.
- Code Conventions — the spec-first model and the regeneration commands.