Explore a Kartotek site
For visitors — what you'll see browsing any Kartotek site, and how to find your way around. See Welcome to Kartotek first if you're new to the vocabulary this doc assumes (Post, Category, Stage).
This describes the general shape every page follows. What differs per Post Type — how a Brief card in a listing looks, and what a Full page shows — is documented in that Post Type's own reference page (see the sidebar's Post Type reference group).
Top navigation
The top navigation bar is configured per Domain — an ordered list mixing Posts, Categories, and/or Tags, each shown left to right with its own label (see Organizing and presenting content's "Domain-specific navigation" and Domains, UIDs and addresses). Visiting the bare domain root shows that Domain's own landing target directly, at the root address itself — never a redirect — or a fallback if none is set.
When the full navigation row doesn't fit at the current header width, it's replaced by a single burger control at the header's far left — opening it reveals the exact same items, in the same order, with the same destinations and current-page highlighting as the full row. This is based on the navigation's actual measured width, not the device or window size on its own, so the same Domain can show the full row on one visit and the burger on another (a longer set of labels, an extra nav entry, or a narrower window can each tip it over) — and switches back the moment there's room again, without a page reload. Like every other header control, it's a real, keyboard-operable button — open it, tab through its items, and close it again (by picking an item, pressing Escape, or clicking/tabbing away) without a mouse.
Category sidebar
A Domain can optionally show a collapsible left sidebar — one selected root Category plus all of its descendants, as a branch-folding tree, each node linking to that Category's own page. Off by default. On a narrow screen it opens as an overlay drawer (with a small persistent toggle when closed) rather than permanently displacing the page; on a wider screen it sits alongside the page content and can still be collapsed to a slim strip. Its open/collapsed state isn't remembered across visits — no cookie or identifier is used to track it, so it always starts at its responsive default on a fresh page load.
Header controls
Every page's shell carries the same header for everyone — a visitor and a logged-in administrator see an identical top line, with one exception (the Admin link, last below):
- A chevron next to the site title, when the current Domain has it enabled, opens the public Domain selector — a menu of other Domains on this installation to switch to.
- A compact two-line link group: "About {Domain title}" (only shown when the current Domain has a Presentation Post configured — see Domains, UIDs and addresses) and "About Kartotek" (opens the public Docs site). The privacy notice isn't linked from the header, but stays reachable directly and from Docs.
- A language selector (English/Danish — only the languages actually configured for this installation are listed) is always shown, and is always the rightmost control in this area. It's a persistent, site-wide preference, not a per-page setting — choosing a language has no visible effect on the page you're on, but the next Post page you visit opens in that language instead of the Domain's own default (see Languages and translations), unless that page's own link already specifies a language explicitly. The header's own static text follows your selected language too. A Domain's own configured default language (see Domains, UIDs and addresses) only ever applies automatically, the first time you visit with no language choice recorded yet — it's never itself an item in this selector, since it's a Domain configuration setting, not a language you pick. Once you've chosen English or Danish here, that choice is what the selector always reflects, on every Domain on this installation. Docs is the one deliberate exception: its content stays English-only, since this site's docs aren't translated yet — selecting Danish while reading them shows a small note saying so rather than implying a translation exists.
- A logged-in administrator additionally sees the Domain preview selector and an Admin link/button, alongside the same controls above — the header's only difference between a visitor and an admin.
Deploy/last-content-update timestamps aren't shown in this shared header at all — they're an admin-only convenience available on the Dashboard, not something a visitor sees anywhere.
All of these are plain, keyboard-focusable controls, usable on narrow screens the same as everywhere else on the site.
A Category's page
A Category's page shows a List / Map / Gallery selector in its top-right corner, plus, below that:
- Its presentation post's header, if it has one and that post isn't Hidden — name, avatar, bio, and contact details, laid out as a page header rather than a normal listed post. If there's no presentation post, or it's Hidden, the page simply has no header.
- A feed, a map, or a thumbnail grid of every Post published to it (and to its descendant Categories), plus its own directly-assigned media, depending on the selector — see Organizing and presenting content for how the hierarchy inclusion works, and its own "List, Map, and Gallery views" section for what each view shows and which one loads first. In List view, Posts and media interleave newest first as Brief/Media Brief cards, paginated; an empty Category shows a plain "nothing here yet" message instead of an empty list.
Every Brief card shows a Post-Type badge and its published date — beyond that, what a Brief card actually displays is Post-Type-specific; see that Post Type's own reference page. A Media Brief card shows a media-kind badge, Title, Description, Capture date, and Capture device instead, when available.
A Post's page
Visiting a Post's own address shows its Full view — again, Post-Type-specific in its actual content, but every Full view sits inside the same page shell: the Post's title (linking back to its own live address), a small byline (Published date, Updated date, and a single History link to the Metadata page below — plus, when you're viewing a translated Post, an Original item disclosing the original language and translation status, with the language code itself a quick way back to it) — followed by a row of #tag links if the Post has any (see "Tags," next) — and its content.
One Post Type is a partial exception: a Link post's own address doesn't show a rich page at all — it shows a minimal "this is a link post" notice with the title as a clickable link to its destination. Clicking a Link post's Brief card from a listing skips that notice entirely and navigates straight to the destination.
Images open fullscreen here. Hovering an image (or focusing it with the keyboard) reveals two small controls: a fullscreen icon, and an "i" for that image's own details page — both stay visible on a touch device, since there's no hover to reveal them otherwise. Clicking the image itself does the same thing as the fullscreen control. The fullscreen viewer includes every image on the page, once each, in the order they appear — Left/Right arrow keys, on-screen Previous/Next buttons, or a swipe (on touch) step through them, stopping at the first and last rather than looping around; Escape or the close button exits back to exactly where you were. This is a Post-page-only behavior — a Brief card in a Category/Tag listing just links to the Post when you click its image, same as clicking its title.
Maps open fullscreen too, but only via their own button. An embedded map stays interactive for panning and zooming, and clicking one of its markers/shapes selects it — showing its label and a link to its own details page, without leaving the page. A small Fullscreen button (always visible, since a map is already interactive) opens the same map full-page, preserving whatever you'd panned/zoomed to, with a "Show all" control to re-fit the whole thing on demand; Escape or the close button exits back to exactly where you were.
Tags
Alongside a Category's structured hierarchy, a Post can also carry any number of informal Tags, shown as #tag links beneath its byline. Clicking one goes to that Tag's own page (/_tags/<tagname>) — every Post whose current content carries it, regardless of which Category each belongs to, with the same List/Map selector and pagination a Category's page has, always starting on List. A Post that carried a Tag only in an earlier, since-edited version doesn't appear on that Tag's page. /_tags/ shows a cloud of every Tag currently in use, roughly sized by how many Posts use it. Both pages sit at the same width as a Post's own page. See Organizing and presenting content's "Tags" section for how a Tag differs from a Category.
PrePub and Hidden content
Visiting a PrePub Post shows a "this hasn't been published yet" message; visiting a Hidden Post, or a specific Hidden Version's own address, shows a "this content has been hidden" message (optionally with a Reason the admin gave) — instead of the actual content either way. See Posts and publishing's Stage description for what each means. An admin who is logged in and viewing their own gated content sees the real thing instead, with an indication of its current Stage.
Metadata page
A secondary, less-traveled page exists for every Post at /<uid>/metadata — its facts (UID and aliases, Stage, Type, Category, Published/Updated dates, "Version X of Y"), every past Version in a table, and an Exports section linking to raw JSON-LD/Schema.org addresses, a native JSON export, and a PDF snapshot — see Posts and publishing's "Metadata page and JSON-LD export" for the full reference. Intended for a small, technically-inclined audience (or a tool) rather than everyday visitors. /<uid>/history redirects here for anyone who had the old address bookmarked.
The public docs site
/_docs/ — reachable from every page's shell via the Docs link above, public and unauthenticated — is where every doc and Post/Content Type reference page meant for a public reader lives, including Privacy and analytics, the one deliberate route left to the /_privacy visit-analytics notice. Documentation is a repository-owned, commit-time source, compiled into the site at build time — the same doc is what a visitor reads here and what a logged-in admin sees in the Admin sidebar's own read-only Documentation tree (see Administrator quick start).