Pular para o conteúdo
Disponível para estágio em desenvolvimento, automação e infraestrutura.Fale comigo
RGW.
Todos os projetos

AgroLens

Em desenvolvimento

Do campo ao dataset, mesmo sem conexão.

Ano
2026
Papel
Trabalho de conclusão de curso
Contexto
UNICENTRO · Computação e Agronomia

Tecnologias: Flutter, Angular, NestJS, FastAPI, YOLO, PostgreSQL, Docker

Sobre

O AgroLens é uma plataforma offline-first para captura, organização, anotação e exportação de imagens agrícolas destinadas a datasets de visão computacional. O projeto foi desenvolvido como Trabalho de Conclusão de Curso em Ciência da Computação na UNICENTRO, com colaboração entre os departamentos de Computação e Agronomia.

O código-fonte e os dados permanecem privados para proteger configurações de ambiente e material de pesquisa; o estudo de caso público documenta a arquitetura e as decisões de engenharia.

O problema

Imagens dispersas

Fotos de campo ficam espalhadas em dispositivos, pastas e serviços genéricos.

Conectividade instável

A internet pode ser instável ou inexistente durante a coleta.

Contexto agronômico

Propriedade, talhão, cultura, estádio fenológico e localização precisam acompanhar cada lote.

Anotação desconectada

Anotação e exportação normalmente exigem ferramentas separadas do processo de coleta.

Fluxo de dados

  1. Captura em campo
  2. Fila local
  3. Sincronização
  4. Revisão
  5. Anotação
  6. Exportação

Aplicativo de campo

  • Captura ou seleção de imagens em Flutter.
  • Registro de propriedade, talhão, cultura e estádio fenológico.
  • Coordenadas obtidas por GPS ou selecionadas no mapa.
  • Persistência local em SQLite e fila de sincronização offline.
  • Estados explícitos para itens pendentes, em envio, concluídos ou com erro.

Painel web

  • Dashboard e filtros sobre uploads e metadados agrícolas.
  • Gestão de usuários, catálogos e permissões.
  • Editor de bounding boxes com anotações no formato YOLO.
  • Exportação de metadados, imagens e datasets de treino e validação.

Arquitetura

Fluxo do sistema

  1. App de campo

    Flutter · offline-first

    Painel web

    Angular

  2. API

    NestJS · Drizzle ORM

  3. PostgreSQL

    metadados e auditoria

    Armazenamento S3

    imagens

    Worker

    uploads e jobs

  4. Serviço de IA

    FastAPI · YOLO

CamadaTecnologiasResponsabilidade
MobileFlutter · Dart · SQLiteColeta, metadados, operação offline e sincronização
WebAngular · TypeScriptGestão, anotação, controle de acesso e exportação
APINestJS · Drizzle ORM · PostgreSQLAutenticação, regras de negócio, auditoria e jobs
ArquivosArmazenamento S3Uploads assinados e armazenamento de imagens
IAPython · FastAPI · YOLOServiço isolado para inferência e anotação assistida
OperaçãoDocker Compose · nginx · GitHub ActionsAmbientes reproduzíveis, proxy e validação automatizada

Decisões de engenharia

Offline primeiro

A coleta não depende de conexão ativa: imagens e metadados são registrados localmente e sincronizados quando a rede volta.

Metadados como parte do dado

Cada lote carrega o contexto agronômico desde a captura, reduzindo imagens sem identificação.

Clientes separados do processamento

Operações demoradas, como finalização de uploads e inferência, ficam em workers fora da API HTTP.

Segurança e operação

Rotação de refresh tokens, uploads pré-assinados, rate limiting, trilha de auditoria, health checks e backups documentados.

Resultado e participação

O protótipo integrou dois clientes funcionais e demonstrou o fluxo completo de captura, sincronização, gerenciamento, anotação e exportação. A refatoração para backend próprio e a integração de inferência seguem em desenvolvimento.

Trabalho orientado por Jotair Elio Kwiatkowski Junior, Carlos Eduardo Andrade Iatskiu e Leandro Rampim, na UNICENTRO.

  • Levantamento e modelagem dos requisitos do domínio.
  • Desenvolvimento do aplicativo Flutter e do painel Angular.
  • Implementação do fluxo offline e da sincronização de imagens e metadados.
  • Modelagem de permissões, anotações e exportação YOLO.
  • Evolução para API própria, banco relacional, object storage e conteinerização.