Skip to content

lbkeppler/minio-console

Repository files navigation

MinIO Console

MinIO Console

Um console desktop pra gerenciar seus servidores MinIO sem dor de cabeça.

Latest Release Platforms Built with License: AGPL-3.0


Por que esse projeto existe

O console web oficial do MinIO é legal, mas rodar uma app nativa no desktop tem umas vantagens que fazem diferença no dia a dia:

  • Zero browser, zero porta aberta — abre como qualquer outro programa
  • Credenciais seguras no keychain do SO — nada de senha salva em texto puro
  • Múltiplos servidores num lugar só — troca de perfil com um clique
  • Tudo funciona offline — menos a parte que precisa falar com o servidor, óbvio 😄

A ideia é juntar o poder do mc CLI com uma interface gráfica que não trava, não precisa de conexão com a internet pra carregar, e entende quem usa isso todo dia.

O que tem dentro

Feature O que faz
Dashboard Visão geral do servidor — status, capacidade, uptime, tudo em tempo real
Buckets Cria, apaga, configura versioning e política de acesso (privado / download / público — bem simples)
Objects Navega pelas pastas, faz upload, download, preview de arquivo, share link, tudo
Users & Groups Gerencia IAM sem precisar decorar comando nenhum
Policies Cria, edita e atribui policies visualmente
Monitoring Métricas do servidor em tempo real
MC Terminal Terminal integrado com autocomplete (Tab ou vírgula pra ver todos os comandos)
Multi-perfil Conecta em vários MinIOs e alterna rapidinho
Tradução Português, Inglês e Espanhol

Download

Pega o instalador pra sua plataforma na página de releases:

  • Windows.msi ou .exe setup
  • macOS.dmg universal (roda em Intel e Apple Silicon, mesmo arquivo)
  • Linux.deb, .rpm ou .AppImage

💡 O binário do mc já vem junto no instalador. Não precisa instalar nada além da app.

Quero rodar localmente

Você vai precisar de:

Depois é só:

git clone https://github.com/lbkeppler/minio-console.git
cd minio-console
npm install

# Baixa o mc pra sua plataforma (dev)
./scripts/download-mc.sh   # Linux/macOS
# ou
.\scripts\download-mc.ps1  # Windows

# Roda em modo dev (hot-reload no front e no back)
npm run tauri dev

A janela abre sozinha. Na primeira vez, vai em Settings → Add Profile pra configurar seu servidor.

Stack

Escolhi as ferramentas pensando em performance, tamanho de instalador e segurança:

Camada Tecnologia
Framework Tauri 2 — web view nativa + backend Rust
Frontend React 18, TypeScript strict, Tailwind CSS 4, Radix UI
Estado Zustand
Backend Rust (aws-sdk-s3, reqwest, tokio)
Credenciais keyring-rs — usa o keychain nativo do SO
Lint/Format Biome (front), clippy + rustfmt (back)
Build Vite (front), Cargo (back)

Estrutura do projeto

minio-console/
├── src/                    # Frontend React
│   ├── components/ui/      # Componentes compartilhados
│   ├── pages/              # Uma pasta por feature
│   ├── stores/             # Estados Zustand
│   ├── lib/                # Wrappers do Tauri invoke()
│   └── i18n/               # Traduções (en, es, pt-BR)
├── src-tauri/              # Backend Rust
│   └── src/
│       ├── commands/       # Handlers dos invokes
│       ├── s3/             # Cliente S3
│       ├── admin/          # API admin do MinIO
│       ├── mc/             # Runner do mc CLI
│       ├── config/         # Configuração da app
│       └── models/         # Tipos compartilhados
├── scripts/                # Scripts auxiliares (download do mc)
└── docs/                   # Specs e design docs

Comandos úteis

npm run tauri dev          # Desenvolvimento (front + back com hot-reload)
npm run tauri build        # Build de produção pro seu SO
npm run dev                # Só o front (Vite em :1420)
cargo test                 # Testes do backend
npx biome check            # Lint + format do front
cargo clippy               # Lint do Rust

CI/CD

Todo push de tag v* dispara o workflow de release — builda Windows, macOS Universal e Linux em paralelo no GitHub Actions e publica um release draft com todos os instaladores. Eu revisar e liberar.

Veja .github/workflows/release.yml.

Convenções que sigo no projeto

  • Commits: Conventional Commits (feat:, fix:, docs:, etc.)
  • Idioma do código: inglês sempre. A UI é traduzida.
  • IPC: front chama back via invoke(). Tudo async, tudo retorna Result<T, String>.
  • Credenciais: nunca em plaintext — sempre via keychain do SO.

Contribuindo

Achou um bug, tem uma ideia legal ou só quer bater um papo sobre o projeto? Abre uma issue ou manda um PR.

License

AGPL-3.0 — GNU Affero General Public License v3.0.

Se você usar esse código em um serviço acessível pela rede, o código-fonte (incluindo modificações) precisa ficar disponível pros usuários. Uso pessoal, comercial, fork e modificação são liberados, desde que respeitando os termos da licença.


Feito com ☕ e muita paciência usando Rust + React + Tauri

About

Desktop app nativa pra gerenciar servidores MinIO. Multi-perfil, terminal mc integrado, credenciais seguras no keychain. Tauri 2 + React + Rust. Windows, macOS e Linux.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages