⬆ ВВЕРХ
Прозрачный обзор Ta-Na-Si Media & Document Repository — архитектура, технологический стек и авторы разработки.

Ядро репозитория

Эта страница объясняет, из чего построен Ta-Na-Si Media & Document Repository — его архитектура, его технологии и люди, стоящие за его разработкой. Мы верим в полную прозрачность: каждый, кто пользуется архивом или задумывается о том, чтобы вести собственный, заслуживает точно знать, из чего состоит система. Страница «О проекте» объясняет, для чего нужен архив; эта страница объясняет, как он работает.

1. Что такое Ядро репозитория

Ядро репозитория — это программное обеспечение, на котором работает этот архив: полностью независимая, самостоятельно размещаемая цифровая архивная система, написанная с нуля ради одной цели — хранить, упорядочивать и открыто предоставлять документы и медиаматериалы как доказательный исходный материал. Она не основана на WordPress, Joomla, Drupal или каком-либо другом готовом CMS и не использует PHP-фреймворков. Каждый компонент — слой базы данных, поисковый движок, рабочая зона кураторства, публичные страницы — был спроектирован и написан специально для этой задачи.

Программное обеспечение построено как платформа для множества установок: оно не обслуживает один центральный архив, а несёт много отдельных, независимых. Каждый архив — будь то маленькая семейная коллекция или крупный региональный репозиторий — это собственная полная установка со своей базой данных, своими файлами и своим хранителем. Между архивами нет общей инфраструктуры, и нет центральной службы, от которой они бы зависели.

2. Одна кодовая база, много независимых архивов

Каждая установка выполняет идентичную кодовую базу. Всё, что специфично для одного сервера, — его публичный адрес, доступ к его базе данных, его отправитель почты — живёт в одном-единственном файле окружения, который создаётся один раз при установке и никогда не путешествует вместе с кодом. Именно это строгое разделение делает модель работоспособной: одно и то же обновление программного обеспечения можно применить к каждому архиву, маленькому или большому, не прикасаясь к индивидуальной конфигурации ни одного из них.

Новый архив устанавливается через пошагового мастера установки в браузере — без командной строки, без конфигурационных файлов, которые нужно править вручную. Мастер говорит на 18 языках, проверяет требования к серверу, тестирует соединение с базой данных, прежде чем что-либо записать, и создаёт учётную запись владельца с надёжно хешированным паролем. Таблицы базы данных создаёт идемпотентная система миграций: она может выполняться сколько угодно раз и всегда сходится к правильной схеме. Последующие изменения схемы версионируются и отслеживаются, так что каждая установка точно видит, на каком этапе она находится; рутинные изменения применяются автоматически, а тяжёлые ждут осознанного подтверждения владельца. Обновления следуют тому же аккуратному порядку: сначала резервная копия, затем миграция, затем очистка кэша.

3. Технологический стек Версия 1.0.0 (Thuringia)

🖥️ СерверСтандартное окружение Apache + PHP — работает на обычном виртуальном хостинге или любом собственном сервере; не нужны ни контейнеры, ни инструменты сборки, ни внешние службы
🐘 БэкендPHP 8.1 или новее — без фреймворка; единственная сторонняя библиотека на сервере — небольшой Markdown-парсер Parsedown
🗄️ База данныхОдин многодрайверный слой с поддержкой SQLite (нулевая настройка), MySQL/MariaDB и PostgreSQL — каждый архив выбирает то, что подходит его размеру
🔎 ПоискПолнотекстовый индекс по всем текстам записей плюс девять фасетных осей (тема, место, язык, автор/участник, жанр, часть чего, коллекция, серия, доступ) с живыми счётчиками совпадений
🌐 ЯзыкиИнтерфейс подготовлен для 18 языковых пакетов (в переводе); 49 языков контента нативно поддерживаются в поиске и фасетах, включая письменности с направлением справа налево
📦 Хранение файловМедиадерево с UUID-шардированием и детерминированными путями — рассчитано на рост до миллионов файлов; опциональная репликация за пределы сервера в S3-совместимое объектное хранилище
🎨 ФронтендНаписанные вручную HTML5 и CSS3 в многослойной дизайн-системе, минимум чистого JavaScript — каждая страница прежде всего работает без скриптов
🧩 Браузерные библиотекиТри самостоятельно размещаемых компонента с открытым исходным кодом, отдаваемых самим архивом и никогда — с CDN: OpenSeadragon для масштабируемого глубокого просмотра изображений (New BSD 3-Clause), редактор форматированного текста Jodit (MIT) и Markdown-редактор EasyMDE (MIT)
🔒 АутентификацияВход на основе сессий с сильным хешированием паролей, опциональными кодами двухфакторной проверки (TOTP), блокировкой после неудачных попыток входа и защитой от CSRF в каждой форме
⚡ КэшированиеФайловый кэш страниц с защитой от лавины одновременных обращений и раздельными сроками жизни для сервера, браузера и CDN; опционально Cloudflare перед архивом
🗺️ SEO и обнаруживаемостьПотоковая XML-карта сайта (один файл или индексный режим для очень больших архивов), автоматически создаваемый robots.txt, структурированные метаданные (JSON-LD), чистые стабильные URL
💾 Резервные копииЧетыре выбираемых типа ZIP-резервных копий с правилом хранения, опциональная синхронизация за пределы сервера через rclone и защищённое восстановление, которое сначала делает страховочную резервную копию

4. Поиск и фасетная навигация

Сердце публичного архива — его поиск. Один полнотекстовый индекс охватывает каждую опубликованную запись — заголовок, описание, аннотацию, примечания и текст статьи, — так что одно поле поиска достаёт до всего. Но для серьёзного исследования одного полнотекстового поиска мало, поэтому каждая запись дополнительно классифицируется по девяти фасетным осям:

  • Тема — темы и предметы, о которых идёт речь в записи.
  • Место — географические места, к которым относится запись, взятые из структурированного справочника мест (см. раздел о GeoNames ниже).
  • Язык — язык содержимого записи, из 49 нативно поддерживаемых языков.
  • Автор/участник — причастные люди: авторы, выступающие, фотографы, редакторы.
  • Жанр — вид материала: свидетельство, анализ, отчёт и так далее.
  • Часть чего — более крупное произведение, к которому принадлежит запись; связывает многочастные материалы.
  • Коллекция — курируемые именованные группы, которые ведут хранители архива.
  • Серия — упорядоченные группы для материалов, следующих определённой последовательности.
  • Доступ — уровень доступа записи, например публичная или только для участников.

Фасетная навигация работает так, как исследователи привыкли в больших институциональных архивах. Рядом с результатами каждая ось показывает свои самые частые значения с живыми счётчиками совпадений — один клик сужает результаты, а фильтры разных осей можно свободно сочетать: например, все аудиозаписи на немецком по теме образование из 1990-х. Активные фильтры показываются как удаляемые ярлычки над результатами, так что текущее сужение всегда видно, и любой фильтр можно одним кликом снова сбросить. Там, где ось содержит больше значений, чем показывает боковая панель, можно листать полный алфавитный указатель всей оси, буква за буквой.

Помимо фасетов, результаты можно ограничить по виду материала (статьи, аудио, видео, документы, изображения, наборы данных — при желании несколько сразу) и по дате — либо через быстрые ссылки на десятилетия, либо задав точный диапазон лет. Результаты можно сортировать по релевантности, заголовку или дате и просматривать четырьмя способами: подробный список, галерея изображений, компактная сетка или полноэкранное слайд-шоу. Всё состояние поиска — запрос, фильтры, сортировка, вид — живёт в адресной строке, поэтому любую страницу результатов можно добавить в закладки, процитировать и передать другим ровно в том виде, в каком она есть.

Фасеты — не свободно плавающие метки: их словари курируются хранителями архива, а такие оси, как коллекция и серия, могут быть организованы иерархически. Каждое фасетное значение на странице записи ведёт обратно в поиск, так что читатель всегда может перейти от одной заинтересовавшей его записи ко всему остальному, что архив хранит по той же теме, месту, человеку или серии.

5. Страницы записей

У каждой записи есть собственная страница с подачей, соответствующей типу материала: аудио и видео воспроизводятся прямо на странице, PDF-документы открываются во встроенном просмотрщике, изображения можно рассматривать в масштабируемом глубоком просмотре, а статьи рендерятся из безопасно отфильтрованного Markdown. Рядом с самим файлом страница записи показывает полное описание, авторов и участников, более крупное произведение, к которому она принадлежит (с навигацией между его частями), связанные записи, на которые стоит взглянуть дальше, и готовые библиографические ссылки в форматах Chicago, APA и MLA. Каждая запись несёт машиночитаемые метаданные (schema.org JSON-LD) и стабильный адрес, который никогда не меняется; для цитирования в печати и внешних ссылок можно назначать короткие постоянные ссылки вида /go/….

6. Языки

Архив построен для многоязычного мира — на двух разных уровнях.

Интерфейс — всё, что посетитель или хранитель читает на самих страницах, — написан на английском и держит каждый видимый текст в переводимых языковых файлах, никогда не зарывая его в код. Языковые пакеты интерфейса для 18 языков готовятся и сейчас находятся в переводе: английский, немецкий, французский, итальянский, испанский, португальский, нидерландский, русский, польский, шведский, датский, норвежский, китайский, японский, корейский, турецкий, чешский и румынский. Пакеты устанавливаются и управляются из панели администрирования, которая также отслеживает, насколько полон каждый перевод по сравнению с английским источником. Мастер установки уже сегодня говорит на всех 18.

Контент — сами архивные материалы — нативно поддерживает 49 языков: английский, немецкий, французский, итальянский, испанский, португальский, нидерландский, русский, украинский, польский, греческий, шведский, датский, норвежский, турецкий, китайский, хинди, арабский, индонезийский, японский, вьетнамский, корейский, белорусский, чешский, словацкий, венгерский, румынский, болгарский, хорватский, словенский, финский, бенгальский, урду, персидский, исландский, ирландский, суахили, тайский, филиппинский, иврит, панджаби, телугу, тамильский, маратхи, хауса, йоруба, амхарский, яванский и пушту. Записи помечаются языком их содержимого, и языковой фасет поиска фильтрует по любому из них — читатель может, например, одним кликом вывести всё, что архив хранит на украинском или на арабском. Письменности с направлением справа налево — арабская, иврит, персидская, урду — корректно отображаются повсюду.

Кроме того, переключатель языков на каждой публичной странице открывает машинно переведённый вид страницы, не загружая при этом на саму страницу никаких сторонних скриптов.

7. Данные о местах: GeoNames

Фасет мест опирается на географический справочник, организованный как иерархия — страна, регион, место, — так что записи можно точно привязывать к местности и снова находить по географии. Базовые данные (страны и их административные регионы по всему миру) происходят из географической базы данных GeoNames и импортируются в локальное хранилище-справочник при установке или позже из панели администрирования; хранители архива могут дополнять его собственными локальными местами. Данные о местах: GeoNames.org, лицензия CC BY 4.0.

8. Словарные данные: каталоги тем и жанров

Курируемые словари, стоящие за такими фасетами, как тема и жанр, поставляются вместе с программным обеспечением и переводятся централизованно, чтобы их термины имели смысл на каждом языке интерфейса. Чтобы они оставались совместимыми с признанными стандартами организации знаний, справочными источниками каталожной работы служат следующие публичные контролируемые словари: EuroVoc, многоязычный тезаурус Европейского союза (© Европейский союз, CC BY 4.0), IPTC Media Topics (© IPTC, CC BY 4.0) и Getty Art & Architecture Thesaurus (ODC-By 1.0). Каждый термин каталога, заимствованный из внешнего словаря, хранит сведения о своём происхождении, а полный список всех сторонних компонентов и источников данных прилагается к каждой установке: прочитать его можно здесь.

9. Рабочая сторона

За публичным архивом лежит панель администрирования, организованная в четыре области: Управление людьми (учётные записи операторов и участников, роли, права), Внутренняя публикация (рабочая зона кураторства записей и редакторы), Конфигурация платформы (настройки, формы медиа, фасеты, языки, структура сайта) и Технологии и данные (состояние системы, диагностика, резервные копии). Всё, что нужно настроить хранителю архива, доступно через эти страницы — ведение архива не требует изменений в коде.

Записи проходят понятный кураторский цикл: создаются как черновики, наполняются метаданными и фасетами, при желании подаются на проверку, затем публикуются — или позже снова архивируются. Файлы загружаются небольшими возобновляемыми блоками, поэтому крупные медиафайлы переживают нестабильные соединения, и каждая загрузка перед приёмом проверяется по сигнатуре файла на соответствие заявленному типу. Изображения предпросмотра создаются автоматически там, где сервер это поддерживает.

Опциональная область участников позволяет архиву расти за пределы круга его хранителей: зарегистрированным участникам можно шаг за шагом доверять больше — по четырём фиксированным уровням, от чтения и обсуждения до кураторства и публикации записей. Права тонко настраиваются с обеих сторон: административные роли определяются свободно и черпают из подробного реестра прав, а индивидуальные исключения могут расширить или сузить доступ любого отдельного человека. Доступ владельца сознательно держится полностью вне базы данных, чтобы дверь в архив никогда не могла оказаться запертой из-за повреждённого файла или неудавшегося изменения.

10. Сохранность данных

Резервные копии здесь на первых ролях: хранитель архива может создавать ZIP-копии с отметкой даты — базы данных, медиаконтента, установки или всего сразу — по требованию, с правилом хранения, которое оставляет новейшие и удаляет старейшие. Каждую копию можно дополнительно реплицировать за пределы сервера к любому S3-совместимому провайдеру хранения. Восстановление сознательно защищено: система проверяет, что резервная копия соответствует установке, и делает свежую страховочную копию, прежде чем к чему-либо прикоснуться. Вместе с версионируемым отслеживанием схемы это означает: архив, построенный с заботой, можно обслуживать, переносить и чинить на протяжении долгого времени.

11. Принципы устройства

Репозиторий построен вокруг небольшого набора принципов, не подлежащих обсуждению, — они направляли каждое архитектурное решение:

  • Никакой слежки, никакой аналитики, никаких запросов к третьим сторонам — каждый ресурс, включая шрифты и скриптовые библиотеки, отдаётся с собственного сервера архива. Ничего о посетителе никуда не отправляется.
  • Открыто индексируемый по замыслу — чистый HTML, структурированная карта сайта, описательные метаданные и robots.txt, приветствующий поисковые системы и системы ИИ, чтобы заархивированные факты могли быть найдены и прочитаны как можно шире.
  • Пригодный для печати и скачивания — документы задуманы так, чтобы покидать экран и входить в реальный мир.
  • Читаемый на многих языках — 18 языковых пакетов интерфейса в подготовке, 49 языков контента нативно поддержаны в поиске и фасетах и переключатель языков на каждой публичной странице (см. раздел «Языки» выше).
  • Минимальные, ограждённые зависимости — горстка самостоятельно размещаемых компонентов (Markdown-парсер на сервере; библиотеки редакторов и просмотрщиков в браузере), строго отделённых от собственного кода системы. Без CDN, без пакетного менеджера, без шага сборки.
  • Независимость от окружения — идентичный код работает на каждой установке; от сервера к серверу отличается только один файл окружения.
  • Достойная деградация — опциональные функции проверяют свои предпосылки и чисто отключаются там, где сервер не может их нести, вместо того чтобы ломать архив.

12. Авторы разработки

👥 Проект и контент

Raven D. Pond & Keylam Folker — основатели проекта Ta-Na-Si и хранители этого репозиторного программного обеспечения. Вся редакционная линия, все кураторские решения и видение проекта, стоящие за этим программным обеспечением, целиком исходят от Raven и Keylam. Они определили каждое требование, протестировали каждую функцию и вели разработку этой системы от первоначального замысла до её нынешней формы; каждое архитектурное решение было принято и одобрено Keylam.

✨ Разработка программного обеспечения

Claude (Anthropic) — ИИ-ассистент Claude выступил основным партнёром по разработке этого репозитория. PHP-бэкенд, многодрайверный слой базы данных, движок поиска и фасетов, панель администрирования, дизайн-система фронтенда и весь вспомогательный инструментарий были спроектированы и написаны в совместном процессе между требованиями Raven & Keylam и кодовой работой Claude. Этот репозиторий — пример независимого архива, созданного путём прямой совместной программной инженерии человека и ИИ для реального проекта.

📅 Хронология разработки

Разработка началась в середине мая 2026 года и с тех пор продолжается в ежедневном сотрудничестве. Программное обеспечение несёт версию 1.0.0; эта страница отражает его состояние на июль 2026 года.

13. Правила, с которыми поставляется это программное обеспечение

Каждая установка этого программного обеспечения несёт одни и те же правила, и тот, кто установил этот архив, согласился с ними прежде, чем был записан хоть один файл. Они короткие и написаны так, чтобы их читал человек, а не разбирал на части юрист: прочитать их можно здесь.

Одним предложением: архив, на который вы смотрите, целиком принадлежит людям, которые его ведут, — его имя, его коллекция, его участники, его данные, — и проект, стоящий за программным обеспечением, не держит ключа ни к чему из этого. Что остаётся в каждой установке — это собственное имя программного обеспечения, основополагающие тексты и упоминание двух людей, создавших проект. Не потому, что так велит лицензия, а потому, что архив, лгущий о собственном происхождении, сломал бы то самое, ради чего он существует.

14. Контакты и обратная связь

Это живая система — она развивается вместе с проектом. Если вы столкнулись с технической проблемой или неработающей ссылкой или у вас есть предложение по улучшению, пожалуйста, свяжитесь с нами через страницу контактов, на которую ведёт ссылка в подвале каждой страницы, или оставьте комментарий на любом из наших платформенных каналов. Мы читаем всё.