Sistema web de monitoramento agrícola baseado em IoT com sensores e dashboards para apoio a decisões no campo.
TerraSync/
├── terrasync-backend/ # API REST - Spring Boot 3.5.5 + Java 21
├── terrasync-frontend/ # Interface Web - Angular + TypeScript (em desenvolvimento)
├── docker-compose.yml # Orquestração
└── .env.example # Template de variáveis
# Clone e configure
git clone https://github.com/MathCunha16/TerraSync.git
cd TerraSync
cp .env.example .env
# Edite o .env com suas credenciais
nano .env
# Suba tudo
docker-compose up --build
Pronto! API rodando em http://localhost:8080
- Java 21 + Spring Boot 3.5.5
- PostgreSQL 17 + PostGIS 3.5
- Flyway + JPA/Hibernate
- MapStruct + Gradle
- Angular + TypeScript
- (Em desenvolvimento)
O docker-compose.yml gerencia 2 serviços conectados na rede terra_sync_network:
- Container:
terrasync_db - Imagem:
postgis/postgis:17-3.5(PostgreSQL + extensão PostGIS) - Porta:
5432(definida no.envviaDB_HOST_PORT) - Persistência: Volume
postgres_datapara não perder dados ao recriar containers - Variáveis: Lê
DB_USERNAME,DB_PASSWORD,DB_NAMEdo.env
- Container:
terrasync_api - Build: Usa o
Dockerfilede./terrasync-backend - Porta:
8080 - Depende de:
postgres-database(aguarda o banco subir antes) - Conexão: Conecta no banco via hostname
postgres-database(DNS interno do Docker)
Importante: As variáveis do .env devem estar na raiz do projeto, não dentro de terrasync-backend.
# Subir todos os serviços
docker-compose up --build # Rebuild + sobe (use após mudanças no código)
docker-compose up -d # Sobe em background (detached)
# Gerenciar
docker-compose logs -f # Acompanha logs em tempo real
docker-compose logs -f backend-api # Logs apenas da API
docker-compose ps # Lista containers rodando
docker-compose down # Para todos os serviços
docker-compose down -v # Para e APAGA volumes (⚠️ deleta dados do banco)
# Desenvolvimento
docker-compose up postgres-database # Sobe apenas o banco (útil para rodar API local)
docker-compose restart backend-api # Reinicia apenas a API
docker exec -it terrasync_db psql -U postgres -d terrasync_db # Acessa o banco via CLI
+ ✅ SEMPRE trabalhe em branches
+ ✅ SEMPRE abra Pull Requests para revisão
- ❌ NUNCA faça commit direto na main
- ❌ NUNCA dê push --force na main
# Certifique-se de estar na main atualizada
git checkout main
git pull origin main
# Para novas funcionalidades
git checkout -b feature/nome-descritivo
# Para correções de bugs
git checkout -b fix/nome-do-bug
# Para ajustes de documentação
git checkout -b docs/o-que-mudou
# Exemplos:
git checkout -b feature/crud-sensors
git checkout -b fix/farm-active-bug
git checkout -b docs/update-backend-readme
# Faça suas mudanças...
# Depois commit:
git add .
git commit -m "feat: adiciona CRUD de sensores"
# Mais mudanças...
git commit -m "fix: corrige validação de email"
# Push da sua branch (não da main!)
git push origin feature/nome-descritivo
# Se for o primeiro push da branch:
git push -u origin feature/nome-descritivo
- Vá no GitHub
- Clique em "Compare & pull request"
- Descreva o que você fez
- Aguarde revisão do @MathCunha16 ou outro membro
# Volte pra main e atualize
git checkout main
git pull origin main
# Delete sua branch local (opcional, mas recomendado)
git branch -d feature/nome-descritivo
Use sempre o prefixo adequado:
feat: # Nova funcionalidade
fix: # Correção de bug
docs: # Apenas documentação
refactor: # Refatoração de código (sem mudar comportamento)
test: # Adiciona ou modifica testes
chore: # Manutenção, configs, deps
# Exemplos:
git commit -m "feat: adiciona endpoint de sensores"
git commit -m "fix: corrige bug no mapper de Farm"
git commit -m "docs: atualiza README com instruções de deploy"
git commit -m "refactor: simplifica lógica do CreateFarmUseCase"
git commit -m "test: adiciona testes para CropTypeService"
git commit -m "chore: atualiza dependências do gradle"
# Se commitou na main SEM dar push ainda:
git reset HEAD~1 # Desfaz o último commit (mantém mudanças)
git checkout -b feature/minha-branch # Cria branch correta
git add .
git commit -m "feat: minha feature"
# Se já deu push na main (⚠️ AVISE O @MathCunha16 IMEDIATAMENTE):
# NÃO tente consertar sozinho, chame ajuda!
- Backend README - Arquitetura, migrations, use cases, gradle, sonarqube
- Frontend README - (em breve)
Repositórios úteis para análise de código:
cd terrasync-backend
./sonar-scan.sh
🚧 Fazendo:
- Backend API
🚧 Fazendo:
- Frontend Angular
🔜 Próximo:
- Sistema de Alertas
- Dashboards
- WebSockets para IoT