Painel de monitoramento solar (Growatt) com backend próprio, autenticação por convite, e deploy em Raspberry Pi via Docker.
┌─────────────────────────────────────────────────────┐
│ Docker Compose │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ helios-web │ │ helios-api │ │ SQLite │ │
│ │ (Angular + │→ │ (Fastify + │→ │ (volume) │ │
│ │ Nginx) │ │ Node.js) │ │ │ │
│ └──────────────┘ └──────┬───────┘ └───────────┘ │
│ │ │
└───────────────────────────┼─────────────────────────┘
│
↓
┌────────────────┐
│ Growatt Open │
│ API V1 │
└────────────────┘
| Camada | Tecnologia | Justificativa |
|---|---|---|
| Frontend | Angular 21 + Nginx | Standalone components, SSR-ready |
| Backend | Fastify 5 + TypeScript | ~2x mais rápido que Express, schema validation |
| Banco | SQLite (better-sqlite3) | Zero overhead, perfeito para RPi |
| Auth | JWT + bcrypt | Token revogável via CLI admin |
| Infra | Docker Compose (ARM64/AMD64) | Portável, reproduzível |
helios/
├── frontend/ # Angular 21
├── backend/ # Fastify 5 + TypeScript
│ └── cli/ # CLI de administração
├── docs/ # Documentação detalhada
├── docker-compose.yml # Produção
├── docker-compose.dev.yml # Desenvolvimento (Docker)
├── .env.example # Template de variáveis
└── README.md
- Node.js 24.x (via nvm)
- build-essential (make, gcc, g++ — para compilar native addons)
- Python 3 (usado pelo node-gyp)
# Instalar build tools (Ubuntu/Debian/WSL)
sudo apt-get update && sudo apt-get install -y build-essential python3git clone https://github.com/shyland-dev/helios.git
cd helios
# Usar versão correta do Node (lê .nvmrc)
nvm install
nvm usecp .env.example .envGerar os valores de segurança:
# JWT secret (64 chars)
node -e "console.log(require('crypto').randomBytes(48).toString('base64url'))"
# Encryption key (32 bytes = 64 chars hex)
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Preencher no .env:
HELIOS_JWT_SECRET=<valor gerado acima>
HELIOS_ENCRYPTION_KEY=<valor gerado acima>
GROWATT_API_TOKEN=<seu token da Growatt Open API>cd backend
npm ci
npm run devO servidor inicia em http://localhost:3000 com hot-reload. Swagger UI disponível em http://localhost:3000/docs.
cd frontend
npm ci
npm startO app Angular inicia em http://localhost:4200 com proxy automático para o backend.
cd backend
# Criar admin com token Growatt
npm run cli -- user create -u admin -p suaSenhaSegura -t SEU_TOKEN_GROWATT
# Gerar invite code para outros usuários
npm run cli -- invite create- Abra http://localhost:4200
- Clique em "Criar conta"
- Use o invite code gerado + username + senha
- Pronto! Dashboard disponível.
- Docker Engine + Docker Compose (instalar)
- Porta 80 liberada
git clone https://github.com/shyland-dev/helios.git
cd helios
cp .env.example .env
# Preencher .env com seus valores (ver seção acima)docker compose build
docker compose up -ddocker compose exec helios-api npx tsx cli/index.ts user create -u admin -p suaSenhaSegura -t SEU_TOKEN_GROWATT
docker compose exec helios-api npx tsx cli/index.ts invite create# Status
docker compose ps
# Logs
docker compose logs -f
# Health check
curl http://localhost/api/health- App: http://localhost (ou http://IP_DO_SERVIDOR)
- Swagger: http://localhost/docs
# Atualizar
git pull && docker compose build && docker compose up -d
# Backup do banco
docker compose cp helios-api:/app/data/helios.db ./backup.db
# Parar
docker compose down
# Parar + remover dados (⚠️ irreversível)
docker compose down -v| Doc | Conteúdo |
|---|---|
| docs/SETUP.md | Instalação detalhada DEV (WSL/Linux) |
| docs/DEPLOY.md | Deploy Docker + Raspberry Pi |
| docs/API.md | Referência dos endpoints |
| docs/ADMIN.md | Guia da CLI de administração |
Projeto privado — SHYLAND DEV LTDA.