Skip to content
← Indietro

AppMint

Generatore di app modulari — DB CRUD, script, REST, SQL

In test
Node.js Express better-sqlite3 PostgreSQL MariaDB pg mysql2 bcrypt AES-256-GCM MCP SSE NSSM
AppMint

AppMint è una suite modulare che permette di costruire — senza scrivere codice — quattro tipi di applicazioni interne attivabili agli utenti finali da un Configuratore APP a 5 tab (Tipo & info / Backend / Maschera / Campi extra / Riepilogo).

**DB CRUD** — punta una connessione PostgreSQL o MariaDB salvata, sceglie schema e tabella, configura colonne (label, widget text/textarea/number/checkbox/date/datetime/select/fk), ricerca, filtri, ordinamenti, FK con label dinamica. Il risultato è un'app full-CRUD con UI auto-generata che lavora sui dati reali (nessuna duplicazione).

**Script runner** — esegue file `.py` `.sh` `.bat` `.cmd` `.ps1` `.exe` `.jar` `.sql` con form parametri, output stdout/stderr in streaming live (SSE), audit completo su DB, log file rotanti. Pattern "1 utente = 1 processo" con bottone Kill esplicito e watchdog `max_runtime_seconds`. Console processi admin per kill e replay.

**REST caller** — chiama endpoint HTTP esterni con auth `none` / `bearer` / `basic` / `api-key-header`, parametri dinamici dal form utente, risposta mostrata nell'UI.

**SQL caller** — esegue template SQL parametrici read-only su una connessione salvata.

Ogni app generata appare nella sidebar dinamica raggruppata per `category`, gestita con permessi stile Django (user_apps + group_apps con read/create/update/delete/run, unione OR fra utente e gruppi). Layout maschera a 2 colonne con `col_span` e "attacca al precedente", regole IF condizionali in JavaScript lato browser (visible/required/readonly/secret/label) per UX dinamica senza round-trip server.

**Bottoni configurabili** — al posto del classico "Esegui" auto-renderizzato, l'app espone bottoni personalizzati con azioni multiple: `run_main`, `script_runner`, `rest_call`, `sql_query`, `open_link`, `open_app` (cross-app deep-link), `reset_form`, `custom_js`. Ogni bottone ha JSON di configurazione con placeholder `{{key}}` per valori del form.

**REST API esterna** `/api/v1/*` autenticata con header `X-API-Key` (chiave per utente, hash SHA-256 in DB) — espone meta, list, run di ogni app generata. **MCP server** stdio con framing LSP, integrabile in `DexAssistant/servers.json` per esporre CRUD e run come tool MCP.

**Persistenza**: SQLite (admin DB + sessions) per i metadati AppMint (utenti, gruppi, app, permessi, connessioni). Le password PG sono cifrate at-rest con AES-256-GCM (chiave da env o `<DATA_DIR>/.secret-key` auto-generato). Cartella dati centralizzata via `ADMIN_DB_DIR` (consigliata fuori dal progetto per backup/portabilità).

**Sicurezza**: bcrypt cost 12 sulle password utente, force-change password al primo accesso, sessioni firmate persistenti su SQLite (HttpOnly + SameSite=Lax + Secure in production), validazione regex `^[A-Za-z_][A-Za-z0-9_$]*$` su tutti gli identifier SQL prima di interpolazione, parametri `$N` ovunque, `ORDER BY` validato contro la lista colonne note, middleware `requireLogin/requireAdmin/requireAppPermission`.

**HTTPS nativo** opzionale (cert/key da `.env` con script `npm run cert:self-signed`) oppure reverse proxy con Caddy/Nginx/IIS davanti al servizio Node. Multi-language IT/EN, tema dark/light persistito in localStorage. Stack: Node.js >= 18, Express, better-sqlite3, pg + mysql2/promise, bcryptjs, AES-256-GCM. Deploy come servizio Windows con NSSM via gli script `deploy-service.bat` / `undeploy-service.bat` inclusi.

Funzionalità

  • Configuratore APP a 5 tab (Tipo & info / Backend / Maschera / Campi extra / Riepilogo)
  • DB CRUD su PostgreSQL e MariaDB con introspection schema/tabelle/colonne
  • Script runner: .py / .sh / .bat / .cmd / .ps1 / .exe / .jar / .sql con SSE live
  • REST caller con auth none / bearer / basic / api-key-header
  • SQL caller read-only con template parametrico
  • Sidebar dinamica con app raggruppate per category
  • Permessi stile Django: user_apps + group_apps (R/C/U/D/run)
  • Layout maschera 2 colonne con col_span + "attacca al precedente"
  • Regole IF JavaScript lato browser (visible/required/readonly/secret/label)
  • Bottoni configurabili: run_main / script / rest_call / sql_query / open_link / open_app / reset / custom_js
  • REST API esterna /api/v1/* con X-API-Key (hash SHA-256)
  • MCP server stdio con framing LSP, integrabile in DexAssistant
  • Console processi admin: lista live, kill, replay storico via SSE
  • Audit completo su DB con stdout/stderr salvati per data
  • Multi-language IT/EN con switch in topbar
  • Tema dark/light persistito in localStorage
  • HTTPS nativo opzionale + supporto reverse proxy (Caddy/Nginx/IIS)
  • Cifratura password PG at-rest con AES-256-GCM
  • Cartella dati centralizzata via ADMIN_DB_DIR (backup/portabilità)
  • Deploy automatizzato come servizio Windows via NSSM

Parametrizzazioni

  • PORT (default 3100)
  • SESSION_SECRET (richiesto in production)
  • ADMIN_DB_DIR — cartella dei DB SQLite admin/sessioni e .secret-key
  • CONNECTION_ENC_KEY — chiave AES (auto-generata se assente)
  • NODE_ENV — production attiva cookie Secure (servire dietro HTTPS)
  • HTTPS_ENABLED + HTTPS_PORT + HTTPS_CERT_PATH + HTTPS_KEY_PATH
  • APP_LANG — lingua di default (it / en)
  • Connessioni DB target: host, port, database, username, password (cifrata), ssl, notes
  • API key per utente — generabile dal menu API key
  • Permessi per app: user_apps + group_apps (read/create/update/delete/run)

Pre-requisiti tecnici

  • Node.js 18+ (LTS consigliato)
  • Per app db_crud / sql_caller: PostgreSQL o MariaDB/MySQL raggiungibile
  • Per app script_runner: gli interpreti che vuoi usare (Python, PowerShell, Bash, Java, ...)
  • Visual C++ Build Tools (Windows) per ricompilare better-sqlite3 se necessario
  • OpenSSL nel PATH per i certificati self-signed (opzionale)
  • NSSM per il deploy come servizio Windows (scaricato in automatico dallo script)
  • Reverse proxy (Caddy/Nginx/IIS) consigliato per esporre HTTPS su porta 443
  • DexAssistant — opzionale, per usare AppMint come server MCP integrato