Disponível para novos projetos

Software que resolve operação.

Sou Lucas Rikelmi, desenvolvedor que transforma rotinas de campo em sistemas: de apps 100% no navegador com criptografia a APIs REST em Java/Spring.

Projetos selecionados

02 estudos de caso · demos navegáveis
01

NEXO: Gestão Inteligente de Operações de Campo

Plataforma para equipes que acompanham centenas de empresas em campo: importa bases, gera cartas e recibos em PDF, monta rotas em mapa, cruza contatos e projeta metas, tudo dentro do navegador, sem servidor e sem enviar nenhum dado para fora.

JavaScript modularWeb CryptoArgon2idjsPDFChart.jsIndexedDBKML
Em uso real · +100h economizadas
+100hde trabalho manual economizadas na operação
36klinhas de código em 44 módulos
5tipos de documento gerados em lote
0chamadas a APIs externas
Segurança

Cofre local cifrado

Toda base fica no localStorage comprimida (pako) e cifrada com AES-256-GCM; a chave nasce de uma senha via Argon2id. Bloqueio por inatividade, limite de tentativas e expiração automática.

Documentos

Gerador próprio de documentos

Convite, lembrete, comunicado formal, recibo em duas vias e termo LGPD, montados por blocos em jsPDF com texto vetorial. Um lote de 10 empresas sai em ~220 KB.

Geo

Geocodificação 100% offline

Motor próprio que normaliza endereços (número por extenso, quadra/lote, “Rua X com Y”, km de rodovia) e casa com um dicionário de coordenadas. Exporta KML com pinos coloridos por status.

Inteligência

Cruzamento de contatos

Engine que normaliza telefones, e-mails e CNPJs e agrupa empresas atendidas pelo mesmo escritório contábil, o que vira uma abordagem centralizada.

ETL

CSV de milhões de linhas no browser

Leitura em streaming com detecção de encoding e separador, filtro por município e geração de índice, sem Python, sem travar a aba.

Gestão

Dashboard e projeção de metas

KPIs, funil de atendimento, produtividade por técnico e curva realizado × previsto com calendário de dias úteis e feriados.

Arquitetura em camadas
ArquivoFileProcessor · ContratosArquivo: lê CSV, não conhece regra de negócio
PersistênciaStorageManager · CryptoManager: chunks comprimidos e cifrados
NegócioMotorRegras: puro, sem DOM e sem I/O
MotoresPdfEngine · MapEngine/GeoCore · OsintEngine
UI5 telas, tema claro/escuro, tour guiado (Shepherd)
// Chave derivada da senha → nunca sai da memória
async _derivarChaveArgon2id(senha, salt) {
  const bytes = await hashwasm.argon2id({
    password: senha, salt,
    iterations: this._ARGON2_ITERACOES,
    memorySize: this._ARGON2_MEMORIA_KIB,
    hashLength: 32, outputType: "binary",
  });
  return crypto.subtle.importKey(
    "raw", bytes, { name: "AES-GCM" },
    true, ["encrypt", "decrypt"]);
}

Versão de demonstração de um sistema em uso real. Marcas, nomes, textos legais e dados foram substituídos por equivalentes fictícios; a criptografia continua ativa, só o diálogo de senha é pulado.

02

Locadora: API de gestão de frota

API REST em Java 17 + Spring Boot 3 com Hibernate/JPA e PostgreSQL para locação de veículos: frota, clientes, contratos, devolução com avarias e pagamento, com front-end próprio em HTML/CSS/JS.

Java 17Spring Boot 3.4Spring Data JPAHibernatePostgreSQLRESTMavenJUnit 5 · H2
Projeto acadêmico
17entidades JPA
7controllers REST
9repositórios Spring Data
5testes automatizados, incluindo concorrência
// Duas pessoas tentando alugar o mesmo carro ao mesmo tempo:
// SELECT ... FOR UPDATE faz a segunda esperar a primeira terminar.
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select v from Veiculo v where v.id = :id")
Optional<Veiculo> findByIdParaAtualizacao(@Param("id") Long id);

// ContratoService.abrir
Veiculo veiculo = veiculoRepository.findByIdParaAtualizacao(id)
    .orElseThrow(() -> RegraNegocioException.naoEncontrado("Veículo não encontrado."));
if (veiculo.getStatus() != StatusVeiculo.DISPONIVEL) {
  throw RegraNegocioException.conflito("Veículo não está disponível"); // 409
}
// preço calculado no servidor: diárias (arredondadas p/ cima) × categoria
float valor = calcularDiarias(locacao) * categoria.getValorDiaria();
veiculo.setStatus(StatusVeiculo.ALUGADO);
Modelo de domínio
FrotaMarca → Modelo → Categoria (diária) → Veículo · Manutenção
PessoasCliente e Usuário com Contato/Endereço em @OneToOne cascade
ContratoContratoLocacao 1:N Locação 1:N Ocorrência · 1:1 Pagamento
ConcorrênciaTrava pessimista no veículo e no contrato + @Version como segunda barreira; teste com 8 threads simultâneas
RegrasPreço calculado no servidor, devolução de todos os veículos do contrato, KM não regride, erros 400/404/409 padronizados
SegurançaLogin no servidor com BCrypt; senha nunca sai na API
JSON@JsonIgnore/@JsonIgnoreProperties para evitar ciclos e proxies lazy

Na demo, as chamadas para localhost:8080 são atendidas por uma API simulada no navegador que reproduz as regras do backend Java. Na tela de Locações há um painel que dispara 5 pedidos simultâneos para o mesmo carro, com e sem a trava. Login pré-preenchido: demo / demo123.

Ferramentas do dia a dia

Front-end

  • JavaScript (ES2022)
  • HTML semântico · CSS
  • Chart.js · jsPDF · JSZip
  • Web Crypto API

Back-end

  • Java 17
  • Spring Boot · Spring Web
  • Spring Data JPA · Hibernate
  • Python (scripts e ETL)

Dados

  • PostgreSQL
  • IndexedDB · localStorage
  • CSV / ETL em streaming
  • KML · GeoJSON

Prática

  • Git
  • Documentação técnica
  • Testes manuais guiados
  • Segurança & privacidade (LGPD)

Do problema real ao sistema

Meus melhores projetos nasceram dentro da operação: planilhas que viravam retrabalho, cartas montadas à mão, endereços procurados um a um no mapa. Só no NEXO, a equipe estimou mais de 100 horas de trabalho manual economizadas, tempo que voltou para o campo. Eu observo o fluxo, desenho a solução e entrego algo que a equipe usa no dia seguinte.

  1. Privacidade por padrãoDado sensível não sai da máquina; quando precisa ficar salvo, fica cifrado.
  2. Funciona sem internetBibliotecas internalizadas, sem build e sem dependência de CDN em produção.
  3. Camadas bem separadasLeitura de arquivo, regra de negócio e interface não se misturam.
  4. DocumentadoManual do usuário, documentação técnica e registro de dívida técnica junto do código.
Vamos conversar

Tem uma operação pra destravar?

Projetos freelance, consultoria ou vaga: me conte o problema e eu respondo em até 1 dia útil.

lucasdasilvamacedo1546@gmail.com · Aparecida de Goiânia, GO · atendo remoto