TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Um gerenciador semanal de tarefas simples e intuitivo, feito com React e TypeScript, desenvolvido com o BMAD Method e Spec-Driven Development (SDD) — da descoberta do problema até a implementação. ✅ Status do projeto: concluído — 7 épicos e 17 histórias entregues, publicado no GitHub Pages. Os dados ficam só no navegador de quem usa. O TaskFlow surgiu para resolver um problema simples: tarefas de trabalho, estudos e vida pessoal acabam espalhadas entre anotações, mensagens e vários aplicativos.README 전문 보기 ↗
🔗 Acesse o app: b3bel23.github.io/taskflow
Um gerenciador semanal de tarefas simples e intuitivo, feito com React e TypeScript, desenvolvido com o BMAD Method e Spec-Driven Development (SDD) — da descoberta do problema até a implementação.
✅ Status do projeto: concluído — 7 épicos e 17 histórias entregues, publicado no GitHub Pages. Os dados ficam só no navegador de quem usa.
O TaskFlow surgiu para resolver um problema simples: tarefas de trabalho, estudos e vida pessoal acabam espalhadas entre anotações, mensagens e vários aplicativos.
A ideia é oferecer uma visão semanal única e centralizada: você vê hoje e os próximos seis dias lado a lado e organiza tarefas por dia, horário, prioridade e estado de progresso, sem a complexidade de ferramentas de gerenciamento de projetos.
Além de ser uma aplicação funcional, o projeto é um estudo prático de desenvolvimento assistido por IA com BMAD Method + Spec-Driven Development: em vez de gerar a aplicação a partir de um prompt, ele passou por brief, PRD, UX, arquitetura, especificações e épicos antes de qualquer código.
Espaço para pegar, setas para escolher o dia e Espaço para soltar (Esc cancela). A data também pode ser mudada pelo formulário de edição.localStorage, incluindo migração automática de dados salvos no formato antigo (por dia da semana) para o formato atual (por data). Com duas abas abertas, as alterações de uma aparecem na outra sem recarregar.O app não tem cadastro nem login e funciona 100% no navegador, sem backend.
| Área | Tecnologia |
|---|---|
| Interface | React 19, TypeScript 6 |
| Build | Vite 8 |
| Estado | React Context + useReducer |
| Arrastar e soltar | @dnd-kit/core |
| Estilo | CSS Modules + CSS Custom Properties (tokens de design) |
| Persistência | localStorage |
| Testes | Vitest 5, Testing Library, jsdom (unitários) · Playwright (E2E em navegador real) |
| Deploy | GitHub Actions + GitHub Pages |
Simples e proporcional ao escopo — sem Redux, sem banco externo e sem API.
src/
├── components/ Interface: WeekView, DayColumn, TaskCard, TaskModal,
│ PriorityTag, StateIndicator, ThemeToggle, Header…
├── state/ Contextos, reducers e ações (useTaskActions), além de
│ funções puras: seletores e regra de rollover
├── storage/ Único lugar que toca o localStorage (tarefas e tema)
├── constants/ Datas: janela de 7 dias, formatação, conversão ISO
├── types/ Tipos compartilhados (Task, Priority, TaskState…)
└── styles/ Tokens de design (cores, espaçamento, tipografia)
e2e/ Testes de ponta a ponta (Playwright)
Decisões principais:
src/storage/ acessa localStorage, e só o ThemeContext escreve o atributo de tema — regras conferidas por architecture.test.ts, que lê o código como AST (comentários não contam; atalhos como window['local' + 'Storage'] são detectados).storage do navegador, então uma aba adota o que a outra salvou (um valor corrompido escrito por outra aba nunca apaga o que já está na tela). Edição simultânea do mesmo item em duas abas: vale a última gravação.HH:mm é recusado na escrita, porque a leitura rejeitaria o dado no próximo carregamento.YYYY-MM-DD), nunca via UTC, para evitar o clássico erro de "um dia a menos" em fusos negativos.taskflow:tasks (envelope { schemaVersion: 2, tasks: [...] })
taskflow:theme
Unitários e de componentes — cerca de 400 testes (Vitest + Testing Library) cobrindo estado, armazenamento, componentes e a integração da semana: rollover, migração de dados, virada de dia com relógio simulado, ordenação por horário, persistência com falha de escrita, sincronização entre abas e as regras de arquitetura (checadas por análise da AST do código).
Ponta a ponta (E2E) — 60 testes em Chrome real (Playwright) contra o app buildado, com fuso e relógio fixos: janela de 7 dias e sua virada de dia, rollover, migração v1→v2, dados corrompidos, criar/editar/excluir, estado e prioridade, foco do modal, falha de escrita, persistência, duas abas, arraste com mouse e por teclado (inclusive interrompido por Esc, pointercancel e troca de aba), fusos e horário de verão, e o layout responsivo.
npm run test # unitários (Vitest)
npm run test:e2e # E2E (Playwright): faz o build e sobe o app sozinho
npm run build # checagem de tipos (tsc, inclui os testes E2E) + build de produção
Na primeira vez, o E2E precisa de um navegador: npx playwright install chromium. Se você já tem o Google Chrome, dá para usá-lo sem baixar nada com PW_CHANNEL=chrome npm run test:e2e (PowerShell: $env:PW_CHANNEL='chrome'; npm run test:e2e).
Dica: em pastas sincronizadas (como OneDrive), o Vitest pode perder arquivos por timeout de worker. Use
npx vitest run --maxWorkers=1e confira a contagem de arquivos e testes.
Não coberto por teste automatizado: o gesto de arrastar com o dedo numa tela de toque real e o uso com leitor de tela — só verificação manual em aparelho.
Requer Node.js 22.12 ou superior (exigência do Vite 8 e do Vitest 5).
git clone https://github.com/b3bel23/taskflow.git
cd taskflow
npm install
npm run dev
O app abre em http://localhost:5173/taskflow/.
O site é publicado automaticamente: a cada push na branch main, o workflow deploy.yml roda os testes unitários (npm run test), o build (npm run build) e os testes E2E; só se tudo passar a pasta dist é publicada no GitHub Pages. Se qualquer etapa falhar, nada é publicado. O base do Vite está configurado como /taskflow/, o subcaminho do repositório.
Para publicar seu próprio fork: em Settings → Pages, escolha Source: GitHub Actions e faça um push na main.
O TaskFlow seguiu um fluxo estruturado de BMAD Method + SDD. A implementação só começou depois de o problema, os requisitos, a experiência do usuário e a arquitetura terem sido definidos e validados:
Product Brief → PRD → UX Design → Arquitetura → Épicos e Histórias
→ Sprint Planning → Implementação (história por história)
→ Code review → Retrospectiva
Um resumo curto do que o app deve fazer está em REQUIREMENTS.md. Toda a documentação está versionada em _bmad-output/:
sprint-status.yaml com o andamento de todas as histórias| Épico | Tema |
|---|---|
| 1 | Fundação: semana, persistência e tema claro/escuro |
| 2 | Gerenciamento de tarefas: criar, editar e excluir |
| 3 | Progresso: estado da tarefa e destaque das concluídas |
| 4 | Mover tarefa entre dias por arraste (mouse e teclado) |
| 5 | Data real, janela dinâmica, migração de dados e rollover |
| 6 | Organização por horário |
| 7 | Prioridade como atributo visual (tag clicável) |
Mesmo em versões futuras, a proposta é continuar focado em organização pessoal, e não virar uma ferramenta de gerenciamento de equipes.
Distribuído sob a licença MIT — veja o arquivo LICENSE.
Desenvolvido como um projeto prático utilizando BMAD Method + Spec-Driven Development (SDD).