Thanks for your interest in improving Mindwtr. This guide covers:
- Before you begin
- Code contribution process
- Development setup and workflow
- Testing and quality checks
- Pull request guidelines
- Documentation and translation contributions
Mindwtr is a Bun monorepo with:
- Desktop app (
apps/desktop): Tauri + React + Vite - Mobile app (
apps/mobile): Expo + React Native - Shared core package (
packages/core): state models, storage adapters, and shared logic
- Read and follow the Code of Conduct.
- Be respectful in issues, discussions, reviews, and commits.
- Do not open public issues for security vulnerabilities.
- Use SECURITY.md for responsible disclosure instructions.
For behavior changes, significant bug fixes, or new features, open (or confirm) an issue first. This helps avoid duplicated work and keeps changes aligned with project goals.
When opening an issue, include:
- Platform and version (
desktop,mobile, or both) - Reproduction steps and expected behavior
- Actual behavior
- Screenshots, screen recordings, and logs when relevant
Mindwtr focuses on GTD and practical execution. Contributions are most likely to be accepted when they:
- Keep workflows simple by default
- Avoid unnecessary UI complexity
- Preserve data safety and reliability
- Work consistently across platforms when applicable
- Find an issue to work on, or open one for discussion.
- Fork the repository and create a branch in your fork.
- Implement the change with focused scope.
- Run relevant checks locally.
- Open a pull request to
dongdongbh/Mindwtr:main. - Link the issue in the PR (example:
Fixes #123).
Branch naming examples:
fix/tray-preference-persistencefeature/date-format-settingdocs/contributing-update
Run all commands from the repository root.
- Bun (workspace/package manager)
- Git
- Rust toolchain (required for Tauri desktop build/dev)
- System webview dependencies for Tauri on your OS
- Expo tooling for mobile development
- Android SDK and/or Xcode if building mobile natively
bun installDesktop (Tauri):
bun desktop:devDesktop UI only (browser/Vite):
bun desktop:webMobile (Expo):
bun mobile:startMobile on device/emulator:
bun mobile:android
bun mobile:iosapps/desktop/src: desktop UI and desktop integrationsapps/mobile: mobile UI and native bridge codepackages/core/src: shared business logic, store, sync, and utilitiesscripts/: release and utility scriptsdocs/: markdown docs used by the project
Run checks relevant to your change.
Desktop lint:
bun run --filter mindwtr lintDesktop tests (single pass, non-watch):
bun run --filter mindwtr test -- --runCore tests:
bun run --filter @mindwtr/core testMobile tests:
bun run --filter mobile testOptional e2e:
bun run test:e2e- TypeScript first.
- Prefer functional React components and hooks.
- Keep imports grouped: external, workspace/internal, then relative.
- Match file-local formatting conventions:
- desktop/core usually 4 spaces
- mobile usually 2 spaces
- Keep code comments concise and only where logic is non-obvious.
- Favor accessibility-oriented test queries (
getByRole,getByLabelText).
Naming:
- Components/providers:
PascalCase - Hooks:
useSomething - Utility modules: kebab-case (example:
storage-adapter.ts) - Tests: mirror source filename with
.test.ts/.test.tsx
All submissions go through GitHub pull requests and maintainer review.
Please keep PRs small and focused:
- One bug fix, one feature, or one isolated refactor per PR
- Avoid bundling unrelated changes
Before opening a PR:
- Ensure relevant checks pass locally
- Rebase/merge your branch as needed to resolve conflicts
- Verify no unrelated files are included
In your PR description, include:
- What changed
- Why it changed
- Linked issue (
Fixes #...) - Test evidence (commands run and outcomes)
- Screenshots/recordings for UI changes
- Platform impact (
desktop,mobile,core, or combinations)
Commit style:
- Use Conventional Commits when possible
- Examples:
fix(desktop): persist tray preference on macOSfeat(core): add date format normalizationdocs: clarify sync troubleshooting
Documentation updates are welcome in docs/, README.md, and README_zh.md.
When changing docs:
- Keep instructions accurate and runnable
- Prefer concrete examples over vague guidance
- Validate links
- Update both English and Chinese docs when the content is mirrored
Useful references:
Most translation strings live in:
When updating translations:
- Keep placeholders and interpolation keys unchanged
- Keep command tokens intact where parser behavior depends on English commands
- Confirm UI still fits in small mobile layouts
If you are unsure about scope or implementation details:
- Open a GitHub issue with a short proposal
- Join community chat on Discord: https://discord.gg/ahhFxuDBb4
- Ask for maintainer feedback before implementing large changes
Thanks again for contributing to Mindwtr.