// tier: vasic-util-secondary · order 21

Catalogizer productionlicense: UNVERIFIED

GoGinTypeScriptReactTailwindWebSocketsSQLCipherPostgreSQLRedisSMB/FTP/NFS/WebDAVPrometheusOpenTelemetryDockerTauri/RustS3Google Cloud Storage

Source

Catalogizer — layered architecture · multi-protocol fan-out Clients Encrypted data layer Multi-protocol fan-out Web UI · React + Tailwind Desktop · Tauri / Rust Realtime · WebSockets Catalogizer Core Go + Gin · unified API SQLCipher encrypted catalog PostgreSQL Redis cache Prometheus · OTel metrics · traces SMB · FTP · NFS · WebDAV storage sources S3 · Google Cloud Storage object storage
// architecture

Перадавы шматпратаколны менеджар калекцыі медыя — выяўляй, каталогізуй і ўзбагачай усё, што маеш.

Catalogizer — гэта сістэма кіравання калекцыяй медыя, якую можна размясціць на ўласным серверы і якая аўтаматычна выяўляе, класіфікуе і арганізуе медыяфайлы праз SMB, FTP, NFS, WebDAV і лакальныя файлавыя сістэмы з момантальным маніторынгам, шыфраваным захоўваннем, знешнім узбагачэннем метазвестак і сучасным карыстальніцкім інтэрфейсам React на базе высокапрадукцыйнай платформы Go API.

Прафесійны шматпратаколны менеджар медыябібліятэк. Go/Gin REST API выяўляе больш за 50 тыпаў медыя (фільмы, серыялы, музыка, гульні, праграмы, дакументальныя праекты) з крыніц SMB/FTP/NFS/WebDAV/лакальных, узбагачае звесткі з TMDB/IMDB/MusicBrainz/Steam і іншых рэсурсаў і падае ў рэжыме рэальнага часу вэб-дадатак React праз шыфраваную базу даных SQLCipher.

Большасць менеджараў медыя патрабуюць ад вас спачатку здацца: сабраць усё на адным дыску, у адным фармаце, аднаго тыпу — і толькі тады яны гатовыя дапамагчы. Catalogizer пачынае з процілеглай перадумовы: ваша калекцыя ўжо існуе там, дзе існуе, распаўсюджаная па NAS-сховішчах і пратаколах, якія ніколі не дамовяцца паміж сабой, — і сустракае яе менавіта там. Ён падтрымлівае пратаколы, якія ўжо выкарыстоўваюцца для захоўвання — SMB/CIFS, FTP/FTPS, NFS, WebDAV і лакальную файлавую сістэму — праз адзіную абстракцыю кліента, таму Windows-шара, FTP-архіў і WebDAV-мантаванне выглядаюць аднолькава для вышэйшых узроўняў і могуць свабодна змешвацца, падмяняцца ці выдаляцца без змен у кодзе праграмы. Бэкэнд Go (Gin REST API) бесперапынна сочыць за гэтымі крыніцамі, выяўляе і класіфікуе больш за 50 тыпаў медыя (фільмы, серыялы, музыка, гульні, праграмнае забеспячэнне, дакументальныя праекты) па меры з’яўлення файлаў і ўзбагачае кожны элемент з дапамогай стэку знешніх правайдараў — TMDB, IMDB, TVDB, MusicBrainz, Spotify, Steam і іншых — ператвараючы простае імя файла ў поўны каталогавы запіс з вокладкамі, акцёрскім складам і метазвесткамі. Вынікі перадаюцца ў фронтэнд TypeScript React праз WebSockets, таму бібліятэка абнаўляецца ў рэжыме рэальнага часу па меры апрацоўкі даных, а ўсе байты метазвестак захоўваюцца ў шыфраванай базе даных SQLCipher з аўтэнтыфікацыяй на аснове JWT і ролевым доступам.

У той час як большасць каталогізатараў губляюць працаздольнасць пры страце доступу да шараванага рэсурсу, Catalogizer распрацаваны так, каб заставацца карыснымі нават падчас збояў. Часовая няспраўнасць SMB кампенсуецца экспаненцыяльным аднаўленнем злучэння, засцерагальным механізмам, які спыняе спробы даступу да нефункцыянальнага хоста, бесперапынным маніторынгам стану і афлайн-кэшам метазвестак, які працягвае адказваць на запыты карыстальнікаў па апошнім вядомым стане — гэта розніца паміж «усё прыкладанне не працуе, бо перазагрузіўся адзін NAS» і «адзін рэсурс недаступны, але ўсё астатняе працуе». Акрамя каталогізацыі, сістэма служыць аператыўным інструментам для кіравання калекцыяй: аналітыка тэндэнцый росту і адсочвання якасці/версій, генерацыя прафесійных справаздач PDF, канвертар PDF у відарысы/тэкст/HTML, экспарт/імпарт абраных элементаў (JSON/CSV), сінхранізацыя з воблачнымі сховішчамі S3, Google Cloud Storage ці лакальнымі тэчкамі. І гэта не маналіт, які проста аказаўся вялікім, — сістэма наўмысна сабрана з 21 паўторна выкарыстоўваемага модуля digital.vasic.* Go і кліенцкіх пакетаў TypeScript, кожны з якіх незалежна пратэставаны і версіянаваны, таму тыя ж адборныя модулі аўтэнтыфікацыі, файлавай сістэмы, стрымінгу і назірання, што працуюць у Catalogizer, забяспечваюць усю лінейку прадуктаў. Якасць не дэкларуецца самастойна: фрэймворк Challenges і HelixQA правяраюць кожную абвешчаную магчымасць праз антыблеф і пацвярджэнне фактамі.

Змест

Існуючыя менеджары медыя зыходзяць з адзінага сховішча і адзінага тыпу медыя. Рэальныя калекцыі жывуць на мностве NAS-шараў і пратаколаў, дэградуюць, калі адзін з шароў знікае, і ўключаюць фільмы, музыку, гульні і праграмнае забеспячэнне. Catalogizer быў створаны, каб ставіцца да ўсіх пратаколаў аднолькава, перажываць нястабільныя сеткавыя сховішчы і забяспечваць адзін аўтарытэтны, узбагачаны і зашыфраваны каталог для ўсяго.

Ён аб’ядноўвае ў адзін самахостны, зашыфраваны пакет тое, што звычайна патрабуе стэка асобных інструментаў: пратакол-незалежнае паглынанне, якое ставіцца да кожнага сховішча аднолькава, устойлівасць, якая захоўвае каталог працаздольным нават пры адключэнні сховішчаў замест таго, каб крахнуць разам з імі, і шматправайдарнае ўзбагачэнне, якое ператварае зыходныя файлы ў праглядальную бібліятэку з апісаннямі. Эфект мадульнай архітэктуры назапашваецца: паляпшэнне ў файлавай падсістэме ці новы плагін для правайдара ўсталёўваецца адзін раз і падымае ўсе кампаненты, таму Catalogizer пастаянна ўдасканальваецца разам з асяроддзем. Каротка кажучы, гэта розніца паміж медыя-індэксам і медыя-*сістэмай* — такой, якой вы валодаеце, якая перажывае нястабільную інфраструктуру і чыю надзейнасць даказана, а не проста абяцана.

  • Адзіны шматпратаколны кліент файлавай сістэмы (SMB/FTP/NFS/WebDAV/лакальны) з адзіным інтэрфейсам.
  • Афлайн-кэш і засцерагальнік, каб каталог заставаўся працаздольным падчас адключэння сховішчаў.
  • Поўная дэкампзіцыя на 21 паўторна выкарыстоўны падмадуль digital.vasic.* і кліенцкія модулі на TypeScript.
  • Каталог з шыфраваннем на ўзроўні захоўвання (SQLCipher) і сінхранізацыяй у рэжыме рэальнага часу (WebSocket) з інтэрфейсам.
  • Даказаны кантроль якасці праз фрэймворк Challenges і інтэграцыю HelixQA.

  • Нястабільныя сеткавыя сховішчы: вырашана з дапамогай экспаненцыяльнага адкладання паўторных спроб, засцерагальніка, праверкі стану і афлайн-кэша з палітыкай выдалення, які падае закешаваныя метаданыя, калі крыніцы недаступныя.
  • Рознастайнасць пратаколаў: вырашана шляхам абстрагавання кожнага пратакола за агульным кліентам digital.vasic.filesystem, каб вышэйшыя ўзроўні не ведалі пра пратаколы.
  • Бяспека даных: вырашана шыфраваннем на ўзроўні захоўвання SQLCipher разам з аўтэнтыфікацыяй JWT/RBAC і прамежкавым праграмным забеспячэннем для санітызацыі запытаў.
  • Падтрымка ў маштабе: вырашана вынясеннем усяе агульнай логікі ў асобна правераныя падмадулі замест маналіту.

  • Go + Gin — высокапрадукцыйнае ядро REST API (catalog-api); абрана для канкурэнтнасці і прапускной здольнасці пры бесперапынным маніторынгу.
  • TypeScript + React + Tailwind (Vite) — адаптыўны інтэрфейс catalog-web з абнаўленнямі ў рэжыме рэальнага часу.
  • WebSockets — сінхранізацыя даных у рэжыме рэальнага часу паміж бэкэндам і інтэрфейсам.
  • SQLCipher (зашыфраваны SQLite) — зашыфраванае сховішча метаданых; падтрымка SQLite/PostgreSQL праз digital.vasic.database.
  • Кліенты SMB/FTP/NFS/WebDAV — шматпратаколнае паглынанне праз digital.vasic.filesystem.
  • Знешнія метаданыя (TMDB, IMDB, TVDB, MusicBrainz, Spotify, Steam) — плагіны-правайдары для ўзбагачэння.
  • Prometheus + OpenTelemetry — метрыкі і трасіроўка праз digital.vasic.observability.
  • Docker / кантэйнер зборкі — паўторныя зборкі (Tauri/Rust праз catalogizer-builder).
  • Redis — кэшаванне і абмежаванне частаты запытаў праз digital.vasic.cache / ratelimiter.
  • S3 / Google Cloud Storage — сінхранізацыя з воблакам і захоўванне кропак аднаўлення.