Um espaço para profissionais compartilharem experiências de trabalho sem se revelar, ajudando outras pessoas a decidirem se vale a pena entrar em determinada empresa.
Criar uma plataforma onde profissionais possam:
- avaliar empresas de forma anônima/pseudônima
- compartilhar experiências sobre rotina, cultura, gestão e processo seletivo
- reduzir “furadas” e ajudar na tomada de decisão de carreira
- Anonimato com responsabilidade: o usuário é pseudônimo publicamente.
- Credibilidade: contas precisam confirmar e-mail para publicar.
- Segurança / anti-doxxing: proibir dados pessoais e nomes de indivíduos.
- Moderação: denúncias e ocultação de reviews.
Usuário
- Criar conta / login
- Confirmar e-mail (obrigatório para publicar)
- Perfil simples (apelido)
Empresas
- Lista de empresas
- Página da empresa com reviews e métricas agregadas
Reviews
- Criar review (com campos estruturados)
- Editar por 15 minutos
- Denunciar review
Admin
- Painel admin (listagem de denúncias)
- Ocultar review
- comentários
- respostas da empresa
- likes/dislikes
- upload de anexos
- “postar sem login”
- Publicamente: apelido (ex.:
Dev_8321) - Privadamente: e-mail para autenticação e recuperação de conta
- Badges:
- ✅
Conta verificada(e-mail confirmado) - 🔒
Vínculo verificado(pós-MVP)
- ✅
É proibido:
- citar nomes de pessoas (chefes, RH, colegas, gestores)
- expor dados pessoais (telefone, e-mail, CPF, endereço)
- fazer acusações criminais sem evidências
- publicar segredos internos, dados de clientes, ou documentos privados
Reviews podem criticar:
- processos
- cultura
- gestão
- carga de trabalho
- benefícios
- salário (somente em faixas)
- Frontend: Next.js (App Router) + Tailwind + shadcn/ui
- Backend: API Routes (Next) ou serviço separado
- DB: PostgreSQL
- ORM: Prisma
- Auth: NextAuth (Auth.js) / Clerk
- Deploy: Vercel
- DB host: Neon / Supabase
- id (uuid)
- handle (apelido)
- verifiedEmail (bool)
- role (
USER|ADMIN) - createdAt
- id
- name
- slug
- city
- state
- createdAt
- id
- companyId
- userId
- roleArea (frontend/back/etc)
- seniority (jr/pl/sr)
- contractType (clt/pj/estagio)
- workMode (remoto/hibrido/presencial)
- year (ex.: 2024)
- ratingOverall (1–5)
- pros
- cons
- hidden (bool)
- createdAt
- id
- reviewId
- reporterUserId
- reason
- createdAt
- resolvedAt
GET /api/companiesGET /api/companies/:id
POST /api/reviewsGET /api/companies/:id/reviewsPATCH /api/reviews/:id(editar — até 15 min)DELETE /api/reviews/:id(admin oculta)
POST /api/reportsGET /api/admin/reports
Semana 1
- Setup repo + deploy
- Prisma + migrations
- Auth + perfil
- CRUD companies/reviews
Semana 2
- denúncias + painel admin
- anti-spam (rate limit)
- filtro anti-doxxing
- seed de empresas iniciais
Antes de começar, você precisa ter instalado:
# Clone o repositório (URL fornecida pelo administrador)
git clone <url-do-repositorio>
cd devreviewnpm installIsso vai instalar todas as bibliotecas e ferramentas necessárias que estão listadas no package.json.
Crie um arquivo .env na raiz do projeto (copie do .env.example):
cp .env.example .envEdite o arquivo .env e adicione suas credenciais:
DATABASE_URL="postgresql://user:password@localhost:5432/devreview"
NEXTAUTH_SECRET="seu-secret-aqui"
NEXTAUTH_URL="http://localhost:3000"🔐 Importante: Nunca commite o arquivo .env! Ele já está no .gitignore.
# Gera o Prisma Client (necessário após clonar ou mudar o schema)
npx prisma generate
# Roda as migrations para criar as tabelas
npx prisma migrate dev
# (Opcional) Popula o banco com dados de exemplo
npx tsx prisma/seed.tsnpm run devAcesse http://localhost:3000 no seu navegador 🎉
npm run dev # Inicia o servidor de desenvolvimento
npm run build # Cria a versão de produção
npm run start # Inicia o servidor de produção
npm run lint # Verifica erros de código
npm run format # Formata todo o código com Prettier
npm run format:check # Verifica se o código está formatadonpx prisma studio # Abre interface visual do banco
npx prisma migrate dev # Cria nova migration
npx prisma generate # Gera o Prisma Client
npx prisma db push # Sincroniza schema sem criar migrationQuando abrir o projeto no VS Code, ele vai sugerir instalar:
- Prettier - Formatação automática de código
- ESLint - Verificação de erros
- EditorConfig - Configurações do editor
- Prisma - Syntax highlighting para schema
main- Branch protegida, apenas código revisado e aprovadodevelopment- Branch de desenvolvimento, onde o time trabalha
git checkout development
git pull origin developmentgit checkout -b feature/nome-da-feature
# Exemplos:
# git checkout -b feature/login-page
# git checkout -b feature/company-card
# git checkout -b fix/bug-review-formTrabalhe normalmente no código. Use commits pequenos e descritivos:
git add .
git commit -m "feat: adiciona formulário de login"
git commit -m "fix: corrige validação de email"
git commit -m "style: ajusta espaçamento do header"Convenção de commits:
feat:- Nova funcionalidadefix:- Correção de bugstyle:- Mudanças de estilo (CSS, formatação)refactor:- Refatoração de códigodocs:- Mudanças na documentaçãotest:- Adiciona ou corrige testeschore:- Tarefas diversas (configs, deps)
git push -u origin feature/nome-da-feature- Acesse a aba "Pull Requests" no GitHub
- Clique em "New Pull Request"
- Selecione:
development←feature/nome-da-feature - Descreva o que foi feito
- Solicite revisão de um colega
Após alguém revisar e aprovar, clique em "Merge" no GitHub.
# Volte para development
git checkout development
git pull
# Delete a branch local
git branch -d feature/nome-da-featureA branch main está protegida. Mudanças só entram via Pull Request.
Se alguém fez mudanças na development enquanto você trabalhava:
# Na sua branch de feature
git checkout feature/sua-feature
git pull origin development
# Resolva conflitos se houver
git push# Ver branches locais
git branch
# Ver branches remotas
git branch -r
# Ver status dos arquivos
git status
# Ver histórico de commits
git log --oneline
# Desfazer mudanças não commitadas
git checkout -- arquivo.ts
# Desfazer último commit (mantém as mudanças)
git reset --soft HEAD~1devreview/
├── app/ # Next.js App Router (rotas)
│ ├── (auth)/ # Rotas de autenticação
│ ├── companies/ # Páginas de empresas
│ ├── reviews/ # Páginas de reviews
│ ├── admin/ # Painel administrativo
│ ├── api/ # API Routes
│ ├── globals.css # Estilos globais
│ ├── layout.tsx # Layout principal
│ └── page.tsx # Página inicial
├── components/ # Componentes React
│ ├── ui/ # Componentes base (shadcn/ui)
│ ├── features/ # Componentes de funcionalidades
│ └── layout/ # Componentes de layout
├── hooks/ # Custom React Hooks
├── types/ # TypeScript types
├── utils/ # Funções utilitárias
├── lib/ # Bibliotecas e configs
│ ├── services/ # Camada de serviço
│ ├── validations/ # Schemas de validação
│ └── prisma.ts # Cliente Prisma
├── prisma/ # Banco de dados
│ ├── schema.prisma # Schema do banco
│ ├── migrations/ # Histórico de migrations
│ └── seed.ts # Dados iniciais
├── docs/ # Documentação
│ ├── DESIGN_SYSTEM.md # Design system
│ └── FRONTEND_STRUCTURE.md # Estrutura do frontend
├── public/ # Arquivos estáticos
├── .vscode/ # Configurações do VS Code
├── .env # Variáveis de ambiente (não commitar!)
├── .env.example # Exemplo de variáveis
├── package.json # Dependências e scripts
└── README.md # Este arquivo
📖 Documentação completa da estrutura: Ver docs/FRONTEND_STRUCTURE.md
Solução:
npx prisma generateSolução: Reinicie o TypeScript Server no VS Code:
Ctrl + Shift + P- Digite "TypeScript: Restart TS Server"
Solução:
- Faça backup das suas mudanças
- Atualize a branch:
git pull origin development - Resolva os conflitos nos arquivos marcados
git add .egit commit
- Abra uma Issue no repositório
- Pergunte no grupo do time
Projeto de uso interno sem licença pública definida.