- Go 76.2%
- CSS 10.5%
- Vue 7.7%
- Just 2.3%
- PLpgSQL 1.8%
- Other 1.5%
| backend | ||
| frontend | ||
| .env.example | ||
| .gitignore | ||
| .mise.toml | ||
| docker-compose.yml | ||
| justfile | ||
| README.md | ||
Dozingo
A bingo game for university lectures.
Repository Structure
This is a monorepo containing both the backend and frontend:
dozingo/
├── backend/ ← Go API server (see backend/README.md)
├── frontend/ ← Web frontend (see frontend/README.md)
├── justfile ← Project-wide commands + submodule imports
└── docker-compose.yml ← Shared infrastructure (PostgreSQL)
Prerequisites
Install these two things manually. Everything else is handled by mise (a tool version manager), Docker, and package managers.
| Tool | What it's for | Install |
|---|---|---|
| mise | Manages all dev tools (Go, just, sqlc, golang-migrate, linter) | brew install mise or see docs |
| Docker (with Compose) | Runs PostgreSQL locally | brew install docker or see docs |
How it works: Tool versions are pinned in
.mise.tomlat the project root. Runningmise install(orjust setup) installs exactly the right versions of Go, just, sqlc, golang-migrate, and golangci-lint. No more "works on my machine" issues.
Activating mise (one-time)
After installing mise, you need to activate it in your shell so that tools are available automatically. Run one of these depending on your shell, then restart your terminal:
# bash
echo 'eval "$(mise activate bash)"' >> ~/.bashrc
# zsh
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
# fish
echo 'mise activate fish | source' >> ~/.config/fish/config.fish
Verify everything works:
mise --version # any recent version
docker --version # any recent version
Getting Started
# 1. Clone the project
git clone https://github.com/officeryoda/dozingo.git
cd dozingo
# 2. Install all tools (Go, just, sqlc, etc.)
mise install
# 3. Run first-time setup (infra, migrations, codegen, deps)
just setup
# 4. Start the backend server
just backend run
The API server runs at http://localhost:4242
API docs are at http://localhost:4242/docs
Available Commands
Run just (with no arguments) to see top-level commands.
Run just --list --list-submodules to see all commands including submodules.
Root commands (infrastructure)
just setup # First-time setup (tools, infra, backend setup)
just tools # Install/update project tools via mise
just infra-up # Start postgres
just infra-down # Stop postgres
just infra-reset # Wipe database and restart from scratch
just db-shell # Open a psql shell to the local database
Backend commands (just backend <command>)
just backend run # Start the Go server
just backend test # Run all tests
just backend lint # Run linter
just backend migrate-up # Apply pending migrations
just backend migrate-down # Roll back the last migration
just backend migrate-create # Create a new migration file
just backend generate # Regenerate Go code from SQL
just backend seed # Seed database with sample data
just backend setup # Backend-specific setup (env, migrations, codegen)
Frontend commands (just frontend <command>)
just frontend run # Serve the frontend locally
just frontend build # Build for production
just frontend test # Run tests