Repository navigation
File Index
Pablo Martínez López edited this page Nov 10, 2026
·
35 revisions
English · Español
Where each area of the repository lives and which wiki page documents it. File lists are taken from the source tree; for per-file behaviour follow the page link.
| Path | Responsibility | Page |
|---|---|---|
package.json, pnpm-workspace.yaml
|
Scripts, dependencies, pnpm policy | Development-Setup |
biome.json, knip.json, lint-staged.config.mjs, .husky/
|
Lint, dead-code and commit hooks | Development-Setup, Testing-and-CI |
vite.config.ts, vitest.config.ts, tsconfig*.json
|
Build and test configuration | Frontend-Architecture |
.github/workflows/ci.yml, release.yml, auditoria.yml
|
CI gates, release pipeline and weekly dependency audit | Testing-and-CI, Releases-and-Auto-Updates |
scripts/ |
idiomas.mjs, sin-title-nativo.mjs, release.mjs, release-notas.mjs, emoji-noto.mjs, iconos.mjs (writes src/lib/iconos/incluidos.ts, pnpm iconos), icono.py (finishes the app icon after pnpm tauri icon: Android adaptive foreground and background, removes icons/ios/), reverso.py (generic card back), android-env.sh (the Android environment, to be sourced), i18n-anadir.py (adds strings to the 15 dictionaries without clashes), sello-letras.py (makes the CJK font subsets of the card stamp with fontTools; re-run when a ja/ko/zhs/zht stamp text changes), sin-hover-solo.mjs (pnpm check:tactil), __tests__/ (idiomas.test.mjs, release-notas.test.mjs) |
Testing-and-CI, Releases-and-Auto-Updates, Frontend-Architecture |
README.md, README.es.md, docs/presentacion/
|
User-facing presentation and screenshots | User-Guide |
docs/packs-de-marcos.md |
Original pack-format document | Frame-Packs |
CLAUDE.md |
Project instructions for the AI assistant | Conventions |
| Path | Responsibility | Page |
|---|---|---|
src-tauri/src/main.rs, src-tauri/src/lib.rs, src-tauri/src/state.rs
|
Startup, command registration, AppState
|
Rust-App-Layer |
src-tauri/src/error.rs, src-tauri/src/jobs.rs, src-tauri/src/registro.rs
|
AppError, long jobs, logging |
IPC-and-Error-Handling, Rust-App-Layer |
src-tauri/src/protocol.rs, src-tauri/src/render.rs
|
pbimg:// protocol, thumbnails and render cache |
Rust-App-Layer, Live-Preview |
src-tauri/src/commands/ (buscar, cards, carpetas, decklist, diseno, export, fichero, fuentes, iconos, identify, layout, library, mesa, pasar, sistema, stats, temas, actualizar) |
Tauri commands by area | IPC-and-Error-Handling |
src-tauri/src/store/ (db, decks, blobs, colecciones, etiquetas, listas, partidas, linaje, amigos, presets, settings, migrations/0001…0010) |
SQLite persistence and blob store | Storage-and-Blobs |
src-tauri/src/package.rs |
.pbdeck import/export (with game lists) |
Deck-Package-Format |
src-tauri/src/optimizar.rs |
Optimizing deck images in place (and the dialog src/features/library/liberar-dialog.tsx) |
Storage-and-Blobs |
src-tauri/src/biblioteca.rs |
Offline deck details for the library | Deck-Library |
src-tauri/src/scryfall/ (client, rate, cache, models, resolve, busquedas, fichas, fichas_auto, nombres) |
Scryfall client and resolution | Scryfall-Integration |
src-tauri/src/archidekt.rs |
Archidekt deck import | Decklist-Parsing |
src-tauri/src/fuentes/ (mod, cockatrice, mtgio, mtgjson) |
Allow-listed external sources | External-Sources |
src-tauri/src/ocr.rs, src-tauri/src/originales.rs, src-tauri/src/commands/identify.rs
|
OCR and original-name identification | Card-Identification-and-OCR |
src-tauri/src/diseno/ (borrador, recursos, pintar, vista, arte, lote, png, traduccion, portapapeles, original, descargables, letras_libres, idioma, letras_cjk) |
Designer application side (idioma: complete a design language in a deck; letras_cjk: download the Japanese, Korean and Chinese fonts) |
Designer-App-Layer, Frame-Packs |
src-tauri/src/temas.rs |
tweakcn theme install | Themes-and-Skins |
src-tauri/src/iconos.rs, src-tauri/src/commands/iconos.rs
|
Iconify client for the icon picker: catalogue, search, icon data, chosen icons kept offline, SVG sanitising | Icons |
src-tauri/src/actualizar.rs |
In-app updater (desktop installers and the Android APK, feature actualizar-local for tests) |
Releases-and-Auto-Updates |
src-tauri/src/tls.rs |
The TLS of each platform; the only place that builds an HTTP client or verifier | Rust-App-Layer |
src-tauri/src/ciclo.rs |
Android lifecycle: save when the app goes to the background, reconnect when it comes back | Rust-App-Layer, Mobile |
src-tauri/src/android.rs and src-tauri/plugins/android-extra/ (src/lib.rs, src/movil.rs, android/ with the Kotlin AndroidExtraPlugin, permissions/) |
The contract with the own Android plugin: share, install an APK, screen on and full screen, multicast lock, name of a content://, files opened from outside. Only Rust calls it |
Rust-App-Layer, Mobile |
src-tauri/src/fichero.rs, src-tauri/src/abrir.rs, src-tauri/src/commands/fichero.rs
|
Chosen files as paths or content://, ZIPs, sharing; a .pbdeck opened from another app |
IPC-and-Error-Handling, Export, Mobile |
src-tauri/src/pasar/ (mod, encontrar, recibir, enviar, imagenes, protocolo, tipos, pruebas), src-tauri/src/commands/pasar.rs, src-tauri/src/store/linaje.rs and src-tauri/crates/proxy-core/src/compartir.rs
|
Moving decks between devices over the shared iroh node: nearby devices, codes and QR, the offer, the transfer, deck lineage and "without proxies" decks | Deck-Sharing |
src-tauri/src/enlace.rs |
Incoming tapete:// and proxybuilder:// links (unirse/<code>, amigo/<code>; ESQUEMAS the ones accepted; deep link, single instance) and the shareable web links (enlace_invitacion, enlace_amigo) |
Online-Play |
src-tauri/src/mesa/ (sesion, preparar, imagenes, guardada, historial, repeticion, tapete, dados, encuentro, originales, ejemplo) and src-tauri/src/commands/mesa.rs
|
Game table session around the mesa crate, deck and image preparation, saved game, history of finished games, replay, mat, look of the dice, mesa_*, partida* and repeticion_* commands |
Game-Table |
src-tauri/src/red/ (perfil, identidad, nodo, protocolo, codigo, colores, anfitrion, invitado, mirada, imagenes, latencia, sucesion, vuelta, mesa, pruebas, pruebas_procesos, fixtures/) and src-tauri/src/commands/red.rs
|
Online play: debug profiles, identity, iroh node, game protocol, direct code, host, guest, spectator, images over the network, red_* commands |
Online-Play |
src-tauri/src/amigos/ (firma, cifrado, cliente, sincronizar, avisar, pruebas_servidor, vectores/), src-tauri/src/store/amigos.rs and src-tauri/src/commands/amigos.rs
|
Friends and messages with the Tapete server: signed requests, the derived encryption key, encrypted messages, the sync loop, notifications, amigos_* commands; vectores/ must match the server's copy |
Friends-and-Messages |
src-tauri/tauri.conf.json, src-tauri/tauri.android.conf.json, src-tauri/capabilities/ (default, escritorio, movil), src-tauri/build.rs
|
Tauri configuration (the Android file is a merge patch) | Rust-App-Layer |
src-tauri/windows/hooks.nsh |
NSIS installer hooks: NSIS_HOOK_PREINSTALL silently uninstalls an old "Proxy Builder" install before Tapete goes in |
Releases-and-Auto-Updates |
src-tauri/icons/ (icono.svg, icono-frente.svg, the PNG/ICO/ICNS made by tauri icon) |
The app icon: SVG sources (whole icon and Android adaptive foreground) and the generated sizes | Development-Setup |
src-tauri/gen/android/ |
The Android (Gradle) project, versioned: manifest with the proxybuilder://, tapete:// and .pbdeck intent filters, FileProvider paths, app/build.gradle.kts with the release signing; the signing key and keystore.properties are never in the repository |
Mobile, Releases-and-Auto-Updates |
src-tauri/assets/ (letras-libres.json, packs-descargables.json, letras-cjk.json, reverso-generico.png) |
Pinned catalogues (free fonts, downloadable packs, Noto Sans JP/KR/SC/TC) and the generic card back | Frame-Packs, Designer-App-Layer |
| Path | Responsibility | Page |
|---|---|---|
src-tauri/crates/proxy-core/src/model.rs |
Deck model and cuentan rule |
Deck-Model |
src-tauri/crates/proxy-core/src/paper.rs, src-tauri/crates/proxy-core/src/units.rs
|
Paper sizes and unit conversions | Layout-Engine |
src-tauri/crates/proxy-core/src/layout/ (plan, grid, arrange) |
PagePlan |
Layout-Engine |
src-tauri/crates/proxy-core/src/imaging/ (frame, bleed, corners, edges, adjust, blur, compactar, decode, encode, probe, pipeline, mitades) |
Image processing | Imaging-and-PDF |
src-tauri/crates/proxy-core/src/pdf/ (compose, estimate, calibration, sello) |
PDF generation (sello: the card stamp as vector text and the sheet-margin line) |
Imaging-and-PDF, Export, The-Card-Stamp |
src-tauri/crates/proxy-core/src/sello.rs |
The Tapete card stamp: texts, fonts, glyph layout (linea), box (caja), placement (SITIOS, colocar, colocaciones), painting (pintar), language (idioma_de_carta) |
The-Card-Stamp |
src-tauri/crates/proxy-core/assets/sello/ (textos.json, sello-ja.ttf, sello-ko.ttf, sello-zhs.ttf, sello-zht.ttf, Noto-CJK-LICENSE.txt) |
Stamp texts in the 15 languages (card and sheet line) and the Noto CJK subsets at weight 600 | The-Card-Stamp |
src-tauri/crates/proxy-core/src/decklist/ (mod, exportar) |
List parser and exporter | Decklist-Parsing |
src-tauri/crates/proxy-core/src/stats/ (mod, funciones, mana, prob) |
Statistics | Statistics |
src-tauri/crates/proxy-core/src/diseno/ (modelo, efectivo, pack, texto, pintar, render, componer, maquetacion, estructura, cuerpos, simbolos, letras, emoji, borrador, textos_motor, tipos_idiomas) |
Designer engine (textos_motor: fixed words the engine paints per design language; tipos_idiomas: offline type lines in other languages) |
Designer-Engine, Designer-Composition, Frame-Packs |
src-tauri/crates/proxy-core/assets/marcos/builtin/, src-tauri/crates/proxy-core/assets/marcos/original/imagenes.json, src-tauri/crates/proxy-core/assets/fuentes/
|
Built-in pack, Original hash manifest, bundled fonts (Spectral, Montserrat, Caladea, and Noto-COLRv1.ttf with Noto-COLRv1-LICENSE.txt for colour emoji) |
Frame-Packs, Designer-Engine |
src-tauri/crates/proxy-core/tests/ (dorados.rs, layouts.rs, dorados/, comun/, compatibilidad/diseno-2.5.9.json) |
Golden and layout tests, and the saved 2.5.9 design for compatibility tests | Testing-and-CI, Designer-Engine |
src-tauri/crates/proxy-core/examples/icono.rs |
Renders icono.svg and icono-frente.svg to 1024 px PNG with resvg for pnpm tauri icon
|
Development-Setup |
| Path | Responsibility | Page |
|---|---|---|
src-tauri/crates/mesa/src/modelo.rs, formato.rs, ids.rs, error.rs
|
The game model (Partida, Carta, zones, players), formats and options, ids, Rechazo
|
Game-Engine |
src-tauri/crates/mesa/src/preparar.rs |
Deck sections for the table and dealing a game (secciones_de_mesa, candidatas_de_lista, iniciar) |
Game-Engine |
src-tauri/crates/mesa/src/lista.rs |
Game lists: ListaDeJuego, CartaDeLista, AvisoLista, Construccion, comprobar
|
Game-Engine, Game-Table |
src-tauri/crates/mesa/src/accion.rs |
The action catalogue (Accion, Cambio, Evento, VERSION_CATALOGO) |
Game-Engine |
src-tauri/crates/mesa/src/azar.rs |
xoshiro256** randomness | Game-Engine |
src-tauri/crates/mesa/src/resolver.rs, aplicar.rs
|
Permissions and randomness; applying events | Game-Engine |
src-tauri/crates/mesa/src/visibilidad.rs, vista.rs
|
Who sees what; views and patches for the screen | Game-Engine |
src-tauri/crates/mesa/src/registro.rs, huella.rs
|
Event log, undo, redo, replay; game fingerprint | Game-Engine |
src-tauri/crates/mesa/src/resumen.rs |
The summary of a game (resumir, ResumenPartida, Puesto): places, rounds and duration counted from the log |
Game-Engine, Game-Table |
src-tauri/crates/mesa/src/muerte.rs, ausencia.rs, encuentro.rs
|
Who is out and why, keeping the hand of an absent player, the best-of scoreboard and the sideboard swap | Game-Engine |
src-tauri/crates/mesa/src/sparring/ (mod, reacciones, amenaza, cartas) and src-tauri/crates/mesa/assets/sparring/cartas.json
|
The sparring phantom: its data, when and how it reacts, threat weights and its 128 cards | Game-Engine |
src-tauri/crates/mesa/tests/ (acciones.rs, propiedad.rs, registro.rs, preparar.rs, catalogo.rs, fixtures.rs, equipos.rs, formatos.rs, turnos.rs, encuentro.rs, muerte.rs, resumen.rs, comun/, catalogo/v1.json) |
Per-action, property, visibility, undo and compatibility tests; fixtures.rs writes the view-and-patches fixture of the screen store test |
Game-Engine, Game-Table, Testing-and-CI |
| Path | Responsibility | Page |
|---|---|---|
main.tsx, App.tsx
|
Entry, providers, window reveal | Frontend-Architecture, Settings-and-Shell |
bindings/ |
Generated TypeScript types (do not edit) | IPC-and-Error-Handling |
lib/ (ipc, errores, trabajos, dialogos, dialogos-abiertos, cierre, image-url, imagen-viva, deck-ops, cartas, idiomas, por-idioma, themes, tema-inicial, temas-instalados, use-ocupado, iconos/incluidos (generated), SmoothScroll, utils) |
Shared helpers (use-ocupado: busy state of slow buttons; idiomas: the table of the 15 languages; por-idioma: ByLang beyond es/en; cierre and dialogos-abiertos: what blocks closing the app) |
Frontend-Architecture, IPC-and-Error-Handling |
stores/ (deck-store, plan-store, ui-store, trabajo-store, actualizacion-store, edicion-store, mesa-store, chat-store, repeticion-store, red-store, amigos-store, iconos-store, busqueda-store, originales-store, vivo-store; __tests__/fixtures/mesa-parches.json) |
Screen state | State-Stores |
lib/ mobile helpers: formato, plataforma, atras, ciclo-de-vida, teclado, escaner, pulsacion-larga, nombre-deck and use-nombre-deck (the factory deck name shown in the current language) |
Format (desktop, tablet, phone) and touch, "is this a phone?", the Android Back button, saving when the app goes to the background, the on-screen keyboard, the only entry to the QR scanner plugin, long press | Mobile, Frontend-Architecture |
components/ touch pieces: barra-superior, hoja-menu, hoja, dialogo-adaptable, ayuda-tactil, ayuda-al-tocar, con-ayuda, lista-secciones, etiquetas-tactiles, pulsacion-larga, manija-redimensionar
|
The phone's top bar and menu sheet (BarraSuperior, HojaMenu and its rows), sheets, dialogs that go full screen on a phone, tooltips that open on tap, sectioned lists, names of icon buttons on long press, resize handles |
Mobile, Frontend-Architecture |
features/pasar/ |
Send and receive decks: the dialog, nearby devices, code and QR, the offer, the image catch-up | Deck-Sharing |
components/, components/ui/
|
Shared and base components (including selector-idioma.tsx, emoji.tsx, icono.tsx, logo.tsx (the app logo in the header, brand colours independent of the theme), selector-icono.tsx, contenido-contextual.tsx and estado-carga.tsx) |
Frontend-Architecture, Settings-and-Shell |
components/emoji/ (boton-emoji, selector-emoji, idioma, insertar) |
The chats' emoji button: popover or phone sheet, the lazily loaded EmojiMart picker with the app's colours, its language, inserting at the cursor | Game-Table |
assets/emoji/ |
Noto Color Emoji images for the UI, fuentes.json, LICENSE.md
|
Frontend-Architecture |
i18n/ (<code>/ per language, plurales-es.json, cargar.ts, traducir.ts, tipos.ts, GLOSARIO.md) |
Interface dictionaries by language and area, the Spanish plural forms, lazy loading, translation with plurals, translators' glossary | Internationalization |
themes.css, index.css, fonts.css
|
Theme tokens, global rules, fonts | Themes-and-Skins |
features/decklist/ |
Left panel | Decklist-Panel |
features/buscar/, stores/busqueda-store.ts
|
The Search screen and the card details | Card-Search |
features/variants/ |
Add card, printings, linking | Add-Card-and-Variants, Card-Identification-and-OCR |
features/set-browser/ |
Set browser | Set-Browser |
features/preview/ |
Sheets, slots, menu, drag | Live-Preview |
features/export/ |
Right panel, presets, list export | Export |
features/stats/ |
Statistics dialog | Statistics |
features/library/ (including partidas-deck, the «Partidas» tab of the properties) |
Deck library screen | Deck-Library |
features/card-editor/ |
«Editar carta» | Card-Editor-Dialog |
features/disenar/ |
«Diseñar» view | Designer-UI |
features/mesa/ (listas/ with eleccion and lista-dialog, mesa-screen, entrada, tablero, disposicion, arrastre, carta-mesa, insignias, pt, imagen-carta, precarga, vista-grande, vida-fantasma, marcas-jugador, notas, notas-mesa, objetivo, mulligan, vida-jugador, ayudas-turno, barra-mesa, partida-local, config-local, ajustes-partida, config-sala, mirar, mesas, selector-disposicion, tablero-mini, lento, equipos, dano-comandante, plano-activo, planes, planar, encuentro, banquillo-dialog, muerte, dano-de-quien, cuentas-muerte, originales, en-vivo/, menus/, dialogos/, acciones, operaciones, atajos, textos-eventos, categorias-eventos, cuentas-registro, registro-panel, chat, cuentas-chat, reaccion-eventos, fin-partida, cuentas-fin, historial-general, cuentas-historial, repeticion, cuentas-repeticion, sonidos, audio, conexion, pantalla, fps, tapete-dialog, colores, flip, entrada-movil, lectura-movil, movil/ with the seats bar, controls, full-screen hand and life screen) |
The «Jugar» tab: entrance, board, menus, dialogs, shortcuts, side panel with the log and the chat, end summary, replay, sounds | Game-Table |
features/mesa/ruleta/ (cuentas, estado, ruleta) and features/mesa/turno
|
The wheel that shows who goes first, and the turn cues on the table: bar chip, notice and board ring | Game-Table |
features/mesa/dados/ (geometria, azar, fisica, escena3d, css3d, plano, piezas, simbolos, cola, capa, aspecto, texturas, sonidos) |
Dice and coins on the table: the solids, the Rapier physics, the three.js scene, the CSS 3D and 2D levels, the roll queue and its layer, the look of the dice (styles and face backgrounds) and their synthesised sound | Game-Table |
features/mesa/sparring/ (boton, reaccion, como-funciona, carta-fantasma, textos) |
The sparring on screen: the bar button and panel, the reaction prompt, the explanation and the texts | Game-Table |
features/mesa/red/ (red-dialog, conexion-red, estado-red, ausentes, volver-red, eleccion-en-sala, codigo, cuentas-conexion) |
Online by direct code: the «Jugar en red» dialog and lobby, network notices, player chips and the reconnecting notice on the table | Online-Play |
features/amigos/ (amigos-dialog, consentimiento, lista, conversacion, seguridad, boton-amigos, enlaces, visto) |
«Amigos»: consent, my code and QR, add (with camera scan on mobile), requests, conversations with invitations, safety number and reports, leaving; enlaces handles incoming tapete:// links |
Friends-and-Messages |
features/settings/ (including mesa.tsx, Settings > «Mesa de juego», and almacenamiento.tsx, Settings > «Almacenamiento»), features/shell/ (app-shell, confirmar-cierre, controles-ventana, save-indicator, scroll-por-vista, use-deck-inicial, actualizacion-automatica, and for phones barra-movil, atras-shell, mesa-completa) |
Settings dialog, shell, close guard, updates UI | Settings-and-Shell, Releases-and-Auto-Updates |
features/tutorial/ (pasos.ts, tutorial.tsx) |
Guided tour of each screen, help button target | Tutorials |
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