Skip to content

luanluciano93/madi-stack

Repository files navigation

🚀 MadiStack

Uma alternativa moderna e open-source ao USBWebserver para Windows.

MadiStack reúne Nginx, MariaDB, PHP e phpMyAdmin em uma GUI portátil — é só escolher as portas, clicar em iniciar e colocar seu site na pasta www. Auto-updater integrado mantém todos os componentes sempre atualizados.

License: MIT Platform Built with Rust Built with Tauri GitHub release

Download · Funcionalidades · Início Rápido · Screenshots · FAQ


✨ Por que MadiStack?

Cansado do USBWebserver travado no Apache 2.2 e em versões antigas do PHP? Acha o XAMPP pesado demais? O MadiStack entrega uma stack moderna sem complicação:

  • 🔄 Sempre atualizado — updates com um clique para cada componente, direto das fontes oficiais
  • 🪶 Leve — sem instalar serviço, sem mexer no registro, sem inchaço
  • 📦 Realmente portátil — roda de qualquer pasta, inclusive de pen drive
  • 🎯 Focado — sem módulos que você não usa, sem UI poluída, só o essencial
  • 🆓 Open source — licença MIT, auditável, com contribuições bem-vindas

🎯 Funcionalidades

Componentes da Stack

  • Nginx (mainline mais recente) — servidor web rápido e moderno
  • MariaDB (stable mais recente) — substituto drop-in do MySQL, com melhor performance
  • PHP (stable mais recente, Non-Thread Safe) — com FastCGI via php-cgi.exe
  • phpMyAdmin (stable mais recente) — gerenciamento de banco familiar

Funcionalidades da GUI

  • ⚡ Start/stop de cada serviço com um clique — shutdown gracioso (nginx -s quit, mysqladmin shutdown)
  • 🔌 Portas configuráveis + detecção de conflito ("porta 3306 em uso por mysqld_usbwv8.exe — pare o USBWebserver")
  • 📂 Atalhos: abrir phpMyAdmin no navegador padrão, abrir sites .test
  • 📊 Visualizador de logs em tempo real com seleção + botão copiar
  • 🌐 Virtual hosts — cada subpasta de www/ vira <nome>.test com nginx + hosts + reload automáticos
  • 🔒 HTTPS local via mkcert embutido — uma UAC pra adicionar o CA raiz, certificados válidos pra sempre
  • 🔥 Firewall do Windows em lote (um único UAC pra nginx + mysqld + php-cgi)
  • 📢 System tray — roda discreto em segundo plano
  • 🔄 Updater inteligente — download com SHA256, retry em erro transiente, smoke test pós-swap, rollback automático se o serviço não subir

Feito para Desenvolvedores

  • 🔄 Auto-update de todos os componentes direto das fontes oficiais
  • 🧩 Troca de versão do PHP sem reinstalar
  • 📝 Edite php.ini, nginx.conf, my.ini pela GUI
  • 🚦 Detecção de conflito de portas antes de iniciar serviços
  • 🔥 Gerenciamento automático das regras do Firewall do Windows

📥 Download

Pegue a versão mais recente na página de Releases. Três formatos, escolha o que se encaixa no seu fluxo:

Arquivo Tamanho Quando usar
MadiStack_X.Y.Z_x64-setup.exe ~4 MB Instalador NSIS — cria atalhos no menu Iniciar e registra desinstalador. Recomendado pra uso diário.
MadiStack_X.Y.Z_x64_en-US.msi ~6 MB Instalador MSI — pra deploy corporativo via políticas de grupo ou Intune.
MadiStack_vX.Y.Z_x64-portable.zip ~5 MB Portátil — descompacta + roda. Dois executáveis, zero instalação. Ideal para pen drive ou testar sem sujar a máquina.

Requisitos: Windows 10 ou superior x64 + WebView2 Runtime (já vem no Windows 11, instalação automática no Windows 10).

SmartScreen: o binário ainda não é assinado digitalmente. Na primeira execução o Windows pode mostrar o aviso "O Windows protegeu o seu PC" — clique em Mais informações → Executar assim mesmo. Code signing com certificado EV está planejado para o v1.0.

🚀 Início Rápido

  1. Baixe um dos arquivos acima da página de Releases.
  2. Se escolheu o portátil: extraia em qualquer pasta. Se escolheu o instalador: execute e siga o wizard.
  3. Abra o MadiStack.exe.
  4. Na aba Geral, clique em Baixar tudo — Nginx, PHP, MariaDB e phpMyAdmin são baixados das fontes oficiais (~2 minutos, só uma vez).
  5. Clique em Iniciar nos três serviços.
  6. Coloque seu projeto em www/meusite/ e ative o site na aba Sites — ele fica acessível em http://meusite.test.
  7. Pronto. 🎉

Dica: se seu projeto roda direto no root, jogue os arquivos em www/ e acesse http://localhost:<porta> (porta configurável na aba Configurações, padrão 80).

📸 Screenshots

Aba Geral — status dos serviços
Aba Geral: start/stop com PID e porta em uso, painel de eventos no rodapé

Aba Sites — virtual hosts
Aba Sites: cada subpasta de www/ vira um <nome>.test, com HTTPS local opcional via mkcert

Aba Configurações
Aba Configurações: portas, idioma (13 línguas — PT-BR, EN, ES, NL, DE, IT, PL, RU, ZH-CN, TR, HU, LV, RO) e tema (escuro / claro)

Aba Atualizações
Aba Atualizações: versões instaladas vs. últimas publicadas pelos projetos oficiais

Aba Firewall
Aba Firewall: regras inbound para nginx, MariaDB e php-cgi, aplicadas em lote com um único prompt de UAC

🗺 Roadmap

  • Stack principal: Nginx + MariaDB + PHP + phpMyAdmin
  • GUI com start/stop de um clique
  • Configuração de portas + detecção de conflito
  • Auto-updater com smoke test e rollback automático
  • Gerenciador de virtual hosts (subpastas em www/ viram <nome>.test)
  • HTTPS local via mkcert embutido — 1 UAC e certificado válido pra sempre
  • System tray + logs ao vivo com botão copiar
  • Regras de Firewall do Windows via helper elevado (uma UAC só)
  • i18n — 13 idiomas (PT-BR, EN, ES, NL, DE, IT, PL, RU, ZH-CN, TR, HU, LV, RO)
  • Dark mode 🌙 + tutorial na primeira execução (coach-marks em 3 hotspots)
  • Troca de versão do PHP lado-a-lado
  • Redis e Memcached como componentes opcionais
  • Integração com Composer e WP-CLI
  • Backup de bancos MariaDB (dumps gzipados em data/backups/) — restore planejado

🏗 Tech Stack

Por que Rust + Tauri? Binário final ~8 MB, RAM idle < 70 MB, cold start < 250 ms, e segurança de memória em tempo de compilação. Sem runtime pesado, sem Electron, sem surpresas.

🛠 Compilando do Código-Fonte

Pré-requisitos

  • Rust 1.75+ (toolchain stable-x86_64-pc-windows-msvc)
  • Node.js 20+ e pnpm 9+
  • WebView2 Runtime (já presente no Windows 11)
  • Microsoft C++ Build Tools (pacote "Desktop development with C++" do Visual Studio 2022)

Build

# Clone o repositório
git clone https://github.com/luanluciano93/madi-stack.git
cd MadiStack

# Instale o CLI do Tauri (uma vez por máquina)
cargo install tauri-cli --version "^2.0" --locked

# Instale as dependências do frontend
cd frontend && pnpm install && cd ..

# Rode em modo de desenvolvimento (hot reload Rust + Svelte)
cargo tauri dev

# Gere o binário de produção
cargo tauri build

Binários gerados em target/release/:

Arquivo Uso
madistack.exe Binário portátil principal
madistack-system-helper.exe Helper elevado (UAC) — deve ficar no mesmo diretório do principal
bundle/nsis/MadiStack_*.exe Instalador NSIS (inclui ambos os binários)
bundle/msi/MadiStack_*.msi Instalador MSI

Antes de cargo tauri build, rode cargo build --release -p madistack-system-helper para que o helper seja incluído no bundle.

🤝 Contribuindo

Contribuições são muito bem-vindas! Seja um bug report, sugestão de feature ou pull request — tudo ajuda.

  1. Faça um fork do projeto
  2. Crie sua branch de feature (git checkout -b feature/minha-feature)
  3. Commit suas mudanças (git commit -m 'Adiciona minha feature')
  4. Faça push para a branch (git push origin feature/minha-feature)
  5. Abra um Pull Request

🆘 Problemas?

Erros comuns (porta ocupada, VC++ Redist, antivírus, SmartScreen, hosts que não resolve, certificado HTTPS, etc) estão documentados em docs/troubleshooting.md com solução passo-a-passo.

❓ FAQ

Qual a diferença do MadiStack pro XAMPP, Laragon ou WAMP?
  • XAMPP usa Apache e é bastante pesado. MadiStack usa Nginx e é leve.
  • Laragon é closed-source. MadiStack é MIT, totalmente aberto.
  • WAMP não tem uma atualização significativa da UI há anos. MadiStack tem GUI moderna com auto-update para todos os componentes.
Por que Nginx em vez de Apache?

Nginx é mais rápido, consome menos memória, tem configuração mais simples e é o padrão de produção hoje. Se você faz deploy em servidor real, provavelmente vai rodar Nginx lá também.

Por que MariaDB em vez de MySQL?

MariaDB é um substituto drop-in do MySQL, mantido pelo criador original, totalmente open source (MySQL tem complicações de licença da Oracle), e normalmente mais rápido. Seu código não precisa de nenhuma mudança.

Funciona no macOS ou Linux?

Ainda não. MadiStack é Windows-only por enquanto. Usuários Linux já têm gerenciadores de pacote nativos (apt, pacman), e no macOS tem Homebrew e Laravel Herd.

É realmente portátil? Posso rodar de um pen drive?

Sim. MadiStack não mexe no registro, não instala serviços, e guarda todos os dados na própria pasta. Copie a pasta pra onde quiser e continua funcionando.

Posso usar em produção?

Não. MadiStack é uma ferramenta de desenvolvimento. Para produção, use um servidor Linux com Nginx/MariaDB configurados com hardening apropriado.

📄 Licença

MadiStack é distribuído sob a Licença MIT.

Componentes de Terceiros

MadiStack baixa e utiliza os seguintes componentes, cada um com sua própria licença:

Componente Licença Site
Nginx BSD 2-cláusulas nginx.org
MariaDB GPL v2 mariadb.org
PHP PHP License v3.01 php.net
phpMyAdmin GPL v2 phpmyadmin.net

👤 Autor

luanluciano93

🌟 Apoie o Projeto

Se o MadiStack te poupou tempo, considere:

  • ⭐ Dar uma estrela no repositório — ajuda demais!
  • 🐛 Reportar bugs ou sugerir features
  • 🔀 Enviar pull requests
  • 📢 Compartilhar com outros devs

Feito com ❤️ em Araçatuba, São Paulo, Brasil 🇧🇷

About

Stack de desenvolvimento web portátil para Windows com Nginx, MariaDB, PHP e phpMyAdmin. Interface moderna, configuração de portas, início com um clique e atualização automática dos componentes.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors