PeerHub is an open-source platform for developer-to-developer feedback. Users sign in with GitHub, leave structured peer reviews, watch other developers, and track review activity in a personalized feed.
- GitHub OAuth authentication - sign in with your GitHub account
- Structured peer reviews - comment, approve, or request changes
- Anonymous reviews - optionally leave feedback anonymously
- Reviewer profiles - summaries and profile-based timelines
- Watchlist & activity feed - follow developers and track review activity
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Material UI 7, Vite, Vitest |
| Backend | Python 3.13, FastAPI, Beanie/Motor (MongoDB), Pydantic |
| Auth | GitHub OAuth via fastapi-sso, JWT tokens |
| CI | GitHub Actions (lint + type check + tests for both frontend/backend) |
- Python 3.13+
- uv
- Node.js 22+
- npm 10+
- Docker (only for container-based backend and integration tests)
git clone https://github.com/peerhub-org/peerhub.git
cd peerhub
cp backend/.env.example backend/.env.development
cp frontend/.env.example frontend/.env.developmentEdit backend/.env.development and fill in the required values (SECRET_KEY, MONGO_URI, MONGO_DB, GitHub OAuth credentials).
cd backend
uv sync --dev
uv run fastapi dev app/main.pyOr with Docker:
cd backend
docker compose up --buildcd frontend
npm ci
npm run devThe frontend runs at http://localhost:5173 and proxies API calls to /api/v1/. Set VITE_BACKEND_API_URL in frontend/.env.development to override.
Backend:
cd backend
uv run ruff check app tests
uv run mypy
uv run pytestFrontend:
cd frontend
npm run lint
npm run test:runContributions are welcome! Please read CONTRIBUTING.md before getting started.
For security vulnerabilities, do not open a public issue. See SECURITY.md for responsible disclosure instructions.
This project follows Semantic Versioning. The current version is defined in VERSION. See CHANGELOG.md for release history.
Licensed under the GNU Affero General Public License v3.0.