Extensão Chrome para sincronizar soluções aceitas no BeeCrowd com um repositório GitHub, com autenticação OAuth e API de suporte em Node.js.
O projeto é dividido em dois módulos:
- Front-end: extensão Chrome (React + Vite) com telas de onboarding, login, seleção de repositório e envio de solução.
- Back-end: API em Express + Prisma para autenticação com GitHub, listagem de repositórios, criação/atualização de arquivos e estatísticas.
- Login com GitHub via OAuth
- Seleção do repositório alvo
- Captura de solução aceita no BeeCrowd via content script
- Commit de arquivo no GitHub em
Beecrowd/<nome-do-problema>.<ext> - Estatísticas semanais de submissões salvas
- Front-end: React, Vite, React Router, Chart.js
- Back-end: Node.js, Express, Prisma, Octokit, JWT
- Banco de dados: PostgreSQL
BeeCrowd-Sync/
├─ Front-end/ # Extensão Chrome (popup/options, background e content script)
└─ Back-end/ # API, autenticação GitHub e persistência com Prisma
- Node.js 18+ e npm
- PostgreSQL
- App OAuth do GitHub configurado
- Google Chrome (modo desenvolvedor para carregar extensão)
- Acesse a pasta:
cd Back-end - Instale as dependências:
npm ci
- Crie um arquivo
.envcom as variáveis:DATABASE_URLGITHUB_CLIENT_IDGITHUB_CLIENT_SECRETJWT_SECRETPORT(opcional, padrão:3000)STATS_RETENTION_DAYS(opcional, padrão:90)
- Rode as migrations:
npx prisma migrate deploy
- Inicie o servidor:
node src/server.js
- Acesse a pasta:
cd Front-end - Instale as dependências:
npm ci
- Gere o build:
npm run build
- No Chrome, abra
chrome://extensions, ative Modo do desenvolvedor e clique em Carregar sem compactação. - Selecione a pasta:
Front-end/dist
Observação: o front e o background usam
http://localhost:3000para acessar a API.
npm testAtualmente o script de teste padrão não possui testes implementados.
npm run dev
npm run build
npm run preview- Abrir a extensão
- Fazer login com GitHub
- Selecionar repositório
- Abrir uma submissão aceita no BeeCrowd
- Clicar em SynK the solution! para enviar ao GitHub