Files
beardrive/CONTRIBUTING.md
T
Snow LeeandClaude Fable 5 00eee2c5ed feat(gtm): round 1 — truth pass, positioning unification, community on-ramp, demo assets
GTM reviewer round 1 (baseline: positioning 6, funnel 4, open-paid 8,
community 3, launch 3, metrics 2; 3 blockers + 3 majors, all repo-fixable):

- TRUTH: removed the false 'no server required' claim (x3 on the
  website) and stale 'S3/GCS directly' sync claims in both plugin
  manifests — hub-only since v0.3.0
- POSITIONING: one line everywhere ('the open-source Google Drive for
  AI agents' + the attribution/read-analytics wedge) across README,
  website, marketplace.json, plugin.json, SKILL.md; third 'Why' card
  and AGPL-why rationale; nav CTA → Star on GitHub
- COMMUNITY: CONTRIBUTING.md, issue forms + PR template, public dated
  ROADMAP.md, CHANGELOG.md seeded from all 8 releases
- DEMO ASSETS: real product screenshots captured from the seeded demo
  hub (Insights treemap, browse-with-heat, public share page) embedded
  in README + website — no fabricated content anywhere
- DOCS: self-hosting quickstart, metrics plan (north star: active
  shared brains), launch-plan drafts (Show HN/PH/launch week), and
  docs/gtm-handoff.md — the prioritized external-action checklist

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P5cxPQdSGJnjXCYY9GeWXt
2026-07-15 11:56:14 -07:00

2.6 KiB

Contributing to BearDrive

Thanks for wanting to help. BearDrive is early (pre-1.0) and moving fast — small, focused PRs land quickest, and an issue or discussion before a big change saves everyone time.

Build & test

go build ./...        # everything, no CGO, no Node needed
go vet ./...
go test ./...         # full suite
go test ./internal/syncer -run TestConflict -v   # one test

Set BDRIVE_HOME=/some/tmp/dir when testing the CLI by hand so you never touch your real ~/.bdrive.

Run a local hub

go build -o bdrive ./cmd/bdrive
mkdir -p /tmp/hub-storage
./bdrive web /tmp/hub-storage --addr :8080 --upload   # plain-folder viewer

For hub mode with accounts, see the self-hosting guide (docs/self-hosting.md). The e2e test harness (BDRIVE_E2E_SERVE=1 go test -run TestE2EServe ./internal/webapp) starts a seeded hub on :8993 with test accounts — handy for frontend work.

The rules that matter here

  • Sync changes need multi-device tests. The real coverage lives in internal/syncer/syncer_test.go: simulated devices syncing through a shared remote, driven cycle by cycle. A new sync behavior without a multi-device test is untested where it matters.
  • Never break sync. Errors degrade to offline and retry next cycle; a cycle must not fail because a side feature (telemetry, hooks) did. Read the invariants section in CLAUDE.md before touching internal/syncer, internal/journal, or internal/store — replay determinism and journal ownership are the whole concurrency story.
  • Frontend changes rebuild the committed assets. The web UI lives in internal/webapp/frontend (React + TS, Vite); its build output is committed at internal/webapp/static so go build needs no Node. After changing frontend/src: npm run build, commit the new static/, and keep npm run e2e green. frontend/check-dist.sh verifies freshness.
  • Docs travel with behavior. Changing CLI commands, flags, or output means updating both README.md and plugin/skills/beardrive/SKILL.md — the skill is what makes agents beardrive-aware and must match the binary.

Where to start

ROADMAP.md marks items we'd love help with, and issues labeled good first issue / help wanted are curated to be approachable. Bug reports with a reproduction (the issue form asks for bdrive version, OS, and hub vs plain-folder mode) are gold.

Conduct

Be kind, be direct, assume good intent. Maintainers reserve the right to moderate. Security issues: email snow@runbear.io rather than opening a public issue.