No description
  • Rust 64%
  • HTML 30.6%
  • Python 5.4%
Find a file
Lucca Pellegrini 391a190e16
Merge branches 'devel' and 'docs' into master
- devel: Final implementation features and improvements
- docs: Documentation normalization and updates
  - Renamed TP1.md to requisitos.md
  - Updated test documentation
  - Added complete use case descriptions
  - Fixed cross-references and test counts
2026-06-09 17:19:30 -03:00
completions feat(completion): zsh completion function with dynamic IDs and tags 2026-06-09 15:04:26 -03:00
crates feat(completion): daemon-backed completion data + hidden __complete subcommand 2026-06-09 15:02:39 -03:00
docs docs: normalize filenames and update documentation 2026-06-09 17:18:44 -03:00
utils feat(dashboard): change stats collection and display, add generator script 2026-06-07 14:49:47 -03:00
Videos chore: adicionar pasta Videos para demonstrações dos TPs 2026-06-08 11:44:49 -03:00
.gitignore chore: atualizar .gitignore para projeto Rust completo 2026-06-08 11:44:53 -03:00
Cargo.lock feat(cli): add pretty-printing with ANSI colors, emojis, and Unicode formatting 2026-06-09 14:08:23 -03:00
Cargo.toml feat(cli): add pretty-printing with ANSI colors, emojis, and Unicode formatting 2026-06-09 14:08:23 -03:00
LICENSE chore(docs): add LICENSE 2026-04-05 23:48:27 -03:00
README.md docs: normalize filenames and update documentation 2026-06-09 17:18:44 -03:00

healthctl

Ferramenta CLI para rastreamento de saúde pessoal - Contribuindo para o ODS 3 (Saúde e Bem-Estar)

Sobre o Projeto

O healthctl é uma solução de software desenvolvida como trabalho prático da disciplina de Engenharia de Software, abordando o Objetivo de Desenvolvimento Sustentável 3 (ODS 3) - Saúde e Bem-Estar.

A aplicação permite que usuários registrem e acompanhem métricas de saúde pessoal através de uma interface de linha de comando (CLI) eficiente e um dashboard visual, promovendo hábitos saudáveis e autocuidado.

Tecnologias

  • Linguagem: Rust (Edition 2024)
  • CLI: Clap
  • Persistência: SQLite (via SQLx)
  • IPC: Unix Domain Sockets
  • Dashboard: Tauri
  • Licença: GPL-2.0-or-later

Instalação

# Clonar o repositório
git clone https://github.com/lucca-pellegrini/healthctl.git
cd healthctl

# Compilar
cargo build --release

# Executar
./target/release/healthctl --help

Uso Básico

# Registrar uma corrida
healthctl add activity run --duration 30m --distance 5km --calories 300

# Registrar hidratação
healthctl add hydration 500ml

# Registrar sono
healthctl add sleep --start "yesterday 23:00" --end "today 07:00"

# Ver status do dia
healthctl status

# Listar eventos da semana
healthctl list --week

# Gerar relatório
healthctl report week

Completação no Shell (zsh)

O healthctl inclui uma função de completação para zsh em completions/_healthctl. Além de completar subcomandos e flags, ela consulta o daemon em tempo real para sugerir:

  • IDs de eventos (em show, edit, remove/rm, clone), em ordem cronológica (mais recentes primeiro) e anotados com o tipo, a data e as tags do evento — assim como git show <TAB> anota commits.
  • Tags (em add --tag, list --tag, clone --tag), ordenadas da mais recente para a mais antiga (limitadas às ~30 mais recentes).

Para instalar:

# Copie a função para um diretório no seu $fpath
mkdir -p ~/.zfunc
cp completions/_healthctl ~/.zfunc/

# Em ~/.zshrc, *antes* de `compinit`:
fpath=(~/.zfunc $fpath)
autoload -Uz compinit && compinit

As sugestões dinâmicas (IDs e tags) aparecem apenas quando o daemon já está em execução; caso contrário, a completação simplesmente não oferece esses candidatos (sem erros e sem iniciar o daemon).

Estrutura do Projeto

healthctl/
├── crates/
│   ├── healthctl/          # CLI principal
│   ├── healthctl-daemon/   # Daemon com SQLite
│   ├── healthctl-lib/      # Biblioteca compartilhada
│   └── healthctl-dashboard/# Dashboard Tauri
├── completions/            # Completação de shell (zsh)
├── docs/                   # Documentação do projeto
│   ├── requisitos.md      # Requisitos e casos de uso
│   ├── arquitetura.md     # Arquitetura C4
│   └── testes.md          # Plano de testes
└── Videos/                 # Vídeos de demonstração

Documentação

A documentação completa do projeto está disponível na pasta docs/:

Licença

Este projeto está licenciado sob a GPL-2.0-or-later. Veja o arquivo LICENSE para mais detalhes.

Autor

Desenvolvido como trabalho prático de Engenharia de Software.