Repository navigation
Documentation
English · Español
Proxy Builder is a desktop and Android app (Tauri 2 + Rust + React/TypeScript) for building Magic: The Gathering proxy decks and exporting them to a print-ready PDF. This wiki is the reference for understanding, extending, debugging and rebuilding it. The user-facing presentation is the repository README.md.
Every page describes the code as it is now, with real file paths and symbols, and tries to explain why things are built the way they are. Anything not verified in the code is marked Inferred:.
| If you want to… | Read |
|---|---|
| Use the app | User-Guide |
| Use it on a phone or tablet | Mobile |
| Move decks to another device | Deck-Sharing |
| Build and run it | Development-Setup |
| Understand the whole system in ten minutes | Architecture |
| Know the rules every change must follow | Conventions |
| Look up a term | Glossary |
| Find which file does what | File-Index |
- Development-Setup: prerequisites, pnpm policy, commands, bindings, hooks.
-
Testing-and-CI: vitest, cargo tests, golden tests, every
pnpm check*gate, the CI workflows. - Releases-and-Auto-Updates: the release script, signing model (including the Android key), the Android APK, in-app updater.
- Conventions: architecture, design-system, i18n and code rules with their rationale.
- Architecture: layers, process boundaries, data locations, diagrams.
-
IPC-and-Error-Handling: every command,
AppError, bindings, long jobs and events. -
Rust-App-Layer: startup,
AppState, thepbimg://protocol, thumbnails, Tauri configuration, and the Android layer (tls.rs,ciclo.rs, the Kotlin plugin).
-
Deck-Model:
Deck,DeckCard, sources, marks, print settings. - Storage-and-Blobs: SQLite schema and migrations, blob store, cache, data directories.
-
Deck-Package-Format: the
.pbdeckfile. - Deck-Library: the deck library (tags, favourites, notes, covers, offline details).
- Decklist-Parsing: accepted list formats, the parser, the list exporter, Archidekt import.
- Scryfall-Integration: client, resolution pipeline, languages, search, token detection.
- External-Sources: the allow-listed non-Scryfall sources (Cockatrice, magicthegathering.io, MTGJSON).
- Card-Identification-and-OCR: linking custom images to real cards, OCR, batch linking.
-
Layout-Engine:
PagePlan, the single geometry for screen and paper. - Imaging-and-PDF: framing, bleed, corners, the PDF writer.
- Export: the export job, presets, list export.
- Live-Preview: the sheet preview, slots, drag and drop, image unmounting.
- Statistics: deck statistics, prices, probabilities.
- Designer-Overview: concepts and how the designer fits in.
-
Designer-Engine: the rendering engine (
proxy-core::diseno). - Designer-Composition: multi-face cards, layouts, abilities, bodies.
- Frame-Packs: the pack format, built-in, Original and downloadable packs, free fonts.
- Designer-App-Layer: the Tauri side of the designer.
- Designer-UI: the «Diseñar» view.
- Card-Editor-Dialog: «Editar carta».
-
Game-Engine: the pure engine of the game table (
crates/mesa): model, actions, randomness, visibility, undo and replay, teams, turn order, deaths, best-of encounters and the summary of a game. - Game-Table: the «Jugar» tab: the session around the engine, image preparation, saving and resuming, mat, board, several players (local game, layouts, teams, formats, deaths), drag, menus, shortcuts, the log and the chat, the end summary, history and replay, sounds and settings.
- Online-Play: online games: iroh P2P with a host and guests, the direct code, the room server (identity without accounts, playgroups, rooms, host election and migration), images over the network, absentees and expelling, the own relay and deployment.
- Mobile: the phone and tablet layouts, touch rules, the Back button, the life cycle, files and sharing on Android, TLS, limits and what has not been tried.
- Deck-Sharing: sending and receiving decks between devices: nearby devices, the code and the QR, the offer, with or without proxies, replacing a deck that already exists.
- Frontend-Architecture: structure, shared components, build config.
- State-Stores: the zustand stores and their data flow.
-
Internationalization:
t(), dictionaries, the three kinds of language. - Themes-and-Skins: themes, skins, materials, tweakcn themes.
-
Icons: Iconify icons, the generated bundle (
pnpm iconos), the icon picker and its Rust client. - Settings-and-Shell: the app shell and the settings dialog.
- Tutorials: the guided tour of each screen and the help button.
- Decklist-Panel, Add-Card-and-Variants, Set-Browser: the card-getting dialogs and panels.
- Card-Search: the Search screen, looking up any card without a deck.
English is the reference language. Every page also exists in Spanish under its translated title (for example User-Guide is Guía de usuario); a language bar under each title and the paired links in the sidebar switch between them. Spanish index: Documentación.
The wiki is part of the definition of done: any change that adds, modifies or removes a feature, command, setting, format, migration, architecture rule or release step updates the affected pages in the same piece of work. Page conventions:
- Flat files named
Page-Name.md; links written[Text](Page-Name)without.md. - Each page starts with a one-to-three sentence summary and ends with a
## See alsolist. - Paths and symbols in backticks, checked against the code; uncertain claims marked Inferred:.
- Mermaid for diagrams. No secrets, no local absolute paths, no dates or personal names.
- New pages are linked from this page and from the sidebar, in every language, and every change is applied to all language versions.
Use and build · Uso y desarrollo
- User-Guide · Guía de usuario
- Development-Setup · Preparación del entorno de desarrollo
- Testing-and-CI · Tests y CI
- Releases-and-Auto-Updates · Versiones y actualizaciones automáticas
- Conventions · Convenciones
Architecture · Arquitectura
- Architecture · Arquitectura
- IPC-and-Error-Handling · IPC y manejo de errores
- Rust-App-Layer · Capa de aplicación Rust
Data · Datos
- Deck-Model · Modelo del mazo
- Storage-and-Blobs · Almacenamiento y blobs
- Deck-Package-Format · Formato del paquete de mazo
- Deck-Library · Biblioteca de mazos
Getting cards · Conseguir cartas
- Decklist-Parsing · Parseo de la lista del mazo
- Scryfall-Integration · Integración con Scryfall
- External-Sources · Fuentes externas
- Card-Identification-and-OCR · Identificación de cartas y OCR
Layout, images, PDF · Maquetación, imagen y PDF
- Layout-Engine · Motor de maquetación
- Imaging-and-PDF · Imagen y PDF
- Export · Exportación
- Live-Preview · Vista previa en vivo
- Statistics · Estadísticas
Card designer · Diseñador de cartas
- Designer-Overview · Visión general del diseñador
- Designer-Engine · Motor del diseñador
- Designer-Composition · Composición del diseñador
- Frame-Packs · Packs de marcos
- Designer-App-Layer · Capa de aplicación del diseñador
- Designer-UI · Interfaz del diseñador
- Card-Editor-Dialog · Diálogo Editar carta
Game table · Mesa de juego
Mobile · Móvil
Frontend · Frontend
- Frontend-Architecture · Arquitectura del frontend
- State-Stores · Stores de estado
- Internationalization · Internacionalización
- Themes-and-Skins · Temas y skins
- Icons · Iconos
- Settings-and-Shell · Ajustes y shell
- Tutorials · Tutoriales
- Decklist-Panel · Panel de la lista del mazo
- Add-Card-and-Variants · Añadir carta y variantes
- Card-Search · Búsqueda de cartas
- Set-Browser · Explorador de sets
Reference · Referencia