Cases

InkFlow: canvas infinito local-first, com motor em C++ e WebAssembly

O InkFlow é um aplicativo web de canvas infinito para pensar e organizar tarefas, que funciona sem login e guarda os dados no próprio navegador. O desenho roda num motor em C++ compilado para WebAssembly, a colaboração acontece em tempo real entre aparelhos, e a escrita à mão vira tarefa com reconhecimento de texto no navegador.

Cliente
Produto próprio da Gomes Code
Setor
Produto web · produtividade

Cliente e contexto

Ferramentas de produtividade costumam virar listas sem fim. O InkFlow propõe o contrário: despejar ideias num canvas livre e puxar uma tarefa de cada vez para um modo de foco, com cronômetro.

O problema

“Quero rabiscar ideias como no papel, sem criar conta, sem meus dados irem para um servidor, e transformar o rabisco em tarefa.”

Restrições

  • Desenho fluido mesmo em tablet, sem travar a página.
  • Dados do usuário só no aparelho dele.
  • Colaboração entre aparelhos sem servidor de dados próprio.

Decisões e trade-offs

  1. Motor de desenho em C++ compilado para WebAssembly

    Por quê: O cálculo dos traços sai do JavaScript e fica perto do desempenho nativo. O custo é uma etapa a mais no build.

  2. Local-first com IndexedDB (Dexie.js)

    Por quê: Funciona offline e sem login; o usuário pode exportar tudo. Não há banco central para manter nem dado pessoal sob guarda.

  3. Sincronização P2P com Y.js e WebRTC

    Por quê: Aparelhos conversam direto entre si; só a sinalização passa por um worker leve. Sem servidor de dados.

  4. Reconhecimento de texto em Web Worker

    Por quê: O OCR (Tesseract.js) roda em segundo plano, então a escrita vira tarefa sem congelar o canvas.

O que foi construído

  • Canvas infinito com caneta, borracha, formas, laço de seleção e exportação em PDF.
  • Pilha de tarefas, modo de foco com Pomodoro, matriz de Eisenhower e heatmap de produtividade.
  • Varinha mágica: escrita à mão vira tarefa por OCR no navegador.
  • Pareamento por QR Code e colaboração em tempo real entre aparelhos.
  • Tema claro e escuro, português e inglês, instalável como app.

Resultados

  • 0contas ou servidores de dados para o usuário começar a usarFonte: Funcionamento do app no ar
  • 3linguagens no código: TSX, TypeScript e C++ (motor de desenho)Fonte: Repositório do InkFlow, 13/10/2026

O azulejo deste case

Linhas não vazias de código-fonte por linguagem, contadas no repositório (pastas src e wasm).

Linhas de código do InkFlow por linguagem
Linhas de código do InkFlow por linguagemlinhas
TSX (interface)3.555
TypeScript (lógica)2.437
C++ (motor de desenho)74

Fonte: Repositório do InkFlow · 2026-10-13

Tecnologias

  • React
  • TypeScript
  • C++
  • WebAssembly
  • Y.js
  • WebRTC
  • Dexie.js
  • Tesseract.js

Ver projeto no ar: inkflow.danillogomes.com

Quer algo nesse nível?

Mande o problema, não a especificação.