Presentazione
·
Presentation (EN)
·
shipexpress.it
·
info@shipexpress.it
Infrastruttura, sicurezza, sistemi. La stessa mania la metto nei componenti: loop ad acqua su misura, impianti criogenici su CPU Intel, temperature che non dovrebbero esistere.
Costruisco il software che li fa girare. Gestionali in produzione, strumenti di security testing, dashboard che leggono ogni sensore. E un motore di ricerca con RAG, perché la documentazione che nessuno legge non serve a nessuno.
Niente si dà per scontato. Ogni numero lo misuro, ogni difetto diventa un test.
|
ShipExpress · gestionale, in produzione ShipExpress 2026.2.5. 1.462 endpoint API, 357 modelli su Prisma, 42 corrieri, 8.896 test, 67 dipendenze di produzione. Multi-tenant: ogni cliente ha dominio suo, database suo, ruoli suoi. Il pezzo dove si litiga è il listino. Prezzi per zona, peso e supplementi, e la differenza fra peso reale e volumetrico, che è l'errore che l'azienda scopre solo quando legge la fattura. |
ARGUS · security testing, v0.2.0 17 scanner orchestrati: 6 recon, 4 DAST, 1 SAST, 2 SCA, 2 secrets, 1 API, 1 fuzz. Ogni tool con Docker image pinned, ogni scan su target autorizzati. 14.071 righe di TypeScript, 42 file di test, 71 endpoint API, 11 tabelle. Agent AI che esegue missioni autonome con due modelli: uno per pianificare, uno per eseguire. |
|
ARA · assistente vocale 29.537 righe di Python. Whisper per la voce in ingresso, Kokoro per quella in uscita, e un router che distingue task da conversazione in meno di 5 millisecondi. 7 azioni distruttive richiedono conferma umana. La memoria è un vault RAG in TF-IDF, tutto in locale, zero API esterne. |
StargateCryo · controller TEC per cryocooling 23.286 righe di Rust. Legge i sensori da HWiNFO64 e AIDA64, controlla il TEC via seriale con PID, e misura il margine di condensa. Lavora sul controller, non sul processore: nessun socket, nessun chipset, nessun modello di CPU nel codice. Quindi va su Intel, su AMD, e su qualsiasi CPU montabile che il controller riesca a pilotare. 6 canali di allarme, 5 regole di default, 3 profili PID con setpoint e potenza propria. Se la pompa si ferma, il TEC si riduce da solo al 50%. |
Plugin SignalRGB per Razer Stream Controller X
Il plugin standard di SignalRGB per display non regge lo schermo di questo deck: passa dall'overlay composited e ci mette il logo al centro. Il percorso riscritto legge il canvas dell'effetto e scrive pixel per pixel in RGB565, quindi l'immagine arriva pulita a 480 × 288.
signalrgb-razer-stream-controller-x
|
Il protocollo Protocollo Loupedeck, WebSocket su seriale, handshake Un tasto da 96 × 96 costa 18.459 byte, quindi il deck intero sono 277 KB. |
Le misure Il ciclo di refresh del device è fisso a circa 420 ms e non scala con i byte, ma il device accoda: 8 frame in coda danno 12,8 fps contro i 2,3 di un frame alla volta. Il limite è a monte. SignalRGB scrive a 2,3-2,5 MB/s, pyserial sugli stessi byte sullo stesso cavo arriva a 11,5 MB/s. Per questo il plugin ottiene 3,6-4,6 fps e non di più. |
Documentazione in italiano e inglese nel repo, con la curva di costo per scrittura e i limiti verificati.
StargateCryo: controller Gen 1 modificato su TEC Gen 2
Il software è nato su un controller Gen 1 modificato, potenziato, che gira su una TEC Gen 2. Non è un supporto "Gen 1 e Gen 2" generico: le soglie sono specifiche di quell'hardware, e il codice lo dice in chiaro.
Il tetto che mancava
Il firmware accetta una percentuale, non dei watt, e il 100% su questo controller vale circa 230 W. Ma il Gen 1 porta 200 W. Con la percentuale al massimo si chiedevano circa 230 W, il 115% del tetto: il modulo segnalava OCP, il firmware tagliava, e quei watt erano sprecati perché il freddo non arrivava.
Nel codice non c'era nessun tetto in watt, solo la percentuale che non sa nulla dell'hardware. Ora c'è: 200 W dichiarati come costante, con la radice del difetto scritta accanto.
La finestra di cinque gradi
Il controller a regime sta a 30 °C. Fino a 35 °C è normale. A 40 °C si sciolgono le guaine dei fili, e quelle sono già state sostituite una volta.
| Range | Lettura | Comportamento |
|---|---|---|
| fino a 35 °C | regime normale | verde |
| 36 - 37 °C | allarme | giallo |
| da 38 °C | rischio di danno | rosso, riduzione fino a zero |
| 40 °C | guaine sciolte | cut-off |
La guardia non è un interruttore che aspetta i 38 °C per reagire, perché lascierebbe 35-37 °C senza protezione, e sono esattamente i gradi in cui il danno inizia.
Cambiare hardware
Se il controller cambia, cambiano i numeri: potenza massima, watt al 100% della
percentuale, soglie della guardia. Sono costanti dichiarate in running.rs, con
il motivo per cui esistono scritto accanto, perché il bug torna se non le vedi.
TechDash: monitoraggio hardware del rig
Dashboard single-page con backend Python che legge i sensori della macchina: temperature CPU e GPU, carico, ventole, pompe e stato dei dischi, con avvisi su condensazione e gestione termica.
Pensata per un impianto che gira sotto carico costante: priorizza la lettura rapida e gli allarmi, non i grafici.
Versione 2026.2.5. Il router espone 1.462 endpoint e il modello dati ha 357 entità, che coprono spedizioni, magazzino, fatturazione, CRM e ciclo di vita del cliente.
Ogni cliente ha un dominio proprio, un database separato e una gerarchia di utenti con permessi per ruolo.
| Area | Cosa fa |
|---|---|
| Spedizioni | Confronto tariffe tra corrieri, creazione, tracciamento, contrassegno, consegna con foto e firma |
| Magazzino | Prodotti, categorie, giacenze, ubicazioni, movimenti, conteggi, imballaggi |
| Ordini | Ordini cliente, flusso di stato, picklist con lettura dei codici a barre |
| Documenti | DDT e fatturazione elettronica |
| Integrazioni | Corrieri, marketplace e gestionali esterni |
42 corrieri, 74 servizi. I principali hanno un adapter dedicato (BRT, DHL Express, DPD, GLS, UPS, FedEx, TNT, SDA, Poste Italiane, InPost, Aramex, CEVA, DB Schenker, Pony Express e altri), gli altri passano da API REST. Il tracciamento usa i webhook quando il corriere li espone, e polling periodico per chi non li ha.
La ricerca interna usa RAG: i documenti vengono indicizzati e interrogati in linguaggio naturale, non per parole chiave. Serve perché nessuno ricorda in quale ticket ha già visto quel problema.
La parte AI è più larga del RAG. Nel codice ci sono route per hybrid search,
query RAG, apprendimento, e un sistema di agent skills con playbook, valutazione
e verifica, eseguito anche in schedulazione. C'è anche il pacchetto ai nelle
dipendenze.
L'isolamento multi-tenant è verificato, non dichiarato. Routing per dominio, middleware di risoluzione, e un fallback che chiude se il tenant non è risolvibile. Un tenant è un confine, non una colonna.
Tutto l'input esterno passa da Zod. unknown invece di any. Query
parametrizzate. Transazioni quando un'operazione tocca più tabelle.
Root ha due fattori, le operazioni critiche lasciano traccia, e ci sono rate limit, rilevamento brute-force e blacklist sessioni su Redis.
8.896 test raccolti da vitest, su 1.059 file. Il ciclo non cambia mai: trovo il difetto, e il difetto diventa un test. Test di sicurezza dedicati (isolamento tenant, hardening OAuth, proxy fail-closed, certificazione root), audit end-to-end di ogni API, accessibilità in automatico.
Prima le protezioni, poi le prestazioni. Un impianto criogenico senza allarmi è un rischio, non un esperimento. Quindi si parte da sensori, soglie, avvio sicuro e condensazione gestita. L'ottimizzazione arriva dopo.
Nessun segnale è attendibile. Più sensori indipendenti e validazione a monte: un valore fuori scala è quasi sempre un problema di acquisizione, non della macchina.
Il freddo è un sistema. Peltier, CPU, RAM, GPU, alimentatore e scheda madre hanno limiti termici diversi, e raffreddare solo la CPU sposta il danno invece di evitarlo.
Ogni impianto lascia schema, componenti, curve di avvio e valori misurati. Se fra sei mesi non lo capisco da solo, ho sbagliato il progetto.
| Next.js 16 React 19 TypeScript strict |
PostgreSQL 17 Prisma 6 Redis 8 · BullMQ |
Zod 4 Tailwind CSS 4 Vitest · Playwright |
Dettaglio dello stack
| Livello | Tecnologie |
|---|---|
| Applicazione | Next.js 16, React 19, TypeScript strict |
| Dati | PostgreSQL 17, Prisma 6 |
| Code e job | Redis 8, BullMQ |
| Interfaccia | Tailwind CSS 4 |
| Validazione | Zod 4 |
| Test | Vitest, Playwright |
| Hardware e sensori | Python |
Il codice di ShipExpress è privato. Per una demo, per un'integrazione o per parlare di un progetto hardware:
- Sito: shipexpress.it
- Email: info@shipexpress.it
