Progetto / Desktop App

Nimlat

Local-first anime library manager costruito con Electron, React 19, TypeScript e SQLite. Un sistema desktop personale per catalogo, release tracking, sync esterna, download search e una UI cyber-neon volutamente eccessiva.

Runtime
Electron / React 19
Storage
SQLite local-first
Confine
Renderer / preload / main
Identita
Cyber-neon diegetic UI

Scope

Una catalog app che si comporta come una macchina.

Nimlat combina una seria architettura dati locale con un interfaccia che rifiuta di sparire nel minimalismo generico da prodotto. Il progetto e sia uno strumento pratico per librerie anime, sia uno showcase di architettura desktop, pipeline dati, image caching, superfici UI animate e confini cross-process fortemente tipizzati.

Feature map

Capacita principali

Product Experience

La superficie applicativa: libreria, tracking, dettagli media, release future e strumenti operativi.

Local-first anime library manager

Desktop app per organizzare, monitorare e completare una libreria anime personale, con dati salvati localmente in SQLite.

Library Explorer

Vista principale per esplorare gruppi, serie e media standalone con ricerca, filtri, stati di integrazione e contenuti ignorati.

Media Detail Hub

Pagine dedicate per ogni media con dettagli catalogo, episodi, personaggi, staff e strumenti di download.

Release Watch

Dashboard per monitorare uscite future, episodi in arrivo, nuove stagioni e contenuti gia rilasciati ma non ancora integrati.

External Tracking Sync

Import e sincronizzazione dello stato di visione con provider esterni come AniList, MAL, Simkl e Kitsu.

Download Search Builder

Strumento configurabile per generare query di ricerca download con preset per qualita, sorgente, sottotitoli, audio e release group.

Data Pipeline

Il motore dati: ingestion, aggiornamenti incrementali, code persistenti e normalizzazione del catalogo.

AniList + Jikan Data Ingestion

Pipeline per importare metadata, relazioni, episodi, personaggi, staff e immagini da fonti esterne.

AnimeDB Baseline System

Database catalogo precaricato, scaricabile all'avvio e aggiornabile nel tempo senza ricostruire tutto da zero.

Incremental Catalog Updates

Aggiornamenti incrementali idempotenti, con cursori persistenti, overlap di sicurezza e protezione da retry inutili.

Hydration Queues

Code persistenti per arricchire i dati in background, con retry, failure state e pagina dedicata agli errori.

Release Date Resolution

Normalizzazione delle date di uscita da next airing episode, start date e fallback provider.

Deterministic Grouping Engine

Raggruppamento automatico delle serie basato sul relation graph di AniList, con supporto a override utente.

Desktop Architecture

La struttura Electron locale, con confini espliciti tra UI, preload, processo main e database.

Electron Secure Boundary

Separazione tra renderer, preload bridge e main process, senza accesso diretto del renderer a Electron o SQLite.

SQLite as Source of Truth

Tre database locali separati per catalogo anime, stato utente e cache immagini.

Thin IPC Layer

Handler IPC mantenuti sottili, con business logic spostata in servizi e operazioni database dedicate.

Facade-Based Domain Access

Accesso ai dati tramite facade e service layer, evitando SQL sparso nel resto dell'app.

Event-Driven Updates

Bus interni per propagare cambiamenti di gruppi, media, episodi, release watch, tracking e hydration progress.

Local Image Cache

Cache locale delle immagini per caricamenti veloci, riuso offline e fallback controllati.

Visual / Interaction Design

La parte piu identitaria: UI tecnica, animata, volutamente eccessiva e costruita come showcase.

Distinctive Cyber-Neon UI

Identita visiva forte, tecnica e volutamente non minimalista, pensata come showcase di UI engineering.

Pixi-Powered Animated Backgrounds

Background animati e atmosferici costruiti con Pixi, integrati nell'esperienza dell'app.

Custom Interaction Components

Controlli visuali custom come neon console, flip switch, circuit toggle, glow buttons e status controls.

Media Wall Rendering

Rendering performante di griglie visuali con texture cache e gestione ottimizzata delle immagini.

Ant Design Theming Layer

Uso di Ant Design con tema custom e override coerenti per mantenere componenti robusti ma stilisticamente riconoscibili.

Engineering Quality

Guardrail tecnici per mantenere un progetto personale ambizioso senza trasformarlo in caos.

TypeScript-First Architecture

Tipi condivisi tra main, preload e renderer per ridurre errori lungo i confini dell'app.

Focused Test Coverage

Test su ingestion, grouping, release watch, image cache, download search, servizi main e operazioni database.

Provider-Safe Data Fetching

Strategie di aggiornamento pensate per evitare traffico inutile verso API esterne.

Error Observability

Logging strutturato, errori persistenti e retry espliciti per i flussi dati critici.

Performance Guardrails

Payload IPC limitati, query paginated, stato renderer ridotto e lavoro pesante mantenuto nel main process/database.

Manifesto

Design Philosophy

Nimlat e volutamente eccessivo, sia nelle feature sia nell identita visiva. Deve sembrare sovraccarico, tecnico, luminoso e stilizzato senza scusarsi.

Nel design delle interfacce videoludiche esiste il concetto di UI diegetica: invece di interagire solo con pannelli astratti, l utente interagisce con elementi che sembrano parte del mondo stesso. Nimlat resta una web application, ma si spinge deliberatamente in quella direzione.

La sua interfaccia non vuole sembrare un documento piatto con pulsanti sopra. Vuole sembrare una macchina, una console, un sistema con presenza.

Questo contrasta con molte linee guida moderne, dove siti e applicazioni diventano sempre piu piatti, semplici, arrotondati, muti e intercambiabili.

Ho studiato usabilita per anni. So creare interfacce pulite, semplici, pratiche e altamente usabili. Allora perche Nimlat fa il contrario? Perche mette effetti, identita e atmosfera davanti alla semplicita assoluta?

Il fatto che Nimlat non sia un prodotto commerciale conta. Conta anche che i suoi utenti siano tecnicamente competenti. Ma non sono questi i veri motivi.

Il primo vero motivo e che Nimlat e anche uno showcase tecnico. Fare un bottone bianco e piatto e facile. Creare elementi neon che tremolano, brillano, si animano e funzionano comunque dentro una vera applicazione non lo e.

Il secondo motivo e un rifiuto viscerale dello stile dominante: minimalismo sterile, pseudo-brutalismo digitale e appiattimento culturale.

Molti siti moderni sembrano l equivalente digitale di blocchi abitativi distopici: pratici, efficienti, rettangolari, privati di ornamento, identita e anima.

Nimlat si oppone a questo. Arte, architettura e software non dovrebbero solo ridurre attrito; dovrebbero anche ispirare, accendere passione e dare forma a un identita.

Praticita e usabilita contano. Ma un mondo fatto solo di cose pratiche, usabili e appiattite non e un mondo adatto agli esseri umani.

Nimlat e un piccolo grido contro il buio: una richiesta che cio che ci circonda non si limiti a funzionare, ma bruci anche di identita, significato ed energia umana.