# dailyfocus

Foco do dia, tarefas, timer e reflexão num só app Next.js, sem distração

- URL: https://fernando.moretes.com/open-source/dailyfocus

- Markdown: https://fernando.moretes.com/open-source/dailyfocus/guide.md?lang=pt

- GitHub: https://github.com/fernando-moretes/app-dailyfocus

- Homepage: https://dailyfocus.moretes.com

- Language: TypeScript

- Topics: focus, moretes, nextjs, pomodoro, portfolio, productivity, tasks, typescript, vercel

- Stars: 0

- Forks: 0

- Updated: 2026-10-16T23:51:00Z

---

O DailyFocus é um app de produtividade em Next.js e TypeScript que organiza o dia em quatro passos: escolher um foco, quebrar em tarefas, trabalhar em blocos cronometrados e fechar com uma reflexão curta.

## Por que este repositório existe

A pergunta que me fez escrever o DailyFocus não foi "qual app de tarefas é melhor?", foi "por que termino o dia com a lista cheia de itens riscados e a coisa importante intocada?".

Lista de tarefas sozinha mede volume, não direção. Dez itens pequenos riscados parecem um dia produtivo e escondem que o único item que importava ficou para amanhã, de novo. O app inverte a ordem: primeiro você declara **um** foco para o dia, e só depois as tarefas aparecem, como desdobramento desse foco.

O segundo problema é a execução. Planejar é barato; o custo está nas interrupções entre um bloco de trabalho e outro. Por isso o timer de foco mora na mesma tela do plano, e não num app separado que você precisa lembrar de abrir.

O terceiro é o fechamento. Sem uma reflexão no fim do dia, o plano de amanhã repete os erros de hoje. A reflexão é curta de propósito: se custar mais que dois minutos, ninguém faz depois da primeira semana.

O repositório também cumpre outro papel: é um app pequeno, em produção em `dailyfocus.moretes.com`, com código público. Serve de referência para uma stack Next.js, TypeScript e Tailwind CSS publicada na Vercel sem cerimônia.

## O que o app faz

- **Planejamento diário:** um foco declarado no topo, tarefas como desdobramento dele.
- **Timer de foco:** blocos de trabalho cronometrados no estilo pomodoro, na mesma tela do plano.
- **Reflexão de fim de dia:** um fechamento curto que alimenta o plano do dia seguinte.
- **Interface sem distração:** nada de feed, notificação ou métrica de vaidade competindo com o foco.
- **Stack enxuta:** Next.js, TypeScript e Tailwind CSS, licença MIT.

## Como um dia passa pelo app

O diagrama mostra o ciclo de uso, não infraestrutura pesada: o app é um front-end Next.js servido pela Vercel, e o valor está na ordem dos passos.

### ▲ Vercel: hosting

- DailyFocus Next.js + TypeScript (frontend)

### 🔧 Ciclo do dia / Daily loop

- Foco do dia Daily focus (compute)
- Tarefas Tasks (compute)
- Timer de foco Focus timer (compute)
- Reflexão Reflection (compute)

### Fluxos

- user -> app: abre dailyfocus.moretes.com
- app -> focus: 1. declara o foco
- focus -> tasks: 2. quebra em tarefas
- tasks -> timer: 3. executa em blocos
- timer -> reflect: 4. fecha o dia
- reflect -> focus: ajusta o plano de amanhã

## Rodando localmente

1. **Pré-requisitos**: Node.js numa versão LTS recente e `pnpm` instalado (`corepack enable` resolve na maioria das máquinas). Não há serviço externo a configurar para subir o app em modo de desenvolvimento.

2. **Clone pela URL atual**: Use `git clone https://github.com/fernando-moretes/app-dailyfocus.git` e `cd app-dailyfocus`. O README ainda mostra `fernandofatech/dailyfocus`, do tempo antes da migração para a organização; o GitHub redireciona, mas o nome da pasta muda.

3. **Instale as dependências**: `pnpm install`. Use `pnpm`, não `npm`: o lockfile é do pnpm, e misturar gerenciadores produz árvore de dependências diferente da que roda em produção.

4. **Suba o servidor de desenvolvimento**: `pnpm dev` e abra `http://localhost:3000` (a porta padrão do Next.js, salvo se já estiver ocupada).

5. **Use o ciclo completo uma vez**: Declare um foco, crie duas ou três tarefas, rode um bloco do timer e preencha a reflexão. É a forma mais rápida de entender o fluxo antes de abrir o código.

_Quickstart em quatro comandos_

```bash
git clone https://github.com/fernando-moretes/app-dailyfocus.git
cd app-dailyfocus
pnpm install
pnpm dev
```

## Como o código está organizado

O DailyFocus é um app Next.js em TypeScript com Tailwind CSS para estilo. Não há backend próprio documentado no README: o que existe é o front-end, publicado na Vercel sob o domínio `dailyfocus.moretes.com`.

As quatro funcionalidades (**planejamento**, **timer**, **reflexão** e a **interface sem distração**) mapeiam para componentes de tela, não para serviços separados. Essa escolha é deliberada: um app pessoal de produtividade não justifica API, banco gerenciado e fila. Cada peça de infraestrutura a mais é uma peça a mais para manter, atualizar e pagar por anos, e o problema que o app resolve cabe no navegador.

O TypeScript aqui não é enfeite. Num app pequeno, o tipo é a documentação que não envelhece: o formato de uma tarefa ou de uma sessão do timer fica explícito no código, e um refactor que quebra o contrato quebra no `tsc`, não na mão do usuário.

O README não detalha onde o estado do dia é guardado. Antes de assumir que seus dados persistem entre dispositivos, abra o código e confirme: app de foco que perde o plano no meio do dia é pior que não ter app.

> **URL do README desatualizada:** O bloco "Getting Started" do README ainda clona `fernandofatech/dailyfocus`. O repositório mora hoje em `fernando-moretes/app-dailyfocus`. O redirecionamento do GitHub funciona, mas falha em silêncio no dia em que alguém criar um repositório novo com o nome antigo: use a URL nova em scripts e CI.

## Limites honestos

O repositório tem zero estrelas e zero forks. Não é uma biblioteca com comunidade, é um app pessoal publicado com código aberto.

O roadmap do README é genérico: refactors contínuos, **mais cobertura de testes** e melhorias de documentação. Leia isso como está escrito: a cobertura de testes hoje não é o ponto forte, e o README não documenta uma suíte. Se você for usar o código como base para algo seu, rode `pnpm build` antes de qualquer mudança e trate o build verde como o mínimo, não como garantia.

Também não há, no que está documentado, sincronização entre dispositivos, integração com calendário ou conta de usuário. Se você precisa disso, o DailyFocus não é a ferramenta, e eu prefiro dizer agora a deixar você descobrir depois de migrar sua rotina.

Contribuições são bem-vindas pelo caminho de sempre: abra uma issue para discutir mudança grande antes do pull request. A licença é MIT.

## Perguntas frequentes

### Preciso de conta ou de credencial de nuvem para rodar?

Não para desenvolvimento local: `pnpm install` e `pnpm dev` bastam. A versão publicada roda em `dailyfocus.moretes.com`.

### É um app de pomodoro?

O timer segue a ideia de blocos cronometrados, mas o app não é só o timer. O timer existe para executar um foco declarado antes, e a reflexão fecha o ciclo.

### Posso fazer deploy da minha própria cópia?

Sim. É um app Next.js padrão sob licença MIT; importar o repositório na Vercel é o caminho mais curto, porque é onde a versão original roda.

## Referências

- [GitHub: fernando-moretes/app-dailyfocus](https://github.com/fernando-moretes/app-dailyfocus)
- [DailyFocus (live)](https://dailyfocus.moretes.com)
- [Next.js documentation](https://nextjs.org/docs)
- [Tailwind CSS documentation](https://tailwindcss.com/docs)

## Para quem é

Use o DailyFocus quando: você trabalha sozinho num mesmo dispositivo, quer um foco por dia em vez de uma lista infinita e prefere planejar, executar e refletir na mesma tela. Use o código como referência quando quiser um exemplo pequeno de Next.js, TypeScript e Tailwind CSS publicado na Vercel. Procure outra ferramenta se você precisa de sincronização entre dispositivos, trabalho em equipe ou integração com calendário: nada disso está documentado aqui.

## Links

- [GitHub repository](https://github.com/fernando-moretes/app-dailyfocus)
- [Homepage](https://dailyfocus.moretes.com)
