Outlook Fusion é uma ferramenta de linha de comando poderosa e eficiente para desenvolvedores que desejam gerenciar seus calendários do Outlook diretamente do terminal.
Features • Arquitetura • Instalação • Configuração • Uso • Licença
- Performance: Core em Rust para máxima velocidade
- Interface Intuitiva: TUI (Terminal User Interface) em Python
- Seguro: Integração direta com Microsoft Graph API
- Gestão Completa: Crie e gerencie eventos no Outlook Calendar
- Developer-First: Perfeito para workflows de terminal
┌─────────────────────────────────────────────┐
│ │
│ Usuário │
│ │
└──────────────────┬──────────────────────────┘
│
│ Interação via Terminal
│
┌──────────▼─────────────┐
│ │
│ Python TUI │
│ (src/TUI/) │
│ │
│ • Interface amigável │
│ • Validação de dados │
│ • Menus interativos │
│ │
└──────────┬─────────────┘
│
│ Chamadas de Processo
│
┌──────────▼─────────────┐
│ │
│ Rust Core │
│ (src/core/) │
│ │
│ • API Controller │
│ • Calendar Service │
│ • Validação de datas │
│ │
└──────────┬─────────────┘
│
│ HTTP Requests (Bearer Token)
│
┌──────────▼─────────────┐
│ │
│ Microsoft Graph │
│ API │
│ │
│ • Autenticação OAuth │
│ • Outlook Calendar │
│ │
└────────────────────────┘
O núcleo da aplicação, responsável por:
- Comunicação direta com a Microsoft Graph API
- Parsing de argumentos CLI com
clap - Criação e gerenciamento de eventos no calendário
- Validação de datas e fusos horários
Interface de usuário no terminal que:
- Fornece uma experiência interativa e amigável
- Gerencia módulos e dependências
- Chama o core Rust com os parâmetros corretos
- Rust (1.70+): Instalar Rust
- Python (3.8+): Instalar Python
- Cargo: Incluído com Rust
- Conta Microsoft: Com acesso ao Outlook
git clone https://github.com/seu-usuario/OutlookFusion.git
cd OutlookFusioncd src/core
cargo build --releasecd ../TUI
pip install -r requirements/requirements.txtPara usar o Outlook Fusion, você precisa de um token de acesso da Microsoft Graph API:
-
Acesse o Microsoft Graph Explorer
-
Faça login com sua conta Microsoft/Office 365
-
Obtenha o Access Token:
- Clique no seu perfil no canto superior direito
- Selecione "Access token"
- Copie o token gerado
Importante: Este token expira após algum tempo. Para uso em produção, configure um Azure App Registration para obter tokens de longa duração.
Crie um arquivo .env no diretório src/core/src/:
cd src/core/src
touch .envAdicione seu token ao arquivo:
OUTLOOK_TOKEN=seu_token_aquiEstrutura esperada:
OutlookFusion/
└── src/
└── core/
└── src/
└── .env ← Seu arquivo aqui
Segurança: Nunca commite o arquivo
.envno git. Ele já está no.gitignore.
cd src/core
cargo run -- \
--subject "Reunião de Planning" \
--descr "Discutir sprint goals" \
--content "Participantes: Time Dev" \
--date-start "2026-02-10T14:00:00-03:00" \
--date-end "2026-02-10T15:00:00-03:00" \
--timezone "America/Sao_Paulo" \
--location "Online"cd src/TUI
python index.py| Parâmetro | Flag | Descrição | Obrigatório |
|---|---|---|---|
| Subject | -s, --subject |
Assunto do evento | Sim |
| Description | -d, --descr |
Descrição detalhada | Não |
| Content | -c, --content |
Conteúdo do evento | Sim |
| Date Start | --date-start |
Data/hora início (ISO8601) | Sim |
| Date End | --date-end |
Data/hora fim (ISO8601) | Sim |
| Timezone | -t, --timezone |
Fuso horário (default: America/Sao_Paulo) | Não |
| Location | -l, --location |
Local (default: Online) | Não |
# Com timezone explícito
--date-start "2026-02-15T09:00:00-03:00"
# UTC
--date-start "2026-02-15T12:00:00Z"
# Outros formatos ISO8601
--date-start "2026-02-15T09:00:00-03:00"OutlookFusion/
├── src/
│ ├── core/ # Rust backend
│ │ ├── src/
│ │ │ ├── main.rs # Entry point
│ │ │ ├── api_controller.rs
│ │ │ └── services/
│ │ │ └── calendar_service.rs
│ │ └── Cargo.toml
│ │
│ └── TUI/ # Python frontend
│ ├── index.py # Entry point
│ ├── data.py
│ ├── tool.py
│ └── requirements/
│ └── requirements.txt
│
├── README.md
└── LICENSE
Rust Core:
clap- Argument parsingreqwest- HTTP clienttokio- Async runtimeserde_json- JSON serializationchrono- Date/time handlingdotenvy- Environment variables
Python TUI:
asyncio- Async operations- Standard library modules
Contribuições são bem-vindas! Sinta-se livre para:
- Fork o projeto
- Criar uma branch (
git checkout -b feature/NovaFeature) - Commit suas mudanças (
git commit -m 'Add: Nova feature') - Push para a branch (
git push origin feature/NovaFeature) - Abrir um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Verifique se o arquivo
.envexiste emsrc/core/src/.env - Confirme que a variável está definida:
OUTLOOK_TOKEN=seu_token
- Seu token pode ter expirado. Gere um novo no Graph Explorer
- Verifique se sua conta tem permissões para criar eventos no calendário
cargo clean
cargo build --releaseFeito para desenvolvedores que vivem no terminal
"E tudo o que fizerem, seja em palavra ou em ação, façam em nome do Senhor Jesus."
— Colossenses 3:17