Kanban local para projetos, tarefas e ideias. A fonte de verdade fica em ~/Documents/PROJECTUS, em JSON para estrutura e Markdown/anexos para conteúdo. A interface funciona no desktop Tauri para macOS e no navegador privado pela sua tailnet.
- React, Vite, TypeScript, Motion, Lucide, dnd-kit e MDXEditor.
- Rust, Axum, arquivos atômicos, SSE e Cloudflare R2 via API S3.
- Tauri v2 para a janela macOS.
launchdpara manter o backend ativo no login.
As regras estritas da UI (tokens, tipografia, cores, BEM, lint, checklist de nova feature) estão em GUIDELINES.md. Leia antes de mexer em qualquer .tsx ou .css.
pnpm install
cargo run -p projectus-server
pnpm devAbra http://localhost:5173. O Vite encaminha /api e /conteudo ao backend em 127.0.0.1:4387.
Para testar o build servido diretamente pelo backend:
pnpm build
cargo run -p projectus-serverAbra http://127.0.0.1:4387.
O app Tauri inicia a API local enquanto sua janela estiver aberta. Para acesso pelo celular, snapshots automáticos e uso mesmo com a janela fechada, instale o servidor permanente no Mac:
chmod +x scripts/instalar-autostart.sh scripts/remover-autostart.sh
./scripts/instalar-autostart.sh
pnpm desktop:devO script compila projectus-server em release e registra ~/Library/LaunchAgents/com.projectus.server.plist com RunAtLoad e KeepAlive. Quando o daemon já estiver ativo, o app desktop apenas consome essa mesma API, sem iniciar outro scheduler.
Para criar o aplicativo e o instalador:
pnpm desktop:buildOs bundles macOS são gerados em target/release/bundle/macos e target/release/bundle/dmg.
Estilo clássico macOS — gera o .dmg, abre o Finder com a janela "arraste para Applications" pronta:
pnpm instalar
# ou diretamente:
./scripts/instalar.shO script compila em release (primeira vez demora alguns minutos), gera PROJECTUS_<versão>_aarch64.dmg em target/release/bundle/dmg/ e abre no Finder. Layout da janela: PROJECTUS.app à esquerda, atalho para Applications à direita. Arraste o ícone, ejete o DMG, abra pelo Launchpad.
Flags:
--apenas-buildsó compila, não abre o Finder.--daemoninstala também o daemon launchd após o build.
Os dados continuam em ~/Documents/PROJECTUS. Todas as personalizações (cor principal, colunas, tags, paleta de cores) ficam em config.json e fazem parte dos snapshots R2 — portanto sincronizam entre máquinas. Apenas as credenciais R2 (access + secret key) ficam no Keychain local e precisam ser refixadas em cada máquina.
Com o daemon ativo e a SPA compilada em apps/web/dist, publique apenas dentro da tailnet:
tailscale serve --bg http://127.0.0.1:4387Não há autenticação adicional no v1. Controle o acesso pelas ACLs e dispositivos autorizados no Tailscale.
~/Documents/PROJECTUS/
config.json
board.json
history.json
projetos/<slug>-<id8>/
project.json
project.md
history.json
_anexos/
tarefas/<slug>-<id8>/card.md
ideias/
ideas.json
<slug>-<id8>/note.md
Google Drive e iCloud não fazem parte do código. Configure esses clientes para copiar a pasta local se desejar.
Em config, informe endereço S3, bucket e as chaves R2 e use fixar configuração e credenciais. A interface confirma que as chaves estão protegidas no Keychain do macOS sem exibir o segredo. O botão [SAVE] envia uma cópia completa. O daemon também cria um snapshot após 24 horas sem backup.
r2-syncs/
history.json
<timestamp>-<id8>/
PROJECTUS/...
manifest.json
Na restauração, todos os checksums SHA-256 são validados e a pasta atual é preservada como PROJECTUS-recuperacao-<timestamp>-<id8>.
pnpm typecheck
pnpm test
pnpm build
cargo test --workspace