Developing Porto
Porto is a monorepo: Go server, React web apps, end-to-end tests, documentation and specification. The specification (in Italian) is authoritative; architectural decisions are in the ADRs.
Prerequisites: Go 1.27+, Node.js 22+, npm, Docker (for PostgreSQL tests and the compose stack), make. Or the
included devcontainer.
git clone https://github.com/coste360/porto.git && cd portomake setup # Go modules, golangci-lint in ./bin, web and e2e dependenciesmake seed # local database with the demo marina (tmp/data)make dev # backend on :8080 + Vite for the panel (:5173) and the public page (:5174)Commands
Section titled “Commands”The Makefile is the single interface for builds, tests and checks, for people and for CI.
| Command | What it does |
|---|---|
make gen |
Regenerates the Go server, TypeScript client and generated tables from api/openapi.yaml |
make lint |
golangci-lint, CSS, i18n key and contrast checks, ESLint, Prettier, tsc |
make test |
Go unit tests and Vitest (no Docker, no network) |
make test-db |
Integration tests on SQLite and on a temporary PostgreSQL |
make test-race |
Concurrency tests with -race on SQLite and PostgreSQL |
make e2e / make e2e-desktop |
Playwright on the real binary / on the desktop app |
make check |
gen-check + lint + test |
make check-full |
check + test-db + test-race + e2e + e2e-desktop |
make build |
Web apps and static bin/porto |
make licenses |
Dependency licence check |
make docs-dev / make docs-build |
This documentation site |
Layout
Section titled “Layout”cmd/porto/ CLI and servercmd/porto-desktop/ desktop app launcherinternal/domain/ domain logic, one package per area (no HTTP, no SQL)internal/store/ database access (Bun), the only place with SQLinternal/http/ thin handlers, code generated from OpenAPI, SSE, static filesinternal/migrations/ sqlite/ and postgres/, same numberingpkg/ext/ public extension interfacesapi/openapi.yaml API contract, the single source of truthweb/ admin/, booking/, shared/ (npm workspaces)e2e/ Playwright testsdocs-site/ this site (Astro Starlight)Continue with Architecture, Invariants and Contributing.
Development with coding agents
Section titled “Development with coding agents”The repository contains AGENTS.md, CLAUDE.md and the .claude/ folder (rules, procedures and reviewers) for
people developing with coding agents. It concerns development only: the product has no artificial intelligence
features and calls no AI service.
Porto is developed by Coste360 SRL. Source available under the BSL 1.1; the Porto trademark is not covered by the licence.