This page documents the contribution process for the Memos project, including code quality standards, testing requirements, PR workflow, and community interaction. It covers the practical mechanics of contributing code, reporting issues, and maintaining quality standards.
Memos is an open-source, self-hosted note-taking app built for quick capture README.md7-19 Contributions of all kinds are welcome, including bug reports, feature suggestions, pull requests, documentation, and translations README.md58-66
| Type | Description | Entry Point |
|---|---|---|
| Bug Reports | Report reproducible behavior that is broken in current code | .github/ISSUE_TEMPLATE/bug_report.yml1-3 |
| Feature Requests | Propose a product improvement with a clear use case | .github/ISSUE_TEMPLATE/feature_request.yml1-3 |
| Pull Requests | Submit code changes (fixes, features, refactoring) | GitHub Pull Requests |
| Documentation | Improve wiki pages or the documentation site | usememos.com/docs() |
| Discussions | Ask questions, setup help, or configuration troubleshooting | GitHub Discussions() |
Sources: README.md58-66 .github/ISSUE_TEMPLATE/bug_report.yml1-3 .github/ISSUE_TEMPLATE/feature_request.yml1-3 .github/ISSUE_TEMPLATE/config.yml1-9
The standard contribution workflow follows GitHub's fork-and-pull model with specific quality requirements.
Sources: CODEOWNERS1-3 AGENTS.md15-23 README.md58-66
All contributions must pass automated quality gates. The project enforces strict linting, formatting, and testing standards.
The backend is built with Go 1.26.2 using the Echo v5 framework and Connect RPC AGENTS.md10
errors.Wrap(err, "context") from github.com/pkg/errors; do not use fmt.Errorf AGENTS.md91status.Errorf(codes.X, "message") AGENTS.md92github.com/usememos/memos AGENTS.md93godot enforces punctuation AGENTS.md94The frontend uses React 19, TypeScript 6, Vite 8, and Tailwind CSS v4 AGENTS.md11
web/src/hooks/; UI-only state in contexts or component state AGENTS.md101cn() for class merging, and CVA for variants AGENTS.md102@/ for absolute imports AGENTS.md99LATEST.sql updates for all drivers AGENTS.md108.proto files in proto/api/v1/ and run buf generate AGENTS.md19Sources: AGENTS.md10-13 AGENTS.md89-112
Before submitting a PR, ensure:
go test ./... AGENTS.md31golangci-lint run AGENTS.md37pnpm lint && pnpm test AGENTS.md43-44server/router/api/v1/acl_config.go AGENTS.md21| Task | Command |
|---|---|
| Backend Dev | go run ./cmd/memos --port 8081 AGENTS.md30 |
| Backend Tests | go test -v -race ./server/... AGENTS.md33 |
| Frontend Dev | cd web && pnpm dev AGENTS.md42 |
| Frontend Build | cd web && pnpm release AGENTS.md46 |
| Proto Gen | cd proto && buf generate AGENTS.md49 |
Sources: AGENTS.md28-52 AGENTS.md79-87
For significant features or "Superpowers," contributors should document the architecture in docs/plans/ or docs/superpowers/. This allows the community to review the design before implementation.
This diagram maps natural language requirements to specific code entities within the Memos architecture.
Sources: AGENTS.md54-75 AGENTS.md106-112
@usememos/moderators team reviews all contributions CODEOWNERS1-3main branch, or the demo site before reporting .github/ISSUE_TEMPLATE/bug_report.yml24Sources: CODEOWNERS1-3 .github/ISSUE_TEMPLATE/config.yml1-9 AGENTS.md15-23 README.md20
Refresh this wiki
This wiki was recently refreshed. Please wait 6 days to refresh again.