Перейти к содержимому
Все проекты
07 · OFFLINE HANDBOOK · LARPНа сайт

Tamriel Codex: An offline handbook for Android and Windows in 10 days, ready by game day

  • Mobile first

Стек:

  • Vue 3
  • TypeScript
  • Vite
  • Pinia
  • Vue Router
  • VueUse
  • vee-validate
  • Tailwind CSS
  • daisyUI
  • Iconify
  • Capacitor
  • Electron
  • electron-builder
  • SQLite
  • jeep-sqlite
  • sql.js
  • qrcode
  • qr-scanner
  • marked
  • pdfjs-dist
  • mammoth
  • sharp
  • node-html-parser
  • vue-tsc
  • ESLint
  • oxlint
  • oxfmt
  • Playwright

использовал я

Роль
Sole developer
Команда
One person, built together with Claude
Срок
10 days, June 25 – July 4, 2026
Статус
Used at the game, next version planned

What I did

  • The whole appThe interface, the local database and the Android and Windows builds from one Vue 3 and TypeScript codebase. I picked up the mobile stack, Capacitor and the Android build, along the way.
  • Exporting the game dataWrote a parser with Codex and Playwright that exported texts, PDFs and images from the VK group. Then, together with Claude, turned them into the app's data.
  • Search across the handbookGlobal search from the header across 11 sections, from the pantheon to the news. Clicking a result opens the card or scrolls the rules to the right section.
  • Sharing without internetCame up with and built sharing of notes, characters and backstories by QR: one player shows the code on screen, the other scans it with the camera.

Context and starting point

The game

A live-action role-playing game set in The Elder Scrolls world, about 100 players. There was no client as such: I built the app for free at the players' request. At the game it was used by the Aldmeri Dominion faction, which is why the codex speaks in the voice of an Altmer chronicler.

The situation

The game materials were scattered across a VK group: rules in .docx and PDF, news, newspapers, decrees and rumors as posts, articles, attachments and images. Players had to bring a stack of paper to the game or read an awkward PDF on their phones.

Players needed to find things in the game's knowledge base fast and keep their own notes. There is no internet at the game site, people play from Android phones and PCs, and the deadline was fixed: the game on July 5, 2026.

Goal

July 5

is game day, and the app had to work by then. The aim was to make the game better: get rid of the stack of paper and awkward PDFs, give players the rules and lore with fast search, their own notes and a way to share them without internet.

Process, architecture and decisions

What's inside

The game rules are a tree of collapsible sections, next to a quick guide, 13 classes with levels and the original PDFs of seven rulebooks in a built-in viewer. Lore: the pantheon ranked by the game's decree, clans and houses, towers, a guide to Tamriel and the creation of the world.

"News of Tamriel" brings together a newspaper by province, history and rumors by year and documents of the online cycles with filters. The four in-game scripts have their own fonts, glyph tables and a live translator. Players keep their own data right there: notes, important characters, backstories and tags with filtering.

Architecture

To make it by game day, I went with a familiar web stack instead of native Android, Flutter or React Native: one Vue codebase runs on both the phone and the PC. All content is built into the app, and the VK link stays only as attribution.

  • CLIENTOne codebase

    Vue 3 and strict TypeScript, Pinia, Vue Router, Tailwind CSS and daisyUI.

  • SHELLSTwo shells

    Capacitor builds the Android APK, Electron builds a portable Windows .exe that needs no installation.

  • CONTENTBuilt-in handbook

    Static data in TypeScript files, with images and PDFs bundled inside the app.

  • DATAPlayer data

    SQLite on the device: notes, characters, tags and backstories. The schema is updated through versioned migrations.

  • BUILDContent pipeline

    At build time the rules turn from .docx into a section tree, images are compressed to 768 px WebP, and the original PDFs are placed alongside.

Sharing without internet

  1. 01NoteA player opens a note, a character or a backstory
  2. 02QR on screenThe app shows the entry as a QR code
  3. 03CameraAnother player scans the code, and the app remembers the chosen camera
  4. 04A copy of their ownThe second player gets the same entry

Inside the code is compact JSON, compressed and encoded in base45. That string fits the alphanumeric QR mode, which is denser than the byte mode, and native scanners don't mangle it.

  1. JSON · UTF-8 compression
  2. deflate-raw encoding
  3. base45 QR code

A phone at the game site

On the phone, important characters collapse into accordion cards, the hardware Back button closes modals, and tap targets are 44–48 px. Light and dark themes are both available: depending on the device, each player preferred one or the other.

Room for updates

Every QR code carries the schema version: if a code was made in a different version, the older app asks to be updated. Database migrations carry the player's data over when a new build is installed. A new handbook section takes one navigation entry: the menu item, the home page card and the route appear on their own.

Player data

All player data stays on the device, nothing is sent to a server. The QR format is closed, so only the app can read the codes. Incoming codes are validated: a damaged code or one from an unknown schema version is rejected.

Quality and builds

The app was written together with Claude following the rules in the repository's CLAUDE.md: code conventions, the search architecture, tone and rules for content, tap target sizes. That kept the pace high: 106 commits in 10 days.

Types are checked by vue-tsc on every build, and the code goes through ESLint and oxlint. I tested the app by hand on my own phone and PC, and before the game handed it to a few players and collected their feedback.

The APK and the portable .exe are built with local scripts, and the builds were handed out to players as files in the chat and the group.

Challenges

Game data only in a VK group

Проблема
News, newspapers, decrees, rumors and documents sat in a VK group as posts, articles, PDF attachments and images, while the app had to work without internet.
Решение
I needed a quick solution, so I built the export scenario with Codex and Playwright. Articles became text, PDF attachments became text via pdftotext, and post images were downloaded locally. Then the agent wrote the scripts that converted everything into the app's format.
Итог
All built-in content came from this export: about 24 newsletter pieces, rumors covering 11 years, about 37 cycle documents and 41 images. It all works offline and can be found with the search in the header.
Сделал бы иначе
For the next game: content updates without rebuilding the app, so organizers can hand new materials to players themselves.

Rules from documents to search

Проблема
The rulebooks were in .docx and PDF, and a PDF is awkward to read on a phone and slow to search for the right clause.
Решение
A script builds the section tree from the .docx versions of the rulebooks. The original PDFs sit alongside and open in the built-in viewer.
Итог
Search finds a rule down to the section and scrolls to it. Players specifically mentioned the rules with fast search.

A note in one QR code

Проблема
The limit is the largest QR code, version 40 with 4,296 characters, and Cyrillic text compresses poorly.
Решение
I chose field limits so that even incompressible Cyrillic text is guaranteed to fit: a note gets 100 characters for the title and 2,000 for the text. The final check is done against the actual code size.
Итог
At the game, players shared notes by QR without internet.
Сделал бы иначе
Next step is large notes: split the data across several QR codes in a row, or use a QR code as a bridge to connect two phones and transfer data directly.

Results

  • 10 daysfrom the first to the last commit, the day before the game
  • 2platforms from one codebase: Android and Windows
  • 11sections in global search
  • 4in-game alphabets with fonts and a translator

At the game on July 5, 2026, the app was used by the Aldmeri Dominion faction. Instead of a stack of paper and PDFs on a phone, anything took seconds to find. Players mentioned the convenience, the rules with fast search, the light and dark themes, the joke easter eggs and the help with translating the alphabets.

Need an app that works offline on phones and PCs?

I'll build the Android and Windows versions from one codebase: a local database, fast search and data sharing without a network.