diff --git a/.gitignore b/.gitignore index bd7ebb0..b5ad5ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,18 @@ +# Rust target/ +**/*.rs.bk +*.pdb + +# IDE / Editor +.vscode/ +.idea/ +*.swp +*.swo +*~ +.DS_Store + +# Environment +.env + +# Database (runtime) *.db diff --git a/README.md b/README.md new file mode 100644 index 0000000..b2ae8d1 --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# task_app + +Aplicação TUI de gestão de tarefas com sincronização Google Tasks. + +## Funcionalidades + +- Listas e tarefas do Google Tasks num terminal +- Offline-first: dados guardados localmente em SQLite +- Sincronização bidirecional automática em background +- Calendário com eventos do Google Calendar +- Reordenação de tarefas com persistência +- Operações CRUD em listas e tarefas +- Seleção múltipla e ações em lote + +## Stack + +- **UI:** ratatui + crossterm +- **Async:** tokio +- **DB:** rusqlite (SQLite) +- **Auth:** yup-oauth2 (OAuth 2.0) +- **API:** reqwest (Google Tasks + Calendar) + +## Requisitos + +- Rust (edition 2021) +- Conta Google com Tasks ativado +- `client_secret.json` da Google Cloud Console + +## Configuração + +Coloca o `client_secret.json` num dos seguintes locais: + +- `$GOOGLE_CLIENT_SECRET_FILE` +- `~/.config/task_app/client_secret.json` +- `./client_secret.json` (diretório atual) + +## Uso + +```bash +cargo run +``` + +### Atalhos + +| Tecla | Ação | +|---|---| +| `Tab` | Navegar entre painéis | +| `↑/↓` | Navegar dentro do painel | +| `Ctrl+←/→` | Mudar de lista | +| `Alt+↑/↓` | Reordenar tarefa | +| `n` | Nova tarefa / lista | +| `e` | Editar tarefa | +| `d` | Apagar (Enter confirma) | +| `Enter` | Completar/descompletar tarefa | +| `t` | Definir data (d=today, t=tomorrow, w=week, m=month) | +| `Ctrl+r` | Sincronização forçada | +| `q` | Sair |