§1O problema
Tudo começou como um app só que virou um “superapp”: tarefas, agenda, hábitos e metas na mesma base e no mesmo código. Ficou difícil mexer numa parte sem quebrar outra, e os outros apps (saúde, painel) precisavam copiar dados dele. Faltava uma regra clara de quem manda em cada dado.
§2O que eu construí
- Regra de ouroCada tipo de dado tem exatamente um dono. Ninguém guarda cópia.
- task-meTarefas, listas e tags, com quadro kanban.
- log-meAtividades (o que aconteceu).
- plan-meAgenda, com eventos próprios e calendários ICS somente leitura.
- habit-meHábitos, com sequências, mapa de calor, estado “pulado” e pausas de férias.
- note-meNotas em arquivos Markdown (a fonte da verdade), com links entre notas e retrolinks; o banco é só índice.
- coach.meO app de coaching; também é dono do catálogo central de listas e tags que os outros usam.
- data-hubBroker headless entre todos: registro de serviços, proxy com autenticação, tokens por app com escopos (leitura/escrita por serviço) e eventos de notificação. Nunca guarda dado de domínio. Tem um console (app Next) para ver eventos, serviços, apps e tokens.
- ask-meRecebe comando de voz ou texto pelos Atalhos do iPhone, interpreta com IA e roteia para o app dono (tarefa, evento, hábito, nota…), com histórico, “desfazer” e compartilhar pelo menu do iPhone.
§3As partes difíceis
6 itens- 01
Quebrar um app grande sem derrubá-lo
Migração em etapas (strangler): o app antigo continuou rodando sobre adaptadores enquanto cada serviço nascia; dados migrados de forma repetível e conferidos por contagem.
- 02
Broker que não vira dono de nada
Durante o desenho, cortei do hub coletores de dados e “views” prontas. Composição de telas fica no app que consome.
- 03
Segurança por escopo
Tokens de app com escopos por serviço, hash no banco, mostrados uma vez; o console não consegue revogar o próprio token.
- 04
Taxonomia compartilhada
Listas e tags vivem no coach.me; os outros guardam só o id e resolvem o nome na hora.
- 05
Notas em arquivo como fonte da verdade
Decisão contrária aos outros apps (SQLite primeiro), para a IA e o git lerem e escreverem as notas.
- 06
Voz e texto com IA em ~7-11 s ponta a ponta
Com desfazer instantâneo sem chamar o modelo (medição de agosto de 2026).
§4Resultado
- apps, um dono por tipo de dado
- 8
- comando de voz, ponta a ponta
- ~7-11 s
Todos os apps rodam no meu servidor em casa e eu uso numa rede privada. Eles compartilham a mesma marca e os mesmos componentes. São só para uso pessoal.
§5Stack
- Next.js 16
- React 19
- TypeScript
- Tailwind 4
- SQLite (better-sqlite3)
- Hono (engine do hub)
- Design system próprio
- pm2
- Tailscale
- Atalhos do iPhone
- IA por linha de comando