⬆ BOVEN
Transparant overzicht van de Ta-Na-Si Media & Document Repository — architectuur, technologiestack en ontwikkelingscredits.

Repositorykern

Deze pagina legt uit waaruit het Ta-Na-Si Media & Document Repository is opgebouwd — zijn architectuur, zijn technologie en de mensen achter zijn ontwikkeling. Wij geloven in volledige transparantie: wie een archief gebruikt, of erover nadenkt er zelf een te beheren, verdient het om precies te weten waaruit het systeem bestaat. De pagina Over ons legt uit waarvoor het archief er is; deze pagina legt uit hoe het werkt.

1. Wat de Repositorykern is

De Repositorykern is de software waarop dit archief draait: een volledig onafhankelijk, zelfgehost digitaal archiefsysteem, van de grond af geschreven voor één doel — documenten en media opslaan, ordenen en open beschikbaar stellen als bewijskrachtig bronmateriaal. Het is niet gebaseerd op WordPress, Joomla, Drupal of een ander kant-en-klaar CMS, en het gebruikt geen PHP-framework. Elke component — de databaselaag, de zoekmachine, de curatiewerkruimte, de openbare pagina's — is speciaal voor deze taak ontworpen en geschreven.

De software is gebouwd als multi-installatieplatform: ze bedient niet één centraal archief, maar draagt vele aparte, onafhankelijke archieven. Elk archief — of het nu een kleine familiecollectie is of een groot regionaal repository — is een eigen, volledige installatie met een eigen database, eigen bestanden en een eigen bewaarder. Er is geen gedeelde infrastructuur tussen archieven en geen centrale dienst waarvan ze afhankelijk zijn.

2. Eén codebase, vele onafhankelijke archieven

Elke installatie draait exact dezelfde codebase. Alles wat specifiek is voor één server — zijn publieke adres, zijn databasetoegang, zijn mailafzender — leeft in één enkel omgevingsbestand dat eenmalig bij de installatie wordt aangemaakt en nooit met de code meereist. Deze strikte scheiding maakt het model mogelijk: dezelfde software-update kan op elk archief worden toegepast, klein of groot, zonder de individuele configuratie van welk archief dan ook aan te raken.

Een nieuw archief wordt geïnstalleerd via een begeleide installatie-assistent in de browser — geen commandoregel, geen configuratiebestanden om met de hand te bewerken. De assistent spreekt 18 talen, controleert de vereisten van de server, test de databaseverbinding voordat er iets wordt geschreven, en maakt het eigenaarsaccount aan met een veilig gehasht wachtwoord. De databasetabellen worden aangemaakt door een idempotent migratiesysteem: het kan willekeurig vaak draaien en komt altijd uit op het juiste schema. Latere schemawijzigingen zijn geversioneerd en worden bijgehouden, zodat elke installatie precies kan zien waar ze staat; routinewijzigingen worden automatisch toegepast, terwijl zware wijzigingen wachten op de bewuste bevestiging van de eigenaar. Updates volgen dezelfde zorgvuldige volgorde: eerst een back-up, dan migreren, dan de cache legen.

3. Technologiestack Versie 1.0.0 (Thuringia)

🖥️ ServerStandaardomgeving van Apache + PHP — draait op gewone shared hosting of op elke eigen server; geen containers, geen buildtools, geen externe diensten nodig
🐘 BackendPHP 8.1 of nieuwer — geen framework; de enige serverzijdige bibliotheek van derden is de kleine Markdown-parser Parsedown
🗄️ DatabaseEén multi-driver-laag met ondersteuning voor SQLite (nul configuratie), MySQL/MariaDB en PostgreSQL — elk archief kiest wat bij zijn omvang past
🔎 ZoekenVolledige-tekstindex over alle recordteksten plus negen facetassen (onderwerp, plaats, taal, medewerker, genre, onderdeel-van, collectie, reeks, toegang) met live treffertellingen
🌐 TalenInterface voorbereid op 18 taalpakketten (in vertaling); 49 inhoudstalen native ondersteund in zoeken en facetten, inclusief van rechts naar links geschreven schriften
📦 BestandsopslagOp UUID's geshardeerde mediaboom met deterministische paden — ontworpen om te groeien tot in de miljoenen bestanden; optionele externe replicatie naar S3-compatibele objectopslag
🎨 FrontendHandgeschreven HTML5 en CSS3 in een gelaagd designsysteem, minimale vanilla-JavaScript — elke pagina werkt eerst zonder scripts
🧩 BrowserbibliothekenDrie zelfgehoste opensourcecomponenten, geleverd vanaf het archief zelf en nooit vanaf een CDN: OpenSeadragon voor de zoombare diepteweergave van afbeeldingen (New BSD 3-Clause), de richtext-editor Jodit (MIT) en de Markdown-editor EasyMDE (MIT)
🔒 AuthenticatieSessiegebaseerd aanmelden met sterke wachtwoordhashing, optionele tweefactorcodes (TOTP), vergrendeling na mislukte aanmeldpogingen en CSRF-bescherming op elk formulier
⚡ CachingBestandsgebaseerde paginacache met stampede-bescherming en gescheiden levensduren voor server, browser en CDN; optioneel Cloudflare ervoor
🗺️ SEO & vindbaarheidStreamende XML-sitemap (één bestand of indexmodus voor zeer grote archieven), automatisch gegenereerde robots.txt, gestructureerde metadata (JSON-LD), schone, stabiele URL's
💾 Back-upsVier kiesbare ZIP-back-uptypen met bewaarbeleid, optionele externe synchronisatie via rclone en een beveiligd herstel dat eerst een veiligheidsback-up maakt

4. Zoeken en facetnavigatie

Het hart van het openbare archief is zijn zoekfunctie. Eén enkele volledige-tekstindex dekt elk gepubliceerd record — titel, beschrijving, samenvatting, aantekeningen en artikeltekst — zodat één zoekveld alles bereikt. Maar volledige tekst alleen is niet genoeg voor serieus onderzoek; daarom wordt elk record ook geclassificeerd langs negen facetassen:

  • Onderwerp — de onderwerpen en thema's waarover een record gaat.
  • Plaats — de geografische plaatsen waarop een record betrekking heeft, ontleend aan een gestructureerd plaatsenregister (zie het GeoNames-gedeelte hieronder).
  • Taal — de taal van de inhoud van het record, uit 49 native ondersteunde talen.
  • Medewerker — de betrokken mensen: auteurs, sprekers, fotografen, redacteuren.
  • Genre — de aard van het materiaal: getuigenis, analyse, rapport, enzovoort.
  • Onderdeel van — het grotere werk waartoe een record behoort; verbindt meerdelig materiaal.
  • Collectie — gecureerde, benoemde groeperingen, onderhouden door de bewaarders van het archief.
  • Reeks — geordende groeperingen voor materiaal dat een volgorde volgt.
  • Toegang — het toegangsniveau van een record, bijvoorbeeld openbaar of alleen voor leden.

De facetnavigatie werkt zoals onderzoekers dat van grote institutionele archieven verwachten. Naast de resultaten toont elke as haar meest voorkomende waarden met live treffertellingen — één klik verfijnt de resultaten, en filters van verschillende assen zijn vrij te combineren: bijvoorbeeld alle audiorecords in het Duits over het onderwerp onderwijs uit de jaren negentig. Actieve filters staan als verwijderbare chips boven de resultaten, zodat de huidige verfijning altijd zichtbaar is en elk filter met één klik weer kan worden losgelaten. Waar een as meer waarden bevat dan de zijbalk toont, kan een volledige alfabetische index van de hele as worden doorgebladerd, letter voor letter.

Naast de facetten kunnen resultaten worden beperkt op soort materiaal (artikelen, audio, video, documenten, afbeeldingen, datasets — desgewenst meerdere tegelijk) en op datum, via snelle decenniumlinks of een exact jaarbereik. Resultaten kunnen worden gesorteerd op relevantie, titel of datum en op vier manieren worden weergegeven: als uitgebreide lijst, als afbeeldingengalerij, als compact raster of als diavoorstelling op volledig scherm. De volledige zoektoestand — zoekopdracht, filters, sortering, weergave — leeft in de adresbalk, zodat elke resultatenpagina precies zoals ze is als bladwijzer kan worden opgeslagen, geciteerd en gedeeld.

De facetten zijn geen vrij zwevende trefwoorden: hun vocabulaires worden gecureerd door de bewaarders van het archief, en assen zoals collectie en reeks kunnen hiërarchisch worden georganiseerd. Elke facetwaarde op een recordpagina linkt terug de zoekfunctie in, zodat een lezer altijd van één interessant record kan doorspringen naar al het andere dat het archief bewaart over hetzelfde onderwerp, dezelfde plaats, dezelfde persoon of dezelfde reeks.

5. Recordpagina's

Elk record heeft zijn eigen pagina met een weergave die bij het type past: audio en video spelen rechtstreeks op de pagina af, PDF-documenten openen in een ingebedde viewer, afbeeldingen zijn te bestuderen in een zoombare diepteweergave, en artikelen worden gerenderd uit veilig gefilterde Markdown. Naast het bestand zelf toont een recordpagina de volledige beschrijving, de medewerkers, het grotere werk waartoe het behoort (met navigatie tussen de delen ervan), verwante items die de moeite waard zijn om daarna te bekijken, en kant-en-klare citaten in Chicago-, APA- en MLA-stijl. Elk record draagt machineleesbare metadata (schema.org JSON-LD) en een stabiel adres dat nooit verandert; korte permanente links van de vorm /go/… kunnen worden toegewezen voor citaten in druk en voor externe verwijzingen.

6. Talen

Het archief is gebouwd voor een meertalige wereld, op twee verschillende niveaus.

De interface — alles wat een bezoeker of bewaarder op de pagina's zelf leest — is in het Engels geschreven en houdt elke zichtbare tekst in vertaalbare taalbestanden, nooit begraven in code. Interfacetaalpakketten voor 18 talen zijn in voorbereiding en momenteel in vertaling: Engels, Duits, Frans, Italiaans, Spaans, Portugees, Nederlands, Russisch, Pools, Zweeds, Deens, Noors, Chinees, Japans, Koreaans, Turks, Tsjechisch en Roemeens. Pakketten worden geïnstalleerd en beheerd vanuit het beheerpaneel, dat ook bijhoudt hoe volledig elke vertaling is ten opzichte van de Engelse bron. De installatie-assistent spreekt alle 18 vandaag al.

De inhoud — het gearchiveerde materiaal zelf — ondersteunt native 49 talen: Engels, Duits, Frans, Italiaans, Spaans, Portugees, Nederlands, Russisch, Oekraïens, Pools, Grieks, Zweeds, Deens, Noors, Turks, Chinees, Hindi, Arabisch, Indonesisch, Japans, Vietnamees, Koreaans, Belarussisch, Tsjechisch, Slowaaks, Hongaars, Roemeens, Bulgaars, Kroatisch, Sloveens, Fins, Bengaals, Urdu, Perzisch, IJslands, Iers, Swahili, Thai, Filipijns, Hebreeuws, Punjabi, Telugu, Tamil, Marathi, Hausa, Yoruba, Amhaars, Javaans en Pasjtoe. Records worden gemarkeerd met de taal van hun inhoud, en de taalfacet van de zoekfunctie filtert op elk van deze talen — een lezer kan dus bijvoorbeeld met één klik alles oproepen wat het archief in het Oekraïens of in het Arabisch bewaart. Van rechts naar links geschreven schriften zoals Arabisch, Hebreeuws, Perzisch en Urdu worden overal correct weergegeven.

Daarnaast opent een taalkiezer op elke openbare pagina een machinevertaalde weergave van de pagina, zonder daarvoor een script van derden in de pagina zelf te laden.

7. Plaatsgegevens: GeoNames

De plaatsfacet steunt op een geografisch register dat als hiërarchie is opgebouwd — land, regio, plaats — zodat records precies gelokaliseerd en via de geografie teruggevonden kunnen worden. De basisgegevens (landen en hun bestuurlijke regio's wereldwijd) komen uit de geografische database GeoNames en worden bij de installatie of later vanuit het beheerpaneel in een lokale opzoekopslag geïmporteerd; de bewaarders van een archief kunnen die uitbreiden met hun eigen lokale plaatsen. Plaatsgegevens: GeoNames.org, gelicentieerd onder CC BY 4.0.

8. Vocabulairegegevens: onderwerp- en genrecatalogi

De samengestelde vocabulaires achter facetten zoals onderwerp en genre worden met de software meegeleverd en centraal vertaald, zodat hun termen in elke interfacetaal betekenis dragen. Om ze verenigbaar te houden met gevestigde standaarden voor kennisordening dienen de volgende openbare gecontroleerde vocabulaires als referentiebronnen voor het cataloguswerk: EuroVoc, de meertalige thesaurus van de Europese Unie (© Europese Unie, CC BY 4.0), IPTC Media Topics (© IPTC, CC BY 4.0) en de Getty Art & Architecture Thesaurus (ODC-By 1.0). Elke catalogusterm die van een extern vocabulaire is afgeleid, legt zijn herkomst vast, en de volledige lijst van alle componenten van derden en gegevensbronnen wordt met elke installatie meegeleverd: hier te lezen.

9. De werkkant

Achter het openbare archief ligt een beheerpaneel, ingedeeld in vier gebieden: Personenbeheer (beheerders- en ledenaccounts, rollen, rechten), Interne publicatie (de curatiewerkruimte voor records en de editors), Platformconfiguratie (instellingen, mediavormen, facetten, talen, sitestructuur) en Technologie & gegevens (systeemstatus, diagnose, back-ups). Alles wat de bewaarder van een archief moet kunnen instellen, is via deze pagina's bereikbaar — een archief beheren vraagt geen codewijzigingen.

Records doorlopen een heldere curatieworkflow: aangemaakt als concept, gevuld met metadata en facetten, desgewenst ingediend ter beoordeling, dan gepubliceerd — of later weer gearchiveerd. Bestanden worden geüpload in kleine, hervatbare blokken, zodat grote media ook instabiele verbindingen overleven, en elke upload wordt vóór acceptatie via inspectie van de bestandssignatuur geverifieerd tegen zijn opgegeven type. Voorbeeldafbeeldingen worden automatisch gegenereerd waar de server dat ondersteunt.

Een optioneel ledengedeelte laat een archief groeien tot voorbij zijn bewaarders: geregistreerde leden kunnen stap voor stap vertrouwen krijgen over vier vaste niveaus, van lezen en discussiëren tot het cureren en publiceren van records. De rechten zijn aan beide kanten fijnmazig — beheerrollen zijn vrij te definiëren en putten uit een gedetailleerd rechtenregister, en individuele uitzonderingen kunnen de toegang van elke afzonderlijke persoon verruimen of beperken. De toegang van de eigenaar wordt bewust volledig buiten de database gehouden, zodat de deur naar een archief nooit vergrendeld kan raken door een beschadigd bestand of een mislukte wijziging.

10. Gegevensveiligheid

Back-ups zijn een kernonderdeel: de bewaarder van een archief kan gedateerde ZIP-back-ups maken van de database, de media-inhoud, de installatie of alles tegelijk — op afroep, met een bewaarbeleid dat de nieuwste bewaart en de oudste verwijdert. Elke back-up kan bovendien extern worden gerepliceerd naar elke S3-compatibele opslagaanbieder. Herstellen is bewust beveiligd: het systeem controleert dat een back-up bij de installatie past en maakt een verse veiligheidsback-up voordat het ook maar iets aanraakt. Samen met de geversioneerde schemaregistratie betekent dit dat een met zorg opgebouwd archief op de lange termijn onderhouden, verhuisd en gerepareerd kan worden.

11. Ontwerpprincipes

Het repository is gebouwd rond een kleine set niet-onderhandelbare principes die elke architectuurbeslissing hebben geleid:

  • Geen tracking, geen analytics, geen verzoeken aan derden — elk bestand, inclusief lettertypen en scriptbibliotheken, wordt geleverd vanaf de eigen server van het archief. Er wordt niets over een bezoeker ergens naartoe gestuurd.
  • Open crawlbaar door ontwerp — schone HTML, een gestructureerde sitemap, beschrijvende metadata en een robots.txt die zoekmachines en AI-systemen welkom heet, zodat de gearchiveerde feiten breed gevonden en gelezen kunnen worden.
  • Printbaar en downloadbaar — documenten zijn bedoeld om het scherm te verlaten en de echte wereld in te gaan.
  • Leesbaar in vele talen — 18 interfacetaalpakketten in voorbereiding, 49 inhoudstalen native ondersteund in zoeken en facetten, en een taalkiezer op elke openbare pagina (zie het gedeelte Talen hierboven).
  • Minimale, ingeperkte afhankelijkheden — een handvol zelfgehoste componenten (een Markdown-parser op de server; editor- en viewerbibliotheken in de browser), strikt gescheiden van de eigen code van het systeem. Geen CDN, geen pakketbeheerder, geen buildstap.
  • Omgevingsonafhankelijk — exact dezelfde code draait op elke installatie; alleen één omgevingsbestand verschilt per server.
  • Waardig degraderen — optionele functies controleren hun vereisten en schakelen zichzelf netjes uit waar een server ze niet kan dragen, in plaats van het archief te breken.

12. Ontwikkelingscredits

👥 Project & inhoud

Raven D. Pond & Keylam Folker — oprichters van het Ta-Na-Si-project en bewaarders van deze repositorysoftware. De volledige redactionele koers, alle curatorische beslissingen en de projectvisie achter deze software komen geheel van Raven en Keylam. Zij hebben elke vereiste gedefinieerd, elke functie getest en de ontwikkeling van dit systeem geleid van het eerste concept tot zijn huidige vorm; elke architectuurbeslissing is genomen en goedgekeurd door Keylam.

✨ Softwareontwikkeling

Claude (Anthropic) — de AI-assistent Claude diende als primaire ontwikkelpartner voor dit repository. De PHP-backend, de multi-driver-databaselaag, de zoek- en facetengine, het beheerpaneel, het frontend-designsysteem en alle hulpwerktuigen zijn ontworpen en geschreven in een gezamenlijk proces tussen de vereisten van Raven & Keylam en Claudes codewerk. Dit repository is een voorbeeld van een onafhankelijk archief, gebouwd door directe collaboratieve software-engineering van mens en AI voor een echt project.

📅 Ontwikkelingstijdlijn

De ontwikkeling begon medio mei 2026 en gaat sindsdien in dagelijkse samenwerking door. De software draagt versie 1.0.0; deze pagina geeft de stand van juli 2026 weer.

13. De regels waarmee deze software komt

Elke installatie van deze software draagt dezelfde regels, en wie dit archief heeft geïnstalleerd, heeft ermee ingestemd voordat er ook maar één bestand werd geschreven. Ze zijn kort, en ze zijn geschreven om door een mens gelezen te worden, niet om door een advocaat ontleed te worden: lees ze hier.

In één zin: het archief dat je nu bekijkt, behoort volledig toe aan de mensen die het beheren — zijn naam, zijn collectie, zijn leden, zijn gegevens — en het project achter de software heeft tot niets daarvan een sleutel. Wat in elke installatie blijft, zijn de eigen naam van de software, de grondteksten en de vermelding van de twee mensen die het project hebben gemaakt. Niet omdat een licentie dat zegt, maar omdat een archief dat liegt over zijn eigen herkomst precies datgene heeft gebroken waarvoor het bestaat.

14. Contact & feedback

Dit is een levend systeem — het groeit mee met het project. Stuit je op een technisch probleem of een dode link, of heb je een suggestie voor verbetering, neem dan contact op via de contactpagina die in de voettekst van elke pagina is gelinkt, of laat een reactie achter op een van onze platformkanalen. We lezen alles.