Contributing

EVERJUST is a private business workspace built on a debranded open-source core, with its own apps on top. To contribute, match the code you're editing, keep user-facing text on-brand, and run the tests and the branding check before you ship. Docs are plain Markdown under control-plane/docs_content/ that renders at everjust.app/docs. This page covers both.

Code

  • Match the surrounding code. Naming, structure, and comment density should read like the file you're editing.
  • Keep apps in the addons path and license them compatibly with the core (LGPL-3).
  • Test before you ship. Run the test suite and the branding check (below).
  • Branding. This is a debranded platform. User-facing text says EVERJUST, never the name of the upstream framework. The branding check, deployment/scripts/branding_lint.sh, fails the build on leaks.

These docs

The documentation is plain Markdown, served by the control plane at everjust.app/docs. Source files live in control-plane/docs_content/; the sidebar, ordering, search, and on-page contents are derived automatically from that tree, so you only write the pages.

Preview and test from the control-plane/ directory:

cd control-plane
# main.py reads STRIPE_SECRET_KEY at import, so pass a dummy value to boot the preview:
STRIPE_SECRET_KEY=sk_test_dummy python3 -m uvicorn main:app --reload   # preview at http://127.0.0.1:8000/docs
python3 -m pytest tests/test_app.py -q                                 # docs render + links resolve (conftest sets the dummy env)

To add a page: drop a .md file under control-plane/docs_content/ and add its slug to SECTIONS in control-plane/docs_content.py so it shows up in the sidebar.

When your change edits page content, bump CONTENT_UPDATED in control-plane/seo.py. That date is the "last updated" stamp shown on every docs page and the <lastmod> in the sitemap, and the tests assert it. If you rename or remove a slug, add a DOCS_LEGACY_REDIRECTS entry in control-plane/main.py so the old URL 301s to the new one.

Write in the EVERJUST voice: plain words, concrete outcomes, second person, no buzzwords. Mirror the page anatomy of the existing app guides: intro, what you can do, configuration, related links.

Voice

  • Plain words, real things. Short declarative sentences.
  • Confidence without hype. No "seamless," "robust," "unlock."
  • Specific beats vague. Numbers and outcomes over adjectives.
  • Talk to one person ("you").
  • A little dry, never cute. No emoji.

Last reviewed: 2026-07-21

Need a hand with this? company@everjust.co — a human answers.