Construa do zero
Um walkthrough de dez passos que começa numa pasta vazia e termina com um app de chat com IA local funcionando.
O walkthrough reconstrói o LocalLens de dentro para fora. Cada passo adiciona um arquivo (o passo 0 monta o shell do projeto), explica por que o arquivo existe, mostra o código mínimo e te aponta para o próximo passo.
A ordem é deliberada. Espelha a direção de imports da base de código, então nenhum passo depende de um arquivo que você ainda não escreveu.
Os dez passos
- Setup do projeto —
bun init, instalar dependências, configurar os configs e scripts. - Tipos de domínio e
AppError— o vocabulário compartilhado que todo outro arquivo importa. - Chunking e o prompt embasado — os helpers do lado de recuperação que ainda não sabem sobre o SDK.
- O gateway QVAC — carregar modelos, ingerir, buscar, fazer stream de completions.
- O JSON store — persistir brains
e chunks em
.locallens/store.json. - Adaptadores de arquivo — caminhada pela pasta local e normalização do file picker do navegador.
- O workflow da aplicação —
conectar tudo em
LocalLensApp. - A CLI — o ponto de entrada sem UI.
- O servidor Bun — a superfície HTTP opcional.
- A UI do navegador — uma camada fina sobre o servidor.
O caminho didático
O walkthrough cobre as partes que ensinam a arquitetura. Não explica toda regra de CSS ou todo helper de UI. O código fonte completo está no GitHub — leia depois que você tiver passado por essas páginas.
Por que essa ordem
Cada passo depende só do que veio antes:
project shell → bun init, deps, configs (no source yet)
domain.ts → no internal imports
rag.ts → imports domain
qvac.ts → imports domain
store.ts → imports domain
files.ts → imports domain
locallens.ts → imports domain, files, qvac, rag, store
cli.ts → imports domain, locallens
server.ts → imports domain, locallens
ui/ → talks to server.ts over HTTPConstrua nessa ordem e o bun run typecheck continua verde depois de cada
passo.