O AgroShield é uma plataforma descentralizada de seguro paramétrico para cultivos, construÃda na blockchain Fuel. Utiliza uma arquitetura de monólito modular com separação clara entre componentes on-chain (contratos inteligentes) e off-chain (TypeScript/Node.js).
agroshield-monorepo/
├── apps/ # Aplicações principais
│ ├── api-server/ # Servidor API (Fastify)
│ ├── app/ # Frontend Vite
│ ├── landing-page/ # Frontend NextJS
│ └── indexer/ # Indexador Envio
└── packages/ # Pacotes compartilhados
├── contracts/ # Contratos Sway (Fuel)
├── core-domain/ # Lógica de negócio pura
├── data-access/ # Repositórios e acesso a dados
├── graphql-client/ # Cliente GraphQL
├── graphql-queries/ # Consultas GraphQL
├── graphql-types/ # Tipos GraphQL
└── docs/ # Documentação
Contratos Sway executados na blockchain Fuel:
insurance-contract: Gerenciamento principal de apólices e pagamentosinsurance-manager: Rastreamento de status das apólicesinsurance-nft: Representação NFT das apólices
Lógica de negócio pura sem dependências externas:
- Entidades de domÃnio
- Objetos de valor
- Regras de negócio
- Zero dependências de banco de dados ou APIs
Implementação do padrão Repository para dados externos:
- Repositórios de banco de dados
- Clientes de API meteorológica (Open-Meteo, OpenWeather)
- Único responsável pela persistência e chamadas de API externas
Servidor HTTP Fastify:
- Endpoints REST para o frontend
- Processamento de dados meteorológicos
- Cotação das apólices
Aplicação React com integração Fuel:
- Vite, TailwindCSS, componentes shadcn/ui
- Integração com connectors de carteira Fuel
- Interface para criação e gerenciamento de apólices
Indexador Fuel para eventos blockchain:
- Monitora contratos inteligentes
- Processa eventos on-chain
- Sincroniza dados com banco off-chain
- PNPM Workspaces: Gerenciamento de dependências
- Turborepo: Orquestração de builds
- forc: v0.67.0 (compilador Sway)
- fuel-core: v0.41.9 (nó Fuel)
- React 19: Framework principal
- Vite: Build tool
- TailwindCSS v4: Estilização
- Fuel React SDK: Integração blockchain
- Fastify: Servidor HTTP
- TypeScript: Linguagem principal
- Biome: Linting e formatação
# Instalar dependências
pnpm install
# Build completo do monorepo
pnpm build# Frontend React
pnpm --filter @agroshield/app dev
# Servidor API
pnpm --filter @agroshield/api-server dev# Formatar contratos
pnpm forc:fmt
# Compilar contratos
pnpm forc:build
# Build contratos para frontend
pnpm --filter @agroshield/app fuels:build
# Deploy contratos
pnpm --filter @agroshield/app fuels:deploy- Atualizar contratos Sway
- Executar
pnpm forc:build - Regenerar bindings frontend:
pnpm --filter @agroshield/app fuels:build
- Modificações no core-domain fluem através do data-access
- Chegam ao api-server
- Usa Fuel testnet
- Interação com contratos através de bindings gerados
@agroshield/core-domain
↓
@agroshield/data-access
↓
@agroshield/api-server
@agroshield/graphql-types
↓
@agroshield/graphql-queries
↓
@agroshield/graphql-client
↓
Aplicações Frontend
O frontend se comunica com contratos inteligentes através de bindings TypeScript gerados em apps/app/src/sway-contracts-api/. Estes são gerados automaticamente a partir dos contratos Sway usando o toolchain Fuel.
O projeto utiliza Biome como ferramenta unificada para linting, formatação e análise de código. Biome oferece:
- Performance superior: Mais rápido que ESLint + Prettier
- Configuração zero: Funciona out-of-the-box com configurações sensatas
- Consistência: Garantia de estilo de código uniforme em todo o monorepo
- TypeScript nativo: Suporte completo sem configurações adicionais
Todas as regras de estilo e qualidade são aplicadas automaticamente durante o desenvolvimento e build, garantindo que o código mantenha alta qualidade e consistência entre todos os colaboradores.
- Blockchain: Fuel Network
- Contratos: Sway
- Backend: Node.js, TypeScript, Fastify
- Frontend: React, Vite, TailwindCSS
- Banco de Dados: PostgreSQL
- APIs: Open-Meteo
- DevOps: Docker, pnpm, Turborepo