Projekt / Desktop App

imlat

Local-first Anime-Library-Manager mit Electron, React 19, TypeScript und SQLite. Ein persönliches Desktop-System für Katalogdaten, Release Tracking, externe Synchronisierung, Download Search und eine bewusst übertriebene Cyber-Neon-UI.

Runtime
Electron / React 19
Storage
SQLite local-first
Grenze
Renderer / preload / main
Identität
Cyber-neon diegetic UI

Scope

Eine Katalog-App, die sich wie eine Maschine anfühlt.

Nimlat verbindet eine ernsthafte lokale Datenarchitektur mit einem Interface, das sich nicht in generischem Produkt-Minimalismus auflösen will. Das Projekt ist zugleich praktisches Anime-Library-Tool und Showcase für Desktop-Architektur, Datenpipelines, Image Caching, animierte UI-Flächen und stark typisierte Cross-Process-Grenzen.

In der App

Eine Library, viele Oberflachen.

Drei echte App-Ansichten zeigen, wie Nimlat Bibliotheken, Seriendetails und überwachte Releases mit seiner unverwechselbaren visuellen Identität verbindet.

Screenshot 01 / Bibliothek

Library Explorer

Die zentrale Media Wall mit Suche, Filtern und Library-Status fur grosse Kataloge.

Screenshot 02 / Details

Media Detail Hub

Seriendetails mit Episoden, Cast, Staff, Beziehungen und Aktionen in einem Kontext.

Screenshot 03 / Releases

Release Watch

Die Konsole fur kommende Episoden, neue Staffeln und noch nicht integrierte Releases.

Kurzanleitungen

Verbinde Nimlat mit deinem Okosystem.

Deine Daten bleiben lokal. Externe Integrationen werden erst aktiv, wenn du einen Provider auswählst und seine Zugangsdaten in den Preferences speicherst.

Preferences / WatchedAniList, MyAnimeList oder Simkl verbinden

Nimlat kann deine Liste importieren und Anderungen synchronisieren. Jeder Dienst benotigt eine personliche App im Entwicklerportal.

  1. Erstelle im Entwicklerportal des Dienstes eine Anwendung und kopiere die Client ID.
  2. Fur MAL oder Simkl ubernimm die in Nimlat angezeigte Redirect URI. Fuge beide Werte unter Preferences > Watched ein und wahle Start PKCE.
  3. Bestatige Nimlat im Browser, kopiere danach die finale Redirect-URL in Redirect URL after approval und bestatige sie.
  4. Bei AniList fugst du Client ID und Access Token oder die Redirect-URL mit Token ein und wahlst Save token.
  5. Mit Import holst du den bestehenden Status; mit Sync gleichst du spatere Anderungen ab.

Kitsu ist sichtbar, wird aber noch nicht unterstutzt. Zugangsdaten werden nach Moglichkeit im sicheren Betriebssystem-Speicher verschlusselt.

Preferences / DownloadDownload-Suchseiten konfigurieren

Nimlat ladt keine Dateien herunter: Es baut eine Suchanfrage und offnet sie im gewahlten Browser.

  1. Offne Preferences > Download und wahle Add new provider.
  2. Vergib einen Namen und wahle Torrent fur direkte Torrent-Listings oder Index fur allgemeine Suchseiten.
  3. Fuge die vollstandige Such-URL ein und setze {query} an die Stelle des Suchtexts, zum Beispiel https://example.com/search?q={query}.
  4. Speichere den Provider. Er kann jederzeit deaktiviert, bearbeitet oder geloscht werden.
  5. Nutze den Systembrowser oder wahle unter Default browser mit Browse eine bestimmte ausfuhrbare Datei.

Nutze nur Dienste und Inhalte, fur die du die erforderlichen Rechte hast. Ohne {query} hangt Nimlat die codierte Suche an die URL an.

Feature Map

Kernfunktionen

Product Experience

Die App-Oberfläche: Library, Tracking, Mediendetails, kommende Releases und operative Werkzeuge.

Local-first anime library manager

Desktop-App zum Organisieren, Überwachen und Vervollständigen einer persönlichen Anime-Library, mit lokalen SQLite-Daten.

Library Explorer

Hauptansicht für Gruppen, Serien und Standalone-Medien mit Suche, Filtern, Integrationsstatus und ignorierten Inhalten.

Media Detail Hub

Eigene Seiten pro Medium mit Katalogdetails, Episoden, Charakteren, Staff und Download-Werkzeugen.

Release Watch

Dashboard für kommende Releases, nächste Episoden, neue Staffeln und bereits veröffentlichte, noch nicht integrierte Inhalte.

External Tracking Sync

Import und Synchronisierung des Watch-Status mit externen Providern wie AniList, MAL, Simkl und Kitsu.

Download Search Builder

Konfigurierbares Werkzeug für Download-Suchanfragen mit Presets für Qualität, Quelle, Untertitel, Audio und Release Group.

Data Pipeline

Die Datenmaschine: Ingestion, inkrementelle Updates, persistente Queues und Katalog-Normalisierung.

AniList + Jikan Data Ingestion

Pipeline zum Importieren von Metadaten, Relationen, Episoden, Charakteren, Staff und Bildern aus externen Quellen.

AnimeDB Baseline System

Vorgeladene Katalogdatenbank, die beim Start geladen und später aktualisiert werden kann, ohne alles neu aufzubauen.

Incremental Catalog Updates

Idempotente inkrementelle Updates mit persistenten Cursors, Sicherheits-Overlap und Schutz vor unnötigen Retries.

Hydration Queues

Persistente Queues zur Hintergrund-Anreicherung von Daten, mit Retry, Failure State und eigener Fehlerseite.

Release Date Resolution

Normalisierung von Release-Daten aus next airing episode, Startdatum und Fallback-Providern.

Deterministic Grouping Engine

Automatische Serien-Gruppierung auf Basis des AniList Relation Graph, mit Support für User Overrides.

Desktop Architecture

Die lokale Electron-Struktur mit klaren Grenzen zwischen UI, Preload, Main Process und Datenbanken.

Electron Secure Boundary

Trennung zwischen Renderer, Preload Bridge und Main Process, ohne direkten Renderer-Zugriff auf Electron oder SQLite.

SQLite as Source of Truth

Drei getrennte lokale Datenbanken für Anime-Katalog, User State und Image Cache.

Thin IPC Layer

Schlanke IPC-Handler, mit Business-Logik in Services und dedizierten Datenbankoperationen.

Facade-Based Domain Access

Datenzugriff über Facades und Service Layer, statt verstreutem SQL im Rest der App.

Event-Driven Updates

Interne Busse zur Verteilung von Änderungen an Gruppen, Medien, Episoden, Release Watch, Tracking und Hydration Progress.

Local Image Cache

Lokaler Image Cache für schnelle Ladezeiten, Offline-Wiederverwendung und kontrollierte Fallbacks.

Visual / Interaction Design

Die markanteste Ebene: technische, animierte, bewusst übertriebene UI als Showcase.

Distinctive Cyber-Neon UI

Starke, technische und bewusst nicht-minimalistische visuelle Identität als Showcase für UI Engineering.

Pixi-Powered Animated Backgrounds

Atmosphärische animierte Hintergründe mit Pixi, integriert in die App-Erfahrung.

Custom Interaction Components

Eigene visuelle Controls wie Neon Console, Flip Switch, Circuit Toggle, Glow Buttons und Status Controls.

Media Wall Rendering

Performantes Rendering visueller Grids mit Texture Cache und optimierter Bildverwaltung.

Ant Design Theming Layer

Ant Design mit Custom Theme und konsistenten Overrides, damit Komponenten robust und visuell eigenständig bleiben.

Engineering Quality

Technische Leitplanken, damit ein ambitioniertes persönliches Projekt nicht ins Chaos kippt.

TypeScript-First Architecture

Geteilte Typen zwischen Main, Preload und Renderer, um Fehler an App-Grenzen zu reduzieren.

Focused Test Coverage

Tests für Ingestion, Grouping, Release Watch, Image Cache, Download Search, Main Services und Datenbankoperationen.

Provider-Safe Data Fetching

Update-Strategien, die unnötigen Traffic zu externen APIs vermeiden.

Error Observability

Strukturiertes Logging, persistente Fehler und explizite Retries für kritische Datenflüsse.

Performance Guardrails

Begrenzte IPC-Payloads, paginierte Queries, reduzierter Renderer-State und schwere Arbeit im Main Process oder in der Datenbank.

Manifest

Design Philosophy

Nimlat ist bewusst übertrieben, sowohl in den Features als auch in der visuellen Identität. Es soll exzessiv, technisch, hell und kompromisslos stilisiert wirken.

Im Interface Design von Videospielen gibt es den Begriff diegetic UI: Nutzer interagieren nicht nur mit abstrakten Panels, sondern mit Elementen, die Teil der Welt selbst zu sein scheinen. Nimlat bleibt eine Web Application, lehnt sich aber bewusst in diese Richtung.

Die Oberfläche soll sich nicht wie ein flaches Dokument mit Buttons anfühlen. Sie soll wie eine Maschine wirken, wie eine Konsole, wie ein System mit Präsenz.

Das steht im Gegensatz zu vielen modernen Designregeln, in denen Websites und Anwendungen immer flacher, einfacher, runder, gedämpfter und austauschbarer werden.

Ich habe jahrelang Usability studiert. Ich weiß, wie man klare, einfache, praktische und hoch benutzbare Interfaces baut. Warum ist Nimlat also das Gegenteil davon?

Dass Nimlat kein kommerzielles Produkt ist, spielt eine Rolle. Dass die Zielgruppe technisch kompetent ist, auch. Aber das sind nicht die eigentlichen Gründe.

Der erste echte Grund ist, dass Nimlat auch ein Showcase technischer Fähigkeiten ist. Einen flachen weißen Button zu bauen ist leicht. Neon-Elemente, die flackern, leuchten, animieren und in einer echten App korrekt funktionieren, sind es nicht.

Der zweite Grund ist eine viszerale Abneigung gegen den dominanten modernen Stil: sterilen Minimalismus, pseudo-brutalistisches Digital Design und kulturelle Verflachung.

Moderne Websites wirken oft wie digitale dystopische Wohnblöcke: praktisch, effizient, rechteckig, ohne Ornament, ohne Identität, ohne Seele.

Nimlat stellt sich dagegen. Kunst, Architektur und Software sollten nicht nur Reibung reduzieren; sie sollten auch inspirieren, Leidenschaft wecken und Identität formen.

Praktikabilität und Usability zählen. Aber eine Welt aus nur praktischen, benutzbaren, verflachten Dingen ist keine Welt für Menschen.

Nimlat ist ein kleiner Schrei gegen die Dunkelheit: die Forderung, dass die Welt um uns herum nicht nur funktionieren, sondern auch mit Identität, Bedeutung und menschlicher Energie brennen soll.