Thanks for considering a contribution to MeetOnMemory! Every contribution — bug fix, docs, UI, or new feature — helps.
- Contribution Workflow
- Issue First Policy
- Local Setup
- Development
- Validation
- Git Workflow
- Pull Requests
- CI/CD Pipeline
- Troubleshooting
- FAQ
- 🍴 Fork the repository.
- 📥 Clone your fork.
- 🔗 Add the upstream remote.
- 🔄 Sync with upstream
main. - 📌 Claim an issue (
/claim) and wait for assignment. - 🌿 Create a feature branch.
- 💻 Implement only the assigned issue.
- 🧪 Run local validation.
- 📦 Commit and push.
- 🔁 Open a Pull Request.
git clone https://github.com/YOUR_USERNAME/MeetOnMemory.git
cd MeetOnMemory
git remote add upstream https://github.com/imuniqueshiv/MeetOnMemory.git
git fetch upstream
git merge upstream/main- Search existing issues first.
- If one exists, comment
/claimand wait for assignment. - If none exists, open one and wait for maintainer approval before coding.
- To release an issue you can't finish, comment
/unclaim.
- Claim before starting work.
- Keep one PR scoped to one issue.
- Follow existing project structure.
- Test changes locally before pushing.
- Work on an unclaimed issue.
- Bundle unrelated changes in one PR.
- Rename project/branding/package names without explicit issue/maintainer approval.
- Submit unreviewed AI-generated code.
- Force-push after review without explanation.
npm installSet up environment variables (root .env — see .env.example if present).
cd client
npm installConfigure Clerk keys (NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, CLERK_SECRET_KEY) in client/.env.
npm run devcd server
npm installConfigure .env (MongoDB URI, Clerk secret key, JWT secret, SHARED_LINK_JWT_SECRET for shared-link tokens).
npm run server- Clerk is the sole authentication provider (frontend + backend session verification).
- MongoDB remains the source of truth for authorization (RBAC — roles/permissions).
- Secondary JWTs are used only for specific features (e.g. shared links, integration tokens) — not for primary auth.
- Legacy login/session-based auth flow has been fully removed; do not reintroduce it.
Frontend
- Functional components only.
- Small, reusable components.
- Follow existing folder structure.
Backend
- Keep controllers modular.
- Validate all request data.
- Handle errors consistently.
- Follow existing API structure.
General
- Meaningful variable names, no dead code.
- Avoid unnecessary complexity.
- One feature/bug per PR.
git commit -m "feat: add semantic search filters"
git commit -m "fix: resolve login validation issue"
git commit -m "docs: update README"
git commit -m "refactor: simplify meeting controller"Prefixes: feat, fix, docs, refactor, style, test, chore
Husky + lint-staged auto-run ESLint/Prettier on staged files at commit time; a failing check aborts the commit.
npm run lint
npm run build
npx prettier . --checknpm run format:check:changed --prefix client
npm run lint:changed --prefix client
npm run test:related --prefix client
npm run validate:pr --prefix clientFrontend build (required if client/** changed):
npm run build --prefix clientnpm run format:check:changed --prefix server
npm run lint:changed --prefix server
npm run test:related --prefix server
npm run validate:pr --prefix serverServer has no build step.
git diff --checknpm run format- Formatting passes
- Linting passes
- Build passes (if
client/**changed) - Related tests pass
-
git diff --checkclean - Branch synced with upstream
main
git checkout -b feature/your-feature-nameExamples:
git checkout -b feature/semantic-search
git checkout -b fix/login-validationCommon commands:
git fetch upstream
git merge upstream/main
git checkout -b feature/issue-name
git push -u origin feature/issue-name- Sync fork with upstream
main. - Create/confirm feature branch.
- Implement changes.
- Run local validation (root + client/server as applicable).
- Format code (
npm run format). - Commit and push.
- Open PR.
git add .
git commit -m "feat: improve semantic search"
git push origin feature/semantic-search- Linked issue (
Closes #...) - Issue was assigned before work started
- Screenshots included (for UI changes)
- Root validation passed (
lint,build,prettier . --check) - Client/server
format:check:changed,lint:changed,test:related,validate:prpassed (as applicable) - Frontend build passes (if
client/**changed) -
git diff --checkclean - Documentation updated (if required)
- No unnecessary files included
- No merge conflicts
- PR addresses exactly one issue
- Clean commit history
- Existing functionality not broken
GitHub Actions runs path-filtered checks on every PR — not all jobs run on every PR.
| Job | Trigger | Checks |
|---|---|---|
| Detect Changes | Always | Determines which downstream jobs run based on changed paths |
| Root Prettier | Always | Prettier check on changed root files |
| Frontend Validation | client/** changed |
ESLint (changed files), Prettier (changed files), production build (npm run build) |
| Server Validation | server/** changed |
ESLint (changed files), Prettier (changed files) |
Backend tests, frontend tests, integration tests, startup tests, security audits, CodeQL — these run in separate scheduled/post-merge workflows, not on PR checks.
Frontend Validation fails
cd client
npm run lint:changed
npm run format:check:changed
npm run buildServer Validation fails
cd server
npm run lint:changed
npm run format:check:changedRoot Prettier fails
npx prettier . --check
npm run formatBuild failures
- Reproduce locally with
npm run build --prefix client. - Check for missing env vars (Clerk keys) or type errors.
Formatting/Lint failures
- Run
npm run formatat root, or the changed-file variants above, before committing.
Q: Do I need to run backend/frontend tests before opening a PR?
Not required for CI (they don't run on PRs), but test:related is recommended to catch regressions early.
Q: My PR only touches server/, do I need to run client checks?
No — CI only runs Frontend Validation when client/** changes, and vice versa for Server Validation.
Q: How do I keep my branch up to date?
git fetch upstream
git merge upstream/mainQ: Where do I ask questions? Open a Discussion, open an Issue, or join Discord: https://discord.gg/c29cwdVMG
Include: steps to reproduce, expected behavior, actual behavior, screenshots (if applicable), browser/OS info.
Include: clear description, use case, expected benefit, possible implementation.
AI Search Improvements · Meeting Management · Policy Repository · Reports & Analytics · UI/UX · Accessibility · Documentation · Testing · Performance · Security · Mobile Responsiveness
Every PR is reviewed by maintainers. You may be asked to fix bugs, improve code quality, resolve comments, update docs, or re-test. Please be patient.
Be respectful, professional, and welcoming.
Thanks for contributing to MeetOnMemory! Happy coding! 🚀