Skip to content
PortoPorto

Contributing

Reports from marinas and boatyards, fixes, translations, drivers and documentation are welcome. The full rules are in CONTRIBUTING.md.

  1. Read AGENTS.md, the specification and the ADRs.
  2. Open an issue before a non-trivial change. The open decisions are not decided in code.
  3. Vulnerabilities: never in a public issue, write to security@coste360.it (SECURITY.md).
  • API first: change api/openapi.yaml, run make gen, then implement. Never edit generated files.
  • Migrations for SQLite and PostgreSQL with the same number; a migration already on main is never changed.
  • Invariants always true and checked by tests (Invariants).
  • UI only with shadcn/ui components and theme tokens; every string is an i18n key (Italian source, English required).
  • Privacy: never emails, phone numbers, documents, tokens or secrets in logs.
  • Dependencies licensed MIT, BSD, Apache-2.0, ISC or MPL-2.0 (OFL-1.1 for fonts only): make licenses.
  • Code, identifiers and comments in English; issues and pull requests in Italian or English.
  • Small and on one topic, with tests, Conventional Commits messages.
  • A line in CHANGELOG.md for user-visible changes.
  • make check always; make check-full for changes to occupancy, pricing, charges, payments, migrations or the public flow.

This site lives in docs-site/ (Astro Starlight). Pages are in src/content/docs/ (Italian) and src/content/docs/en/ (English) with the same paths. make docs-dev runs the site with live reload; make docs-build also checks every internal link.

Contributions are distributed under the project licence (BSL 1.1, then AGPL-3.0). Contributing gives no right to resell Porto or offer it as a service to third parties. The Porto name and brand files are not covered by the code licence and are not changed in pull requests. See Licence.

byCoste360.itCoste360.it

Porto is developed by Coste360 SRL. Source available under the BSL 1.1; the Porto trademark is not covered by the licence.