PrimoDev/ apps

ReviewifyEm construção

Revisor de pull requests com IA, self-hosted e com curadoria humana

  • Web
  • Self-hosted
  • Docker
  • Grátis
  • Open source · MIT
Ver no GitHub

O que é o Reviewify?

O Reviewify é um painel self-hosted de revisão de pull requests com IA: você usa sua própria chave de modelo, gera a revisão com um clique e decide o que vai pro PR. Cada comentário pode ser aceito, editado, rejeitado ou refeito antes de chegar no GitHub.

Licença MIT. Roda com docker compose up --build depois de registrar um GitHub App e preencher o .env, e tem config pronta pra deploy no Railway.

O que ele faz

  1. 01Revisão completa do diff com um clique
  2. 02Aceitar, editar, rejeitar ou refazer cada comentário antes de postar
  3. 03Só comentários aprovados vão pro GitHub
  4. 04Chave própria de OpenRouter, Anthropic ou OpenAI
  5. 05Chaves de modelo guardadas com criptografia AES-256-GCM
  6. 06ADRs, regras da casa e padrões de código como entrada da revisão
  7. 07Inbox com os PRs atribuídos a você, sozinho ou em time
  8. 08Worker em segundo plano pra revisões assíncronas

Perguntas frequentes

Como instalo o Reviewify?
Registra um GitHub App com permissão de leitura e escrita em pull requests, copia o .env.example pra .env, gera ENCRYPTION_KEY e SESSION_SECRET e roda docker compose up --build. Depois entra com o GitHub em localhost:3000 e adiciona sua chave em Settings.
Com quais plataformas e modelos funciona?
Hoje só GitHub; GitLab está no roadmap. Os modelos vêm de uma chave OpenRouter (Claude, GPT, Kimi, Minimax e outros) ou direto da Anthropic ou da OpenAI.
Qual é a licença?
MIT.
Qual a diferença pra outros revisores de PR com IA?
Nada é postado automaticamente: a IA propõe e uma pessoa aprova cada comentário. E roda na sua infraestrutura, então diffs e chaves não saem dela.
O projeto está pronto?
É um MVP inicial. O fluxo manual (login, inbox, revisão, curadoria, postagem) está montado de ponta a ponta, e a fase 1 do roadmap ainda está em andamento.

Documentação

README do repositório lucianodiisouza/reviewify, atualizado a cada deploy. O texto original é em inglês.

CI

AI reviews your pull requests. You keep the pen.

Reviewify is a self-hosted PR-review dashboard. Bring your own model key, get a full AI review in one click, then curate every comment — accept, edit, reject, or redo — before a single word reaches the PR. Run it solo or invite a team; the operator decides.

  • 🔑 Bring your own model — one OpenRouter key unlocks Claude, Kimi, Minimax, GPT and dozens more, on your quota.
  • ✋ Curate before posting — the AI proposes, a human approves. Nothing is posted to GitHub until you say so.
  • 🏠 Open & self-hostable — your diffs and keys never leave your infrastructure.
  • 📐 Standards as config — ADRs, house rules, and coding standards are first-class inputs the model actually applies.

Status: early MVP. The manual review loop (sign in → inbox → review → curate → post) is scaffolded end to end. See the roadmap.

How it works

Propose  →  Curate  →  Post
  │           │          │
  AI review   accept /   only approved
  on the      edit /     comments go
  diff        reject     to GitHub

Stack

Next.js (App Router) · PostgreSQL + Prisma · a polling worker for async reviews. Everything comes up with one docker compose up.

Quick start (self-host)

1. Register a GitHub App at https://github.com/settings/apps/new for your org or account:

  • Permissions: Pull requests (read & write), Contents (read), Metadata (read)
  • Subscribe to the Pull request webhook event
  • Callback URL: ${APP_URL}/api/auth/callback
  • Setup URL: ${APP_URL}/api/github/setup (enable "Redirect on update")
  • Webhook URL: ${APP_URL}/api/webhooks/github

2. Configure secrets:

cp .env.example .env
# generate the two secrets
openssl rand -base64 32   # -> ENCRYPTION_KEY
openssl rand -base64 32   # -> SESSION_SECRET
# then paste your GitHub App's id, client id/secret, webhook secret & private key

3. Bring it up:

docker compose up --build

Open http://localhost:3000, sign in with GitHub, install the App on your repos, and add your OpenRouter key in Settings.

Deploy to Railway

Reviewify ships with a railway.json that builds from the Dockerfile and runs migrations on boot.

  1. Create a project and add a Postgres database (Railway → New → Postgres).
  2. Deploy this repo as a service; set variables:
    • DATABASE_URL → reference the Postgres plugin (${{Postgres.DATABASE_URL}})
    • ENCRYPTION_KEY, SESSION_SECRET → openssl rand -base64 32 each
    • APP_URL → your service's public URL (e.g. https://reviewify.up.railway.app)
    • GITHUB_* → from your GitHub App (paste the PEM into GITHUB_APP_PRIVATE_KEY)
  3. Add a second service from the same repo for the worker. Both services share one image; the start command dispatches on SERVICE_ROLE, so just set SERVICE_ROLE=worker on the worker service (plus the same DATABASE_URL, ENCRYPTION_KEY, and GITHUB_* variables). Leave it unset on the web service.

Point your GitHub App's callback, setup, and webhook URLs at APP_URL.

Local development

npm install
# start Postgres however you like, then point DATABASE_URL at it
npm run db:migrate       # create the schema
npm run dev              # web app on :3000
npm run worker:dev       # background review worker (separate terminal)

Run the checks CI runs:

npm run lint
npm run build
npm test                 # Vitest unit tests (diff parser, crypto)

Project layout

prisma/schema.prisma        the 8-table data model
src/lib/env.ts              validated config
src/lib/crypto.ts           AES-256-GCM for stored model keys
src/lib/providers/          OpenRouter client + the JSON findings contract
src/lib/vcs/                platform-agnostic VCS seam + GitHub impl
src/lib/review/             prompt builder + run orchestration
src/app/api/                auth, webhooks, review/finding actions
src/app/{inbox,pr,settings} the review UI
worker/                     polls for pending runs and executes them

Roadmap

  • Phase 1 — the self-hosted loop (MVP, in progress): GitHub sign-in, assigned-PR inbox, one-click review, inline curation, team rules, post to GitHub.
  • Phase 2 — depth & breadth: repo-level context beyond the diff, native Anthropic prompt caching, per-team model policy, outbound notifications.
  • Phase 3 — autopilot (gated): optional auto-review + auto-post on assignment; GitLab support.

Contributing

Issues and PRs welcome — see CONTRIBUTING.md.

License

MIT