Files
Memoh/CONTRIBUTING.md
T
BBQ d6aebf654f feat(devenv): add containerized development environment (#116)
* feat(devenv): add containerized development environment

Replace local-process dev workflow with a fully containerized stack
using docker compose. This enables consistent development across
machines without requiring local Go/Node toolchains or containerd.

- Add Dockerfile.server.dev with containerd + CNI networking support
- Add Dockerfile.web.dev for frontend dev server
- Add server-dev-entrypoint.sh for containerd lifecycle management
- Expand devenv/docker-compose.yml with server, agent, web, migrate
  and deps services with proper health checks and dependency ordering
- Update app.dev.toml to use container service names instead of localhost
- Refactor mise.toml dev tasks to drive docker compose workflow
- Support agent_gateway.server_addr in config package for inter-container
  communication

* feat(devenv): add hot-reload and registry mirror support

- Add air for Go server hot-reload in dev containers
- Fix agent_gateway host in dev config (0.0.0.0 -> agent)
- Add configurable registry mirror for China mainland users
- Unify MCP image refs via MCPConfig.ImageRef()

* feat(scripts): add China mainland mirror option to install script

Prompt users to opt-in to memoh.cn mirror during installation,
which applies docker-compose.cn.yml overlay and sets registry
in config.toml for MCP image pulls.
2026-02-26 17:32:19 +08:00

2.1 KiB

Contributing Guide

Prerequisites

  • Docker (for containerized dev environment)
  • mise (task runner & toolchain manager)

Install mise

# macOS / Linux
curl https://mise.run | sh
# or
brew install mise

# Windows
winget install jdx.mise

Quick Start

mise install       # Install toolchains (Go, Node, Bun, pnpm, sqlc)
mise run setup     # Copy config + install deps
mise run dev       # Start full containerized dev environment

That's it. dev launches everything in Docker containers:

  1. PostgreSQL + Qdrant (infrastructure)
  2. Database migrations (auto-run on startup)
  3. Go server with containerd (hot-reload via go run)
  4. Agent Gateway (Bun, hot-reload)
  5. Web frontend (Vite, hot-reload)

Daily Development

mise run dev             # Start all services
mise run dev:down        # Stop all services
mise run dev:logs        # View logs
mise run dev:restart -- server  # Restart a specific service

More Commands

Command Description
mise run dev Start containerized dev environment
mise run dev:down Stop dev environment
mise run dev:logs View dev logs
mise run dev:restart Restart a service (e.g. -- server)
mise run setup Copy config + install deps
mise run db-up Run database migrations
mise run db-down Roll back database migrations
mise run swagger-generate Generate Swagger documentation
mise run sdk-generate Generate TypeScript SDK
mise run sqlc-generate Generate SQL code

Project Layout

conf/       — Configuration templates (app.example.toml, app.dev.toml, app.docker.toml)
devenv/     — Containerized development environment (docker-compose)
docker/     — Docker build & runtime (Dockerfiles, entrypoints)
cmd/        — Go application entry points
internal/   — Go backend core code
agent/      — Agent Gateway (Bun/Elysia)
packages/   — Frontend monorepo (web, ui, sdk, cli, config)
db/         — Database migrations and queries
scripts/    — Utility scripts