🏁 Getting Started with Synapse
Olá e seja bem-vindo(a) ao time do Synapse! Ficamos muito felizes com seu interesse em contribuir. Este guia contém tudo que você precisa para configurar o ambiente, rodar o projeto localmente e fazer sua primeira contribuição.
O Synapse é um projeto de agregador de notícias inteligente, projetado para combater o excesso de informação e oferecer uma experiência de leitura rápida e personalizada. Desenvolvido com um back-end em Flask (Python) e um front-end em React, o sistema é totalmente containerizado com Docker para garantir um ambiente consistente para todos.
🚀 Rodando o Projeto
Para começar, você só precisa do Git e do Docker instalados na sua máquina. Todo o resto é gerenciado pelos nossos contêineres.
Pré-requisitos
Passo a Passo
1. Clone o Repositório Abra seu terminal, clone o projeto e entre na pasta.
git clone https://github.com/unb-mds/2025-2-Synapse.git
cd 2025-2-Synapse
2. Configure as Variáveis de Ambiente (Backend)
O backend precisa de um arquivo .env para as chaves de API e configurações do banco de dados. Você pode copiar o exemplo:
# Na raiz do projeto
cp .env.example .env
Importante: Abra o arquivo
.enve preencha as chaves de API necessárias (como a daGNews API).
3. Configure as Variáveis de Ambiente (Frontend)
O frontend precisa saber o endereço da API. Crie o arquivo .env dentro da pasta frontend/:
# Comando executado a partir da raiz do projeto
echo "VITE_API_BASE_URL=http://localhost:5001" > frontend/.env
4. Suba os Contêineres com Docker Compose Este é o comando mágico que irá construir as imagens e iniciar todos os serviços (backend, frontend, banco de dados e o job agendado).
docker compose up --build -d
- A flag
--buildgarante que as imagens serão reconstruídas se houver mudanças. - A flag
-d(detached) roda os contêineres em segundo plano.
5. Tudo Pronto! ✅ Se tudo correu bem, a aplicação estará disponível nos seguintes endereços:
- 🖥️ Frontend (React):
http://localhost:5173 - ⚙️ Backend (Flask API):
http://localhost:5001 - 📚 Documentação da API (Swagger):
http://localhost:5001/api/docs
🤝 Como Contribuir
Com o ambiente rodando, você está pronto para contribuir! Existem várias formas de ajudar:
- Reportando Bugs: Encontrou um problema? Abra uma Issue detalhando o erro.
- Sugerindo Melhorias: Tem uma ideia para uma nova funcionalidade? Abra uma Issue com a tag
enhancement. - Escrevendo Código: Para corrigir bugs ou implementar features, siga nosso fluxo de trabalho.
Nosso Fluxo de Trabalho (Git Workflow)
Crie uma Branch a partir da
devTodo novo trabalho deve ser feito em uma branch separada, criada a partir dadev.# Garanta que sua branch dev local está atualizada git switch dev git pull origin dev # Crie sua nova branch git switch -c <tipo>/<nome-descritivo>Exemplos:
feat/pagina-de-perfil,fix/erro-login-social,docs/atualizar-getting-startedFaça Commits Atômicos e Semânticos Siga o Padrão de Commit. Cada commit deve representar uma pequena unidade lógica de trabalho. Veja a tabela abaixo.
Mantenha sua Branch Atualizada Antes de submeter seu trabalho, sincronize sua branch com a
devpara resolver possíveis conflitos.# Estando na sua branch de feature git pull origin devAbra um Pull Request (PR) Quando seu trabalho estiver pronto, envie um Pull Request para a branch
dev. Preencha o template do PR para que todos entendam o que foi feito.Aguarde a Revisão de Código Pelo menos um outro membro da equipe precisa revisar e aprovar seu PR antes que ele seja integrado.
Padrão de Commits Semânticos
A estrutura é: <emoji> <tipo>(<escopo>): <descrição>
| Tipo | Emoji | Descrição |
|---|---|---|
feat | ✨ | Uma nova funcionalidade para o usuário. |
fix | 🐛 | Uma correção de bug. |
docs | 📚 | Mudanças apenas na documentação. |
chore | 🔧 | Mudanças de configuração, scripts, tarefas. |
refactor | ♻️ | Refatoração de código que não altera a funcionalidade. |
test | 🧪 | Adição ou modificação de testes. |
style | 💄 | Mudanças de estilo e formatação de código. |
📈 Nosso Processo de Desenvolvimento
Para garantir a qualidade e o alinhamento, seguimos dois conceitos importantes:
Definition of Ready (DoR)
Uma tarefa está pronta para ser iniciada se:
- ✅ A história está bem escrita e clara.
- ✅ Os Critérios de Aceitação são objetivos e testáveis.
- ✅ Foi discutida e entendida por todo o time de desenvolvimento.
- ✅ Foi estimada em Story Points.
Definition of Done (DoD)
Uma tarefa é considerada concluída quando:
- ✅ O código foi implementado conforme os Critérios de Aceitação.
- ✅ O código foi revisado e aprovado por, no mínimo, um colega.
- ✅ Testes automatizados (quando aplicáveis) foram criados e estão passando.
- ✅ A funcionalidade foi integrada à branch
dev. - ✅ Foi demonstrada e validada na Sprint Review.
Qualquer dúvida, não hesite em perguntar no nosso canal de comunicação! Boas contribuições! Este guia explica como executar o projeto Synapse, incluindo backend, frontend, banco de dados e o cron job que faz a requisição das notícias pela API Gnews.