Thanks for your interest in contributing! This guide covers the workflow and conventions used in this project.
- Fork the repository
- Clone your fork locally
- Copy
.env.exampleto.envand configure for your environment - Install dependencies:
npm install - Start the dev server:
npm run dev
Use a prefix that describes the type of change:
feature/— new functionality (e.g.feature/conversation-tags)fix/— bug fixes (e.g.fix/pagination-off-by-one)
- Use the imperative mood ("Add feature" not "Added feature")
- Keep the first line under 72 characters
- Reference issue numbers when applicable (e.g.
Fix search crash on empty query (#42))
- Include a clear description of what changed and why
- Test locally before opening a PR (Docker build or
npm run dev) - Keep PRs focused — one feature or fix per PR
- Plain JavaScript (CommonJS
require/module.exports) — no TypeScript - Express + EJS for server-rendered views
- Tailwind CSS via CDN for utility classes — no local CSS build step
- EJS templates use
_header.ejsand_footer.ejspartials for shared layout - No build tooling required — the app runs directly with
node server.js
Before submitting a PR, verify the server syntax is valid:
node --check server.js
node --check src/routes/api.js
node --check src/routes/pages.js
node --check src/services/conversations.jsAnd test the Docker build:
docker compose up -d --build
curl http://localhost:8502/api/health