Colophon
How this site works.
Glass Atlas is an editorial notebook, not a product demo. Every note is written by hand, and the chat on the homepage answers only from what has actually been published here. This page explains both in plain terms, then goes one layer deeper for anyone curious about the stack underneath.
The notes
Each note is a piece of structured writing — a concept, a workflow, a decision, a piece of practice. Notes carry a category and tags, can link to one another the way a personal wiki does, and are organized for browsing and for search on the notes index.
The chat
The chat on the homepage is grounded retrieval, not a general-purpose assistant. A question is compared against the published notes using semantic search, the most relevant excerpts are assembled into context, and the answer is built from that context. When the notes don't cover a question well, the chat says so plainly instead of guessing — it will not answer from general knowledge outside what's been published here. Every grounded answer links back to the notes it drew from, so the source is always checkable.
The stack
A high-level look at what the site is built with, for anyone who wants the technical version.
- App framework
- SvelteKit + Svelte 5 (runes), TypeScript
- Styling
- Tailwind CSS v4, a small custom design token system, Bits UI for accessible primitives
- Database
- Neon PostgreSQL with the pgvector extension, accessed through Drizzle ORM
- Language model
- OpenRouter for chat completions and embeddings
- Authoring
- A protected admin editor (GitHub OAuth via Auth.js) plus an optional local, agent-assisted drafting workflow
- Hosting
- Railway, auto-deployed from the main branch
How the pieces fit
- 01
Writing a note
A note is written in Markdown, either in the admin editor or through the local authoring workflow. On save, an embedding is generated for the note and stored alongside it so it can be found by meaning, not just by keyword.
- 02
Reading a note
Published notes render as ordinary pages, with related notes, links to and from other notes, and a small graph of the note's nearest connections.
- 03
Asking the chat
A question is embedded and compared against note content, the closest matches are assembled into a compact context, and the language model answers from that context — streamed back token by token — with links to the notes it used.