Repository navigation
Documentation
English · Español
Tapete (called Proxy Builder until 4.0.0; see Rename to Tapete) is a desktop and Android app (Tauri 2 + Rust + React/TypeScript) to prepare, test and play Magic: The Gathering decks: library, statistics, game table, friends, card editor and 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.
- Rename-to-Tapete: what the change from Proxy Builder to Tapete touched, what stays as it was and why.
- 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.
- The-Card-Stamp: the «Tapete · Not for sale» stamp on every printed or exported card, why it cannot be turned off, placement, languages and fonts.
- 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 and its links, host handover without a server, images over the network, absentees and expelling, relays.
- Friends-and-Messages: friends, end-to-end encrypted messages and game invitations through the Tapete server: consent, signed requests, the encryption key, the safety number, the sync loop, links and the QR.
- 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
- Rename-to-Tapete · Cambio de nombre a Tapete
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
- The-Card-Stamp · El sello de las cartas
- 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
- Game-Engine · Motor de la mesa
- Game-Table · Mesa de juego
- Online-Play · Juego en línea
- Friends-and-Messages · Amigos y mensajes
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