goship

module
v2.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2026 License: MIT

README

GoShip

Convention-first, Rails/Laravel-inspired Go framework for shipping production-ready web apps fast.

Last updated: 2026-03-25

Test

What GoShip Is

GoShip is a framework-first repository with one canonical runtime seam set and a batteries-included CLI.

  • convention-first project structure and generators (ship make:*, ship destroy)
  • server-first web stack (Go + Echo + Templ + HTMX)
  • installable modules for auth, profile, notifications, jobs, storage, billing, i18n, and more
  • standalone-first runtime with an explicit path to distributed/managed operation

Product Status

GoShip is in late alpha / beta-hardening mode.

  • The standalone path is credible today.
  • The release gate for a public beta label is explicit in docs/beta-readiness.md.
  • Managed/control-plane operation is contract-driven, but external authority logic stays out of this repo.

Start Here

Requirements:

  • Go
  • Make
  • Node.js (for frontend/e2e workflows)
  • Docker (optional for standard infra-backed mode)

Quick start:

cp .env.example .env

# fastest local loop (single binary)
make run

# canonical dev loop
make dev
# equivalent direct CLI command
go run ./tools/cli/ship/cmd/ship dev

Common commands:

  • make run: single-binary SQLite + Otter + Backlite runtime
  • make dev: canonical local dev wrapper (ship dev)
  • go run ./tools/cli/ship/cmd/ship dev: direct invocation of the canonical dev loop
  • make test: Docker-free unit package set
  • go run ./tools/cli/ship/cmd/ship test: canonical CLI test surface
  • make templ-gen: templ generation
  • go run ./tools/cli/ship/cmd/ship doctor: project health checks
  • go run ./tools/cli/ship/cmd/ship verify: runtime contract checks

Runtime Seams (Canonical)

Framework runtime ownership is explicit at repo root: container.go, router.go, schedules.go.

  • container.go: runtime container composition seam
  • router.go: HTTP route + middleware composition seam
  • schedules.go: recurring schedule registration seam

This keeps wiring deterministic for humans, generators, and LLM agents.

Default Path

GoShip must remain fully usable as standalone software.

  • Default path: single-binary, SQLite-first, no required control plane
  • Upgrade path: profile/adapter promotion to Postgres/Redis/worker separation
  • Managed path: external control plane consumes stable runtime contracts (reports, hooks, upgrade readiness), without becoming a runtime dependency

See docs/architecture/09-standalone-and-managed-mode.md.

Frontend Story

GoShip is server-first, with optional islands when interactivity needs client runtime support.

  • Templ + HTMX is the default and recommended path
  • Vite pipeline supports vanilla JS plus per-island React/Vue/Svelte mounts
  • Islands are explicit and route-local, not SPA-first by default

Blessed split-frontend contract:

  • contract id: api-only-same-origin-sveltekit-v1
  • supported custom frontend scope: SvelteKit-first
  • browser boundary: same-origin auth/session with cookie/CSRF preserved

See docs/guides/08-building-an-api.md and examples/sveltekit-api-only/README.md.

Repository Shape

GoShip is framework-first:

  • container.go, router.go, schedules.go: canonical runtime seams
  • framework/: reusable framework runtime contracts and implementations
  • modules/: installable capabilities
  • cmd/: runtime process entrypoints
  • tools/cli/ship/: canonical CLI product surface
  • docs/: architecture, guides, reference, roadmap, and release-gate docs

Documentation

Use these entry docs first:

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL