Datos de agosto de 2026.

Data from August 2026.

El problema y la forma

The problem and the shape

Las comunidades de rol por texto funcionan a punta de spreadsheets, mensajes fijados y la memoria de los moderadores. Las reglas se desvían, las fichas quedan desactualizadas, y cada compra o subida de nivel necesita un humano que la verifique. Izanagi reemplaza eso con software: el estado del juego vive en una base de datos, el bot hace cumplir las reglas dentro de Discord — donde la comunidad ya juega — y la web expone ese mismo estado a cualquiera con el link. No hay paso de sincronización porque no hay nada que sincronizar: Discord y la web leen y escriben la misma fuente de verdad.

Play-by-post RPG communities run on spreadsheets, pinned messages, and moderator memory. Rules drift, character sheets go stale, and every trade or level-up needs a human to verify it. Izanagi replaces that with software: the game state lives in one database, the bot enforces the rules inside Discord where the community already plays, and the website exposes the same state to anyone with a link. There is no sync step because there is nothing to sync — Discord and the web read and write the same source of truth.

Arquitectura

Architecture

Discord Discord la comunidad the community
Bot IZANAGI IZANAGI bot reglas y validación rules and validation
PostgreSQL PostgreSQL fuente de verdad source of truth
Web pública Public website mismo proceso same process
Cualquiera con el link Anyone with the link
  • Un solo proceso. El servidor web corre dentro del proceso del bot y comparte el mismo cliente de Prisma. Publicar una guía desde Discord invalida la caché de la web en el acto, sin cola ni webhook de por medio. One process. The web server runs inside the bot process and shares the same Prisma client. Publishing a guide from Discord invalidates the web cache immediately — no queue, no webhook.
  • Toda mutación es una transacción con auditoría. Cada cambio de recursos escribe su registro con los deltas dentro de la misma transacción, y las operaciones compuestas quedan agrupadas para poder revertirse enteras. Every mutation is an audited transaction. Each resource change writes its own log with the deltas inside the same transaction, and compound operations stay grouped so they can be reverted whole.
  • Las plazas no son un contador. La ocupación de cada habilidad se calcula en vivo desde las fichas, con la herencia entre guías resuelta al vuelo: no existe un número que pueda quedar desincronizado. Slots are not a counter. Occupancy is computed live from the character sheets, with cross-guide inheritance resolved on the fly: there is no stored number that can drift.
  • El corpus es la fuente de verdad. Las guías se editan desde Discord, se guardan en la base y desde ahí se renderizan a los hilos del foro y a la web. Un solo documento, dos superficies. The corpus is the source of truth. Guides are edited from Discord, stored in the database, and rendered from there to both the forum threads and the website. One document, two surfaces.

TypeScript en modo estricto · discord.js 14 · PostgreSQL con Prisma 7 · servidor HTTP de Node sin framework · desplegado en Railway como un único servicio.

TypeScript in strict mode · discord.js 14 · PostgreSQL with Prisma 7 · Node HTTP server, no framework · deployed on Railway as a single service.

Subsistemas

Subsystems

  • Personajes

    Characters

    Registro guiado y ficha canónica anclada en el hilo del jugador.

    Guided registration and a canonical sheet pinned to the player thread.

  • Sucesos

    Events

    Misiones, combates y crónicas: se registran con evidencia y el staff aprueba con una reacción.

    Missions, duels and chronicles: logged with evidence, approved by the staff with a reaction.

  • Narraciones

    Narrations

    Flujo de los narradores, con reparto de recompensas a los participantes.

    Game-master flow, with rewards split across participants.

  • Economía

    Economy

    Tienda, ventas, transferencias entre jugadores, sueldos semanales y mercado negro.

    Shop, sales, player-to-player transfers, weekly salaries and a black market.

  • Progresión

    Progression

    Reparto de stats, ascensos con requisitos verificados y ratificación del staff.

    Stat spending, promotions with verified requirements and staff ratification.

  • Equipamiento

    Equipment

    Inventario, armas con nivel propio y lo que el personaje lleva encima y puede perder.

    Inventory, weapons that level on their own, and what a character carries and can lose.

  • Deseos

    Wishes

    Lo que un jugador pide y el staff adjudica cuando las reglas normales no alcanzan.

    What a player requests and the staff grants when the ordinary rules fall short.

  • Plazas

    Skill slots

    Ocupación de cada habilidad calculada en vivo desde las fichas.

    Per-skill occupancy computed live from the character sheets.

  • Guías

    Guides

    El corpus del rol, editable desde Discord y renderizado desde la base.

    The rules corpus, editable from Discord and rendered straight from the database.

  • Reversión

    Reversal

    Un error del staff se deshace entero: la operación agrupa sus efectos y los revierte.

    A staff mistake is undone whole: the operation groups its effects and rolls them back.

Verlo en vivo

See it live

Las dos superficies públicas salen de la misma base que usa el bot, en vivo.

Both public surfaces read the same database the bot writes to, live.