Contributing
Contributions to the Flow State platform are welcome. This page covers the basics of opening a pull request and — importantly — where the documentation lives.
Code
Branch from main, make your change, and before opening a PR run the full local check suite:
pnpm lint # next lint
pnpm typecheck # tsc --noEmit
pnpm test # vitest run
All three must pass. pnpm lint enforces no-unused-vars, so a stray import will fail the build. See Testing for the integration and end-to-end suites.
Run the checks before you push, not after CI flags them — pnpm typecheck catches issues pnpm lint doesn't, and vice versa.
Docs
The documentation you are reading lives in docs/ inside this platform repo, and that copy is the single source of truth.
A GitHub Action — .github/workflows/sync-docs.yml — mirrors the docs/** tree into the flow-state-coop/docs repository (the Docusaurus site published at docs.flowstate.network). On every merge to main that touches docs/**, the workflow rsyncs the tree across and opens a pull request on the docs repo, which Vercel builds a preview for and publishes on merge.
Edit docs in platform/docs/, never directly in the docs repo. Anything you change in flow-state-coop/docs will be overwritten by the next sync. The docs repo only holds the Docusaurus scaffolding (sidebars, config, theme); the markdown is generated from here.
The docs are a Docusaurus 3 site, so follow its conventions:
- Numbered-prefix filenames (e.g.
003-architecture.md) control sidebar order. - Each page starts with frontmatter — at minimum a
slug:and adescription:. - Use admonitions (
:::tip,:::info,:::warning, closed with:::) for callouts. - Cross-link sibling pages with relative
.mdlinks, e.g.[Architecture](003-architecture.md).