Ways to Contribute
Report Bugs
Found a bug? Help us fix it by filing a detailed report.
Suggest Features
Have an idea? Share it with the community.
Submit Code
Fix bugs or implement features through pull requests.
Improve Docs
Help others by improving documentation.
Before You Start
Search existing issues
Check if your bug or feature request has already been reported:
Join the community
Connect with other contributors:
- Discord Server - Get help and discuss ideas
- GitHub Discussions - Longer-form conversations
Set up your development environment
Follow the development setup guide to configure your local environment.
Reporting Bugs
Good bug reports help us fix issues faster.What to Include
Bug Report Template
Bug Report Template
Suggesting Features
We welcome feature suggestions that align with Memos’ vision: privacy-first, self-hosted knowledge management.What Makes a Good Feature Request
Contributing Code
Development Workflow
Create a feature branch
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Test improvements
Code Style Guidelines
Go Backend
Error Handling
Error Handling
Use Return gRPC errors in services:
github.com/pkg/errors for wrapping:Naming Conventions
Naming Conventions
- Packages: lowercase, single word (
store,server,plugin) - Interfaces:
Driver,Store,Service - Methods: PascalCase for exported, camelCase for private
- Constants:
MixedCaps(notSCREAMING_SNAKE_CASE)
Comments
Comments
Imports
Imports
Group imports: stdlib, third-party, local:Use
goimports to format:TypeScript Frontend
Component Structure
Component Structure
Use functional components with hooks:
State Management
State Management
- Server state: React Query hooks
- Client state: React Context
- Component state:
useStatefor local UI state
Styling
Styling
Use Tailwind CSS classes:Use
clsx and tailwind-merge for conditional classes:Imports
Imports
Use absolute imports with Biome auto-organizes imports:
@/ alias:Commit Message Format
Follow Conventional Commits:feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style (formatting, no logic change)refactor: Code refactoringtest: Add or update testschore: Build process, dependencies
Pull Request Process
PR Checklist
Before submitting:- Code follows style guidelines
- Tests pass locally (
go test ./...andpnpm lint) - New tests added for new features
- Documentation updated (if needed)
- Commit messages follow conventions
- PR description explains changes clearly
PR Description Template
Review Process
- Automated checks: CI runs tests and linters
- Code review: Maintainers review your code
- Feedback: Address any requested changes
- Approval: Once approved, maintainers merge your PR
Testing Your Changes
See the Testing Guide for detailed testing instructions. Quick checklist:Documentation Contributions
Help improve Memos documentation:Translation Contributions
Help translate Memos into other languages:- Check existing translations:
web/src/locales/ - Copy
en.jsonand translate strings - Test the translation in the UI
- Submit a PR with your translation file
Getting Help
Stuck? Here’s where to get help:Discord
Real-time help from the community
GitHub Discussions
Ask questions and share ideas
Documentation
Browse the full documentation
Issue Tracker
Search existing issues and bugs
Code of Conduct
We are committed to providing a welcoming and inclusive community.Our Standards
- Be respectful: Treat everyone with respect and kindness
- Be constructive: Provide helpful feedback and suggestions
- Be patient: Remember everyone is learning
- Be inclusive: Welcome newcomers and diverse perspectives
Unacceptable Behavior
- Harassment, discrimination, or offensive comments
- Personal attacks or insults
- Spam or self-promotion
- Publishing others’ private information
Recognition
Contributors are recognized in:- GitHub contribution graph
- Release notes (for significant contributions)
- Contributors list in README
//for single-line,/* */for multi-line.