Contributing
Oxidean is MIT-licensed and developed in the open at oxidean/oxidean. Issues and pull requests are welcome on GitHub. Security reports follow SECURITY.md, not public issues.
The codebase
Section titled “The codebase”One repository, one product:
- Bun + Turborepo workspaces:
apps/web(Octane + Astro UI),packages/*(shared TS, generated API client) - Cargo workspace:
crates/*(API, domain types, DB layer, web tier, runner) deploy/: self-host compose bundle, Helm chart, CI imagesdocs/: architecture, API, configuration, testing, versioning
Conventions worth knowing
Section titled “Conventions worth knowing”- Commits and PR titles follow
type(optional-scope): subject(feat,fix,docs,chore,test,ci, …), enforced by acommit-msghook and CIcommit-lint. The scope is optional — omit it on multi-component commits so changed paths attribute each component. Subjects drive per-component SemVer bumps and changelogs; see VERSIONING.md. - The web UI is Octane (
.tsrx), not React. Component conventions live inAGENTS.mdand the repo’s skills. - Generated code (like the TS RPC client) is never hand-edited; change the source and regenerate.
- No AI/tool attribution trailers on commits or PRs.
Start here
Section titled “Start here”- CONTRIBUTING.md: workflow and review expectations
- docs/DEVELOPMENT.md:
toolchain setup (
bun,cargo,protoc, Docker Compose) - docs/TESTING.md: the CI gates a PR must pass