# dailyfocus

Um foco por dia, tarefas, timer e reflexão: produtividade sem painel de controle

- 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-09-29T16:20:57Z

---

DailyFocus é um app web em Next.js e TypeScript que organiza o dia de trabalho em quatro movimentos: escolher um foco, quebrá-lo em tarefas, executar em blocos cronometrados e fechar o dia com uma reflexão curta.

## Por que este repositório existe

A pergunta que a maioria das ferramentas de produtividade tenta responder é 'como organizar tudo o que eu tenho para fazer?'. A pergunta que eu queria responder é outra: **o que eu faço nos próximos 25 minutos, e isso serve ao foco de hoje?**

Ferramentas com projetos, etiquetas, prioridades em cinco níveis e integrações viram, elas mesmas, um sistema a ser mantido. O custo não aparece no dia em que você instala, aparece na revisão semanal de quarenta tarefas que ninguém vai fazer, no backlog pessoal que cresce mais rápido que a capacidade de executar. Esse é o mesmo custo de manutenção que eu vejo em arquitetura: o que pesa não é construir, é manter funcionando por anos.

O DailyFocus recusa esse caminho de propósito. O escopo é **um dia**. O dia tem **um foco**. O foco vira tarefas, as tarefas viram sessões cronometradas, e o dia termina com uma reflexão que fecha o ciclo em vez de empurrar pendência para amanhã sem olhar.

O repositório também cumpre um segundo papel: é uma das aplicações publicadas sob o domínio moretes.com, com código público, para mostrar uma aplicação Next.js pequena, em produção na Vercel, com escopo que cabe na cabeça de quem vai mantê-la.

## O que o app faz

- **Planejamento diário:** você define o foco do dia antes de abrir qualquer outra coisa, e quebra esse foco em tarefas executáveis.
- **Timer de foco:** sessões de trabalho cronometradas, na linha do Pomodoro (o repositório usa o tópico `pomodoro`).
- **Reflexão de fim de dia:** um fechamento curto sobre o que andou e o que travou, para o dia seguinte começar com informação e não com culpa.
- **Interface sem distração:** a tela mostra o foco, as tarefas e o timer. O que não serve ao próximo bloco de trabalho fica de fora.
- **Stack enxuta:** Next.js, TypeScript e Tailwind CSS, publicada na Vercel, licença MIT.

## Como o dia passa pelo app

O diagrama mostra o ciclo de uso e onde o app roda. O código sai do GitHub, a Vercel publica, e o uso inteiro acontece no navegador, seguindo as quatro etapas do dia.

### 💻 Navegador: DailyFocus

- Planejamento foco do dia (frontend)
- Tarefas foco quebrado (frontend)
- Timer de foco sessões cronometradas (compute)
- Reflexão fechamento do dia (frontend)

### ▲ Vercel: hosting

- Next.js build dailyfocus.moretes.com (edge)

### 🔧 GitHub: código

- app-dailyfocus TypeScript (ci)

### Fluxos

- user -> vercel: abre o app
- vercel -> plan: entrega a interface
- plan -> tasks: define o foco
- tasks -> timer: uma tarefa por sessão
- timer -> reflect: fim do dia
- reflect -> plan: informa o dia seguinte
- repo -> vercel: deploy

## Como o ciclo funciona na prática

**Planejamento:** o dia começa por uma decisão, não por uma lista. Você escreve o foco, a coisa que, se andar, faz o dia ter valido. Só depois quebra o foco em tarefas. A ordem importa: começar pela lista transforma o dia em triagem de pendências, começar pelo foco transforma a lista em consequência.

**Execução:** cada tarefa vai para o timer. Trabalho em bloco cronometrado tem duas vantagens que eu valorizo mais que qualquer técnica de motivação. A primeira é que o bloco tem fim, então a interrupção pode esperar. A segunda é que ao fim do dia você tem uma medida concreta, número de sessões, no lugar de uma sensação de 'trabalhei muito'.

**Reflexão:** o fechamento é curto de propósito. O que andou, o que travou, o que muda amanhã. Sem esse passo, o planejamento do dia seguinte repete os erros do anterior, porque ninguém olhou para eles.

**Interface:** a regra de produto é simples: se um elemento da tela não ajuda o próximo bloco de trabalho, ele não entra. Isso limita o app, e o limite é a feature.

## Instalar e rodar localmente

1. **Use o app publicado, se só quer usar**: Abra https://dailyfocus.moretes.com. Não há nada para instalar para usar o app.

2. **Clone o repositório**: `git clone https://github.com/fernando-moretes/app-dailyfocus.git` e depois `cd app-dailyfocus`. Use o endereço novo da organização, não o do README antigo.

3. **Instale as dependências com pnpm**: `pnpm install`. O projeto usa pnpm; misturar com `npm install` gera um segundo lockfile e versões divergentes.

4. **Suba o servidor de desenvolvimento**: `pnpm dev` e abra o endereço que o Next.js imprimir no terminal (por padrão `http://localhost:3000`).

5. **Valide antes de publicar um fork**: Rode o build de produção do Next.js antes de conectar o fork à Vercel. Erro de tipo que o modo dev tolera derruba o build lá.

_Quickstart local_

```bash
# clone (new organization URL)
git clone https://github.com/fernando-moretes/app-dailyfocus.git
cd app-dailyfocus

# install and run
pnpm install
pnpm dev

# open http://localhost:3000
```

> **O README ainda aponta para o endereço antigo:** O README manda clonar `fernandofatech/dailyfocus`. O repositório migrou para `fernando-moretes/app-dailyfocus`. O GitHub redireciona o clone, então o comando antigo funciona, mas cria uma pasta `dailyfocus` em vez de `app-dailyfocus` e o `origin` fica dependente de um redirecionamento que pode deixar de existir. Clone pelo endereço novo.

## Stack e o que ela diz sobre o projeto

**Next.js:** o app é uma aplicação Next.js publicada na Vercel. Para um produto deste tamanho, isso significa deploy por push, preview por branch e nenhuma infraestrutura para eu operar.

**TypeScript:** o domínio é pequeno, foco, tarefa, sessão, reflexão, e é justamente por ser pequeno que vale tipar. Erro de forma de dado num app de uma tela aparece como timer que não para ou tarefa que some, e o compilador pega isso antes do usuário.

**Tailwind CSS:** a interface sem distração é, em boa parte, uma decisão de CSS. Utilitário inline mantém o visual perto do componente e evita uma folha de estilo global que cresce sem dono.

**O que o README não promete:** não há backend, banco de dados nem conta de usuário listados. Não vou afirmar onde o estado do dia é guardado sem você conferir no código; se sincronizar entre dispositivos é requisito seu, leia o código antes de adotar. O roadmap lista expandir a cobertura de testes, o que é um sinal honesto: trate o projeto como app em evolução, não como biblioteca estável.

## Perguntas frequentes

### Preciso instalar algo para usar?

Não. O app está publicado em https://dailyfocus.moretes.com. Clonar só faz sentido para estudar o código, contribuir ou rodar um fork.

### Ele substitui um gerenciador de tarefas completo?

Não, e não tenta. Ele cobre o dia, não o trimestre. Use junto de onde mora o seu backlog, e traga para o DailyFocus só o que entra no foco de hoje.

### Posso usar o código em outro projeto?

Sim, a licença é MIT. Mantenha o aviso de licença.

### Como contribuo?

Abra uma issue antes de uma mudança grande, como o README pede. PR pequeno e focado entra mais rápido que refatoração ampla sem conversa prévia.

## 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 o seu problema não é falta de lista, é excesso dela: você sabe o que precisa fazer, mas o dia se dissolve em troca de contexto. Ele funciona melhor para quem aceita a restrição de um foco por dia e quer medir o dia em sessões, não em sensação. Se você precisa de projetos, colaboração em equipe ou sincronização garantida entre dispositivos, este não é o app, e o README não promete nada disso. Para quem estuda Next.js, o repositório é um exemplo útil exatamente pelo tamanho: uma aplicação pequena, tipada e em produção, cujo escopo cabe numa leitura de tarde.

## Links

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