An open API service indexing awesome lists of open source software.

https://github.com/isnanno/stellar-blade-mod-server

API REST Node.js para catalogar e distribuir mods de Stellar Blade
https://github.com/isnanno/stellar-blade-mod-server

express mods nodejs rest-api stellar-blade

Last synced: about 4 hours ago
JSON representation

API REST Node.js para catalogar e distribuir mods de Stellar Blade

Awesome Lists containing this project

README

          

# Stellar Blade Mod Server

[![Node.js](https://img.shields.io/badge/Node.js-Express-339933?logo=node.js&logoColor=white)](server.js)
[![API](https://img.shields.io/badge/API-REST-1F6FEB)](routes/)
[![Stellar Blade](https://img.shields.io/badge/Stellar%20Blade-mod%20server-1a1a2e)](https://store.steampowered.com/app/3489700)

Servidor backend em Node.js para gerenciar e distribuir mods do jogo **Stellar Blade** via API REST. Alimenta um instalador automático em Python que lê os mods disponíveis e os instala na pasta correta do jogo.

---

## Funcionalidades

- **API pública** — endpoint JSON consumido pelo instalador em Python
- **Página pública** — vitrine visual dos mods disponíveis
- **Painel de administração** — cadastro, edição e exclusão de mods com autenticação por senha
- **Tratamento automático de dados** — barras invertidas (`\`) convertidas para `/`, sufixo `MB` adicionado automaticamente ao peso
- **Persistência em arquivo** — mods salvos em `mods.json`, sem banco de dados

---

## Stack

| Camada | Tecnologia |
|---|---|
| Runtime | Node.js 18+ |
| Framework | Express 4 |
| Autenticação | Cookie de sessão (`cookie-parser`) |
| Armazenamento | `mods.json` (arquivo local) |
| Deploy | Square Cloud |

---

## Estrutura do projeto

```
stellar-blade-mod-server/
├── index.js # Servidor Express (rotas, lógica, HTML inline)
├── mods.json # Banco de dados dos mods (gerado automaticamente)
├── package.json
└── squarecloud.app # Configuração de deploy na Square Cloud
```

---

## Instalação local

```bash
# Clone o repositório
git clone https://github.com/seu-usuario/stellar-blade-mod-server.git
cd stellar-blade-mod-server

# Instale as dependências
npm install

# Inicie o servidor
npm start
```

O servidor sobe em `http://localhost:3000`.

---

## Rotas

### Públicas

| Método | Rota | Descrição |
|---|---|---|
| `GET` | `/` | Página visual com todos os mods |
| `GET` | `/api/mods` | JSON com todos os mods (consumido pelo instalador Python) |

### Painel Admin (requer autenticação)

| Método | Rota | Descrição |
|---|---|---|
| `GET` | `/admin` | Painel de gerenciamento |
| `POST` | `/admin/login` | Autenticação por senha |
| `GET` | `/admin/logout` | Encerra a sessão |
| `POST` | `/admin/save` | Adiciona ou edita um mod |
| `POST` | `/admin/remover` | Remove um mod pelo ID |

---

## Formato da API

`GET /api/mods` retorna um array JSON:

```json
[
{
"id": "0001",
"nome": "Outfit Eve - White",
"peso": "512 MB",
"destino": "SB/Content/Paks/~mods",
"link_download": "https://drive.google.com/uc?export=download&id=..."
}
]
```

| Campo | Tipo | Descrição |
|---|---|---|
| `id` | string | Identificador único com 4 dígitos |
| `nome` | string | Nome exibido no instalador |
| `peso` | string | Tamanho do arquivo (ex: `512 MB`) |
| `destino` | string | Caminho relativo à pasta raiz do jogo |
| `link_download` | string | URL de download direto |

> **Destino:** Use `.` para instalar diretamente na raiz da pasta do jogo, ou um subcaminho relativo como `SB/Content/Paks/~mods`.

---

## Painel de Administração

Acesse `/admin` e insira a senha definida em `ADMIN_PASSWORD` (variável de ambiente).

### Cadastro de mod

- **Nome** — nome do mod exibido no instalador
- **Peso** — apenas o número (ex: `512`); o sufixo ` MB` é adicionado automaticamente
- **Pasta de Destino** — caminho relativo; barras invertidas (`\`) são convertidas para `/` automaticamente, então você pode colar caminhos do Windows diretamente
- **Link de Download** — URL direta, preferencialmente do Google Drive (`uc?export=download&id=...`)

### Editar e excluir

Cada mod listado na tabela possui dois botões:

- **Editar** — preenche o formulário com os dados existentes para edição
- **Excluir** — remove o mod após confirmação

---

## Deploy na Square Cloud

1. Certifique-se de que o `squarecloud.app` está configurado corretamente:

```ini
DISPLAY_NAME=Stellar Blade Mod Server
DESCRIPTION=Servidor de mods para o instalador de Stellar Blade
MAIN=index.js
MEMORY=256
VERSION=recommended
START=node index.js
```

2. Gere o zip com os arquivos necessários:

```
index.js
package.json
mods.json
squarecloud.app
```

> **Não inclua** a pasta `node_modules` — a Square Cloud instala as dependências automaticamente.

3. Faça o upload do zip no painel da [Square Cloud](https://squarecloud.app).

---

## Variáveis de ambiente

| Variável | Descrição |
|----------|-----------|
| `PORT` | Porta HTTP (padrão: `3000`) |
| `ADMIN_PASSWORD` | Senha do painel `/admin` (**obrigatória**) |

Copie `.env.example` para `.env` localmente ou configure os secrets no deploy (Square Cloud).

```bash
PORT=3000
ADMIN_PASSWORD=sua_senha_forte
```

> **Importante:** nunca commite a senha no código. Rotacione a senha se ela já apareceu em versões antigas do repositório.