O Ginga é uma plataforma open source desenvolvida para conectar talentos de tecnologia a oportunidades de mercado. O projeto divide-se em dois módulos principais:
- GingaPort: Focado no profissional, permitindo a criação de portfólios técnicos robustos com integração à API do GitHub.
- GingaVagas: Focado em empresas, permitindo a publicação de vagas com transparência salarial e requisitos técnicos categorizados por tags.
O projeto utiliza um stack moderno focado em performance e produtividade:
- Linguagem: Python 3.12+.
- Framework Web: Django 6.0+.
- Gestão de Pacotes: UV (substituto rápido para o pip).
- Banco de Dados: PostgreSQL.
- CSS: Tailwind CSS (via CDN no template base).
- Linting/Formatting: Ruff.
- Containerização: Docker e Docker Compose.
- Ter o UV instalado em sua máquina.
- PostgreSQL instalado ou Docker para rodar o banco de dados.
git clone <url-do-seu-repositorio>
cd ginga-web
Copie o arquivo de exemplo e ajuste os valores necessários (como credenciais do banco):
cp .env.example .env
Certifique-se de que o DATABASE_URL no .env aponta para sua instância local do Postgres.
O UV gerencia o ambiente virtual automaticamente:
uv sync
uv run manage.py migrate
Carregue as tecnologias para o sistema de autocomplete de vagas e competências:
uv run python manage.py load_techsEste comando é idempotente - pode ser executado múltiplas vezes sem criar duplicatas. Ele popula o banco com 100 tecnologias categorizadas (linguagens, frameworks, bancos de dados, DevOps, etc.) para uso no autocomplete.
Para desenvolvimento e testes, você pode popular o banco com dados fictícios:
uv run python manage.py seed_test_dataEste comando cria:
- 5 Recrutadores com 1-3 empresas cada (total: 9 empresas)
- 10 vagas por empresa (9 ativas + 1 inativa)
- 20 Candidatos (7 excelentes, 8 medianos, 5 incompletos)
- Candidaturas aleatórias (3-7 por candidato com perfil)
Credenciais de teste:
- Senha padrão:
ginga@2024 - Recrutadores:
master@techcorp.com.br,ana.rh@inovabr.com.br - Candidatos:
flavio.expert@email.com,carolina.dev@email.com
O comando é idempotente - pode ser executado múltiplas vezes sem duplicar dados.
Para iniciar o projeto localmente, utilize o comando:
uv run manage.py runserver| Comando | Descrição |
|---|---|
uv run python manage.py migrate |
Executa migrações do banco de dados |
uv run python manage.py createsuperuser |
Cria um usuário administrador |
uv run python manage.py load_techs |
Carrega 100 tecnologias para autocomplete (idempotente) |
uv run python manage.py seed_test_data |
Popula o banco com dados de teste (idempotente) |
uv run python manage.py runserver |
Inicia o servidor de desenvolvimento |
uv run ruff check |
Verifica qualidade do código |
uv run ruff check --fix |
Corrige automaticamente problemas de lint |
Adoramos contribuições! Para contribuir com o Ginga, siga estes passos:
- Faça um Fork do projeto.
- Crie uma branch para sua funcionalidade (
git checkout -b feature/minha-feature). - Desenvolva suas alterações.
- Certifique-se de que o código segue os padrões do projeto (veja a seção Ruff abaixo).
- Envie um Pull Request (PR) descrevendo suas mudanças detalhadamente.
Antes de realizar qualquer commit ou solicitar um PR, você deve executar o seguinte comando:
uv run ruff check
O Ruff é utilizado neste projeto para garantir a consistência do código. Ele atua como:
- Linter: Identifica erros de sintaxe, variáveis não utilizadas e más práticas.
- Formatter: Garante que todos os colaboradores sigam o mesmo estilo de escrita (PEP 8), facilitando a leitura e revisão do código por outros membros da comunidade.
