Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
Missões, foco e progresso em um só quadro.
Translation pending
ProductivityGitHub @Gustavo4SouzaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗POC de um app de organização de tarefas (diárias, semanais, anuais) com timer Pomodoro, inspirado no Notion. Objetivo desta etapa: validar a arquitetura multiplataforma (web, desktop e, no futuro, mobile) e deixar o pipeline de DevOps (CI) já configurado desde o início do projeto.
@tasksorg/core, sem nenhuma dependência de UI — é usado tanto pela web quanto pelo desktop.core..github/workflows/ci.yml). Kubernetes entra numa próxima etapa, para orquestrar o deploy dessas imagens.Tudo em JavaScript/TypeScript, como decidido pelo grupo — isso permite compartilhar lógica, tipos e (no futuro) até componentes de UI entre as plataformas.
TasksOrganization/
├── apps/
│ ├── web/ → Next.js (roda no navegador)
│ │ ├── Dockerfile → imagem de PRODUÇÃO (multi-stage)
│ │ └── Dockerfile.dev → imagem de DESENVOLVIMENTO (usada com bind mount)
│ └── desktop/ → Electron (empacota a web/lógica num app nativo)
├── packages/
│ └── core/ → Regras de negócio compartilhadas (tasks + pomodoro)
├── docker-compose.yml → sobe o app web em desenvolvimento (bind mount)
├── .github/workflows/ → pipeline de CI/CD com GitHub Actions
├── turbo.json
├── pnpm-workspace.yaml
└── package.json
Porque o core do projeto é rodar em várias plataformas com o mesmo comportamento. Colocar tudo em um único repositório com pacotes compartilhados evita duplicar regra de negócio (tipos de tarefa, lógica do pomodoro, etc.) em cada plataforma — e o Turborepo garante que só se rebuilda o que mudou.
packages/coreContém, sem nenhuma dependência de React/DOM/Electron:
task.ts — modelo de Task (escopo diário/semanal/anual, status, prioridade) e um TaskStore em memória.pomodoro.ts — uma máquina de estados PomodoroTimer (foco → pausa curta → pausa longa), agnóstica de como o tempo é avançado (quem consome chama tick()).Isso é o que a Web e o Desktop importam e usam da mesma forma — é a prova de conceito de que dá pra compartilhar lógica de verdade entre as plataformas.
Pré-requisitos: Node 20+ e pnpm (corepack enable já resolve).
Overrides de segurança do pnpm. O projeto fixa o pnpm 9.12 (
packageManager), que lê os overrides depackage.json(pnpm.overrides). O pnpm 10+ lê só os depnpm-workspace.yamle avisa que ignorou opackage.json: com um pnpm global mais novo, esse aviso é esperado e inofensivo. Ao alterar um override, mude os dois arquivos; o CI confere comnode scripts/check-pnpm-overrides.mjs.
pnpm install
# roda tudo (lint, typecheck, test, build) em todos os pacotes
pnpm build
pnpm test
pnpm lint
pnpm typecheck
# desenvolvimento
pnpm --filter @tasksorg/web dev # Next.js em http://localhost:3000
pnpm --filter @tasksorg/desktop dev # builda e abre a janela do Electron
pnpm --filter @tasksorg/web exec playwright install chromium # uma vez
# só as telas (sem API): o teste de sincronização é pulado
pnpm test:e2e
# suíte completa, com API e PostgreSQL
docker compose up -d --wait postgres
export DATABASE_URL=postgresql://tasksorg:<senha do .env>@localhost:<porta>/tasksorg_test
export E2E_API_URL=http://localhost:3001 NEXT_PUBLIC_API_URL=http://localhost:3001
pnpm test:e2e
pnpm test:e2e builda web e API; com E2E_API_URL definido, o Playwright
sobe a API sozinho e reaproveita uma que já esteja rodando (como no CI).NEXT_PUBLIC_API_URL entra no build do web: sem ela, o teste de
sincronização falha mesmo com a API no ar.docker compose port postgres 5432. O banco
tasksorg_test é criado uma vez com
docker compose exec postgres psql -U tasksorg -d tasksorg -c "CREATE DATABASE tasksorg_test".packages/core com 13 testes unitários passando (tarefas + pomodoro).apps/web builda em modo produção (next build) e serve a página de
verdade (testado localmente com next start).apps/desktop compila (tsc + bundle do renderer com esbuild) e a
janela do Electron sobe sem erros de JS (validado em modo headless com
Xvfb, que é como muitos CIs testam Electron; no Windows/macOS de vocês
vai abrir normalmente com interface gráfica).docker-compose.yml tem sintaxe validada (docker compose config).O app web roda em container de duas formas diferentes:
apps/web/Dockerfile.dev + docker-compose.yml fazem um bind mount da
pasta do projeto pra dentro do container: você edita o código no VSCode,
normalmente, e o container "enxerga" a mudança na hora — sem rebuildar nada.
This is the beginning of the README. Read the rest at the original. Read the full README ↗