Thank you for your interest in contributing to Resume Ecosystem! This guide will help you get started.
- Code of Conduct
- Getting Started
- Development Setup
- Branch Naming
- Commit Messages
- Pull Request Workflow
- Running Tests
- Adding a New Service
- Need Help?
By participating in this project, you agree to maintain a respectful, inclusive, and harassment-free environment for everyone. Be kind, constructive, and collaborative.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/<your-username>/resume-ecosystem-node.git cd resume-ecosystem-node
- Add the upstream remote:
git remote add upstream https://github.com/srivilliamsai/resume-ecosystem-node.git
- Create a branch for your work (see Branch Naming):
git checkout -b feat/my-new-feature
- Node.js ≥ 20
- Docker & Docker Compose
- npm (comes with Node.js)
npm installnpm run docker:upThis starts PostgreSQL, Kafka, Zookeeper, and Redis via Docker Compose.
npm run prisma:generatenpm run migratenpm run seednpm run devThis starts all 8 microservices concurrently using nodemon for hot-reloading.
Copy .env.example to .env and fill in any required values:
cp .env.example .env
⚠️ Security: Never commit real secrets. Use the providednpm run generate-secretsscript to generate secure JWT secrets.
Use the following prefixes:
| Prefix | Purpose | Example |
|---|---|---|
feat/ |
New feature | feat/oauth-linkedin |
fix/ |
Bug fix | fix/jwt-expiry-handling |
docs/ |
Documentation only | docs/update-api-endpoints |
refactor/ |
Code restructuring (no behavior change) | refactor/extract-kafka-utils |
test/ |
Adding or fixing tests | test/auth-service-unit-tests |
chore/ |
Tooling, CI, dependencies | chore/upgrade-prisma-6 |
perf/ |
Performance improvement | perf/redis-cache-optimization |
We follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation changes |
style |
Formatting, whitespace (no logic changes) |
refactor |
Code change that neither fixes a bug nor adds a feature |
test |
Adding or correcting tests |
chore |
Build process, CI, or tooling changes |
perf |
Performance improvement |
ci |
CI/CD configuration changes |
Use the service name as the scope: auth, activity, verification, resume, notification, integration, file, gateway, common-lib, docker, ci.
feat(notification): add WebSocket broadcast for resume published events
fix(auth): handle expired JWT tokens gracefully
docs(readme): update API endpoints table
test(activity): add Jaccard deduplication edge cases
chore(docker): add Jaeger and Prometheus to docker-compose
Append ! after the type/scope and include a BREAKING CHANGE: footer:
feat(auth)!: switch from HS256 to RS256 JWT signing
BREAKING CHANGE: All existing JWT tokens will be invalid after this change.
Clients must re-authenticate.
-
Sync with upstream before starting:
git fetch upstream git rebase upstream/main
-
Make your changes on your feature branch.
-
Run linting and tests before pushing:
npm run test -
Push your branch to your fork:
git push origin feat/my-feature
-
Open a Pull Request against
mainon the upstream repo. -
Fill in the PR template — describe what changed and why.
-
Respond to review feedback by pushing additional commits.
-
Once approved, a maintainer will squash and merge your PR.
- Code follows the existing style and patterns
- Self-reviewed my own code
- Added/updated tests as appropriate
- Updated documentation (README, JSDoc, etc.) if needed
- No new TypeScript errors (
npx tsc --noEmit) - Commit messages follow Conventional Commits
# Run all tests
npm run test
# Run tests for a specific service
npm run test:auth
# Run with coverage
npm run test:coverage
# Run in CI mode (no watch)
npm run test:ciTests use a separate PostgreSQL database. Start it with:
npm run docker:test:upTear it down after:
npm run docker:test:down-
Create the directory:
mkdir -p services/my-service/src services/my-service/prisma
-
Copy the template from an existing service (e.g.,
notification-service):package.json— updatenameand dependenciestsconfig.json— extend../../tsconfig.base.jsonprisma/schema.prisma— define your modelssrc/index.ts— entrypointsrc/server.ts— Fastify server builder usingbuildServer()
-
Assign a port from the reserved range (4000–4070). Check existing assignments in
README.md. -
Add to
docker-compose.ymlif the service needs its own container. -
Add to the root
package.jsondev script (in theconcurrentlycommand). -
Add Kafka topics (if needed) to
common-lib/src/index.tsin theTopicsobject. -
Run
npm installfrom the repo root to register the new workspace.
- 💬 Open a GitHub Discussion
- 🐛 File a Bug Report
- 💡 Request a Feature
Thank you for contributing! 🎉