Backend que transforma descrições de vagas de emprego de TI em skills padronizadas (com suporte OpenAI) e fornece endpoints para gestão de usuários, verificação de compatibilidade entre perfis e carreiras em tempo real e envio de notificações por e-mail.
Principais recursos:
- Autenticação via JWT
- Gestão de perfis de usuários
- Modelagem de carreiras, habilidades, cursos, conhecimentos e vagas
- Extração/normalização automática de habilidades técnicas (OpenAI)
- Envio de e-mails transacionais (Resend)
- Migrações com Alembic e integração com PostgreSQL
- Tecnologias
- Instalação
- Configuração (variáveis de ambiente)
- Banco de dados e migrações (Alembic)
- Executando o servidor
- Estrutura do projeto
- Deploy
- Dicas e problemas comuns
- Licença
- Python (FastAPI, Pydantic)
- SQLAlchemy (ORM) e Alembic (migrações)
- JWT (autenticação)
- Resend (e-mail)
- OpenAI
- Crie e ative um ambiente virtual
No Windows (PowerShell):
python -m venv .venv
.venv\Scripts\Activate.ps1- Instale as dependências
pip install -r requirements.txtCrie um arquivo .env na pasta pfc_backend/ com as variáveis abaixo:
# Banco de dados
DB_HOST=host
DB_PORT=port
DB_NAME=banco
DB_USER=usuario
DB_PASSWORD=senha
# Autenticação/JWT
KEY_CRYPT=chave_secreta_aleatoria
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=60
# Resend
RESEND_API_KEY=chave_resend
EMAIL_FROM=email@dominio.com
# OpenAI
OPENAI_API_KEY=chave_openaiConfigure o Alembic
No arquivo alembic.ini, garanta que a chave sqlalchemy.url aponte para o mesmo banco especificado no .env.
Aplicar as migrações para criar/atualizar o schema:
alembic upgrade headObservação: O projeto já possui diversas revisões em alembic/versions/, incluindo seeds de normalização/categorias/habilidades. Ao rodar upgrade head, esses seeds serão aplicados conforme necessário.
Com o ambiente virtual ativo e dependências instaladas:
python -m uvicorn app.main:app --reloadAjuste CORS em app/main.py e outras configs em app/config.py.
pfc_backend/
app/
main.py # instancia FastAPI, CORS e inclui as rotas
config.py # JWT (algoritmo, chave, expiração) e OAuth2 schema
dependencies.py # engine, SessionLocal, Base e dependências (auth/admin)
models/ # modelos SQLAlchemy (tabelas e relacionamentos)
schemas/ # Pydantic schemas de entrada/saída
routes/ # rotas agrupadas (auth, usuario, carreira, curso, etc.)
services/ # regras de negócio (CRUDs e extras)
utils/
errors.py # utilitários de erro/validação
alembic/ # migrações de banco
requirements.txt # dependências Python
Procfile # comando para deploy (uvicorn)
O Procfile contém o comando de inicialização para plataformas compatíveis (ex.: Railway):
web: uvicorn app.main:app --host 0.0.0.0 --port $PORT --proxy-headers --forwarded-allow-ips="*"
Garanta que as variáveis de ambiente de produção estejam configuradas na plataforma de deploy.
- Erro de CORS: ajuste os domínios permitidos em
app/main.py. - Erro de conexão ao banco: verifique o
.enve oalembic.ini(especialmentesqlalchemy.url). - Seeds não aplicados: confirme que
alembic upgrade headrodou sem erros e que asqlalchemy.urlestá correta.
Este projeto é de uso interno.