Skip to content

Contributing

This page is for contributors preparing a change to OpenPost.

Start with the development setup, then run the smallest relevant root gates while working and bun run verify before a pull request.

Project rules

  • Use Conventional Commits. Release versions follow the commit impact described in Releases and Versioning.
  • Keep provider API behavior in backend/internal/platform/ and preserve the shared adapter contract.
  • Regenerate OpenAPI, TypeScript, CLI, and translation artifacts from their sources instead of editing generated files.
  • Preserve the static SvelteKit build embedded in the Go binary.
  • Add notable behavior, configuration, compatibility, migration, and operator changes to CHANGELOG.md under Unreleased. It is the canonical source for the public changelog and release notes.
  • Use the shared Shadcn-svelte form primitives in both the app and marketing site. bun run check -- ui-consistency rejects visible native form controls outside the shared implementations.
  • Never commit credentials, provider tokens, local dotenv files, or production data.

Repository-specific architecture and agent guidance live in AGENTS.md. The root contributor guide contains the short setup and pull-request checklist.

Public source and artifact contract

Marketing pages and maintained documentation are the canonical sources for public content. Their production builds invoke scripts/generate-agent-surfaces.mjs to add one explicit Markdown representation per eligible route, the host's llms.txt, and the documentation-only llms-full.txt. Generated public artifacts stay in ignored build output. Edit the owning page or catalogue instead of a generated file.

The marketing route manifest and generated documentation catalogue own route identity and policy. See production readiness for the complete artifact contract, CI behavior, and root verification commands.

Open source under AGPL-3.0-only.