Thank you for your interest in contributing to DevMentorAI! 🎉 This guide will help you get started.
- Code of Conduct
- Getting Started
- Development Setup
- Project Structure
- Making Changes
- Commit Conventions
- Pull Request Process
- Reporting Bugs
- Requesting Features
This project follows a Code of Conduct. By participating, you agree to uphold a welcoming and inclusive environment.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/<your-username>/devmentorai.git cd devmentorai
- Add upstream remote:
git remote add upstream https://github.com/BOTOOM/devmentorai.git
- Create a branch for your changes:
git checkout -b feat/my-feature
- Node.js 20+
- pnpm 9+
- GitHub Copilot CLI installed and authenticated
- Chrome/Chromium browser
# Install dependencies
pnpm install
# Start backend (Terminal 1)
pnpm dev:backend
# Start extension with hot reload (Terminal 2)
pnpm dev# Build everything
pnpm build
# Run all tests
pnpm test
# Run backend unit tests only
pnpm test:unit
# Run E2E tests
pnpm test:e2e
# Lint
pnpm lint
# Type check
pnpm typecheckdevmentorai/
├── apps/
│ ├── extension/ # WXT Chrome Extension (React + Tailwind)
│ └── backend/ # Node.js Backend (Fastify + SQLite)
├── packages/
│ └── shared/ # Shared types & contracts
├── tests/
│ └── e2e/ # Playwright E2E tests
└── docs/ # Architecture documentation
For detailed architecture information, see docs/ARCHITECTURE.md.
- Keep changes focused — one feature or fix per PR
- Write tests for new functionality when applicable
- Update documentation if your changes affect the public API or behavior
- Follow existing code style — the project uses TypeScript with ESLint
- Run checks before pushing:
pnpm lint && pnpm typecheck && pnpm test
We follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
| Type | Description |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation only changes |
style |
Code style changes (formatting, no logic change) |
refactor |
Code refactoring (no feature or fix) |
test |
Adding or updating tests |
chore |
Build process, dependencies, or tooling changes |
perf |
Performance improvements |
| Scope | Description |
|---|---|
extension |
Chrome extension (WXT) |
backend |
Node.js backend |
shared |
Shared packages |
e2e |
End-to-end tests |
docs |
Documentation |
feat(extension): add dark mode toggle to settings
fix(backend): resolve session timeout on idle connections
docs: update installation guide for Windows
test(backend): add unit tests for retry logic
- Update your branch with the latest upstream changes:
git fetch upstream git rebase upstream/main
- Push your branch to your fork:
git push origin feat/my-feature
- Open a Pull Request against
mainon the upstream repo - Fill out the PR template — describe what changed and why
- Wait for review — a maintainer will review your PR
- Address feedback — push additional commits if changes are requested
- Merge — once approved, a maintainer will merge your PR
- Code compiles without errors (
pnpm typecheck) - Linter passes (
pnpm lint) - Tests pass (
pnpm test) - New functionality has tests (if applicable)
- Documentation is updated (if applicable)
Use the Bug Report issue template. Please include:
- Steps to reproduce
- Expected vs actual behavior
- Browser and OS version
- Extension version
- Relevant logs or screenshots
Use the Feature Request issue template. Please include:
- Description of the feature
- Use case / problem it solves
- Any implementation ideas you have
If you have questions that aren't covered here, feel free to open a discussion on the repository.
Thank you for contributing! 💙