Monorepo da plataforma de recrutamento e avaliação com dois módulos principais:
- backend: API FastAPI (autenticação, vagas, candidaturas, pipeline e serviços)
- frontend: SPA React + TypeScript (painéis, formulários, fluxos de usuário e integrações)
avalia-facil/
├── backend/ # API, modelos, migrações e regras de negócio
└── frontend/ # Interface web, componentes, páginas e cliente HTTP
- Python 3.11+
- FastAPI
- SQLAlchemy + Alembic
- PostgreSQL
- JWT
- React 18
- TypeScript
- Vite
- Tailwind CSS
- shadcn/ui
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtCrie um arquivo .env em backend/:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/vagafacil
SECRET_KEY=troque-esta-chave
DEBUG=True
USE_S3=FalseExecute migrações e inicie a API:
alembic upgrade head
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000Em outro terminal:
cd frontend
npm install
cp .env.example .env
npm run devAjuste no .env do frontend:
VITE_API_BASE_URL=http://localhost:8000/api/v1- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- Swagger: http://localhost:8000/docs
- Atualize sua branch com a
main - Crie branch de feature (
feature/nome-curto) - Implemente mudanças pequenas e coesas
- Rode lint/testes locais
- Abra PR com descrição objetiva
- Prefira mudanças pequenas e focadas
- Evite duplicação; extraia funções e componentes reutilizáveis
- Mantenha nomenclatura consistente entre backend e frontend
- Não misture refatoração ampla com correção de bug no mesmo PR
- Versione e documente endpoints em
/api/v1 - Mantenha schemas de request/response explícitos
- Trate erros de forma padronizada (status code + mensagem clara)
- Evite breaking changes sem plano de migração
- Nunca commitar
.env, secrets ou tokens - Use
SECRET_KEYforte em ambientes reais - Restrinja CORS em produção
- Valide dados de entrada tanto no frontend quanto no backend
- Frontend: rode
npm run lint - Backend: valide migrações antes de subir mudanças de banco
- Teste fluxos críticos (login, criação de vaga, candidatura)
- Atualize documentação ao alterar comportamento de negócio
- Toda alteração estrutural deve ter migração Alembic
- Não edite tabelas manualmente em produção sem migração
- Garanta compatibilidade retroativa quando possível
- Backend: backend/README.md
- Frontend: frontend/README.md
Para mudanças maiores (arquitetura, contrato de API, modelo de dados), alinhe antes via issue/discussão para reduzir retrabalho e risco de regressão.