Open source менеджер персонажей для настольных ролевых игр
Новый open source проект, созданный Ruby разработчиком Evrone Антоном Богдановым - это хранилище персонажей с огромными возможностями по автоматизации. Рассказываем, как из экспериментального инструмента одного мастера выросло приложение, которым пользуются тысячи игроков по всему миру.
Charkeeper — не первый open source-проект Антона, о котором мы рассказываем в блоге Evrone. Ранее мы писали о PullKeeper — сервисе для сбора и анализа статистики по пулл-реквестам в GitHub и GitLab, а также Emailbutler — инструменте для хранения отправленных из Rails-приложений писем и отслеживания их статусов. В этот раз поводом для нового проекта стала не рабочая задача, а давнее увлечение Антона настольными ролевыми играми.
Первое знакомство Антона с ролевыми системами произошло ещё в конце 1990-х через компьютерную игру Baldur’s Gate 2 и статью о выходе третьей редакции настольной D&D в журнале «Игромания» . С этого момента Антон хотел попробовать поиграть в “Подземелья и драконы”, но рядом долго не находилось подходящей компании.
Идея
Мечту удалось реализовать спустя больше 20 лет - благодаря D&D-клубу в Evrone. Антон присоединился к нескольким играм, начал разбираться в создании персонажей и столкнулся с проблемой, хорошо знакомой начинающим игрокам: правил много, параметры связаны друг с другом, а самостоятельно понять и рассчитать все характеристики непросто.
Можно было воспользоваться официальным сервисом D&D Beyond, но однако Антону не хватало более быстрого и простого интерфейса. Кроме того, часть возможностей и игрового контента сервиса была доступна только после оплаты.
Тогда появилась идея написать собственное приложение.
Я подумал: а почему бы просто не сделать своё? С удобным интерфейсом, чтобы всё быстро работало и не было перегружено огромными изображениями.
Антон начал разработку Charkeeper в 2025 года и не стал ограничиваться только Dungeons & Dragons. Если игрок участвует в нескольких ролевых системах, ему обычно приходится устанавливать разные приложения, привыкать к разным интерфейсам и отдельно хранить каждого персонажа. Поэтому Charkeeper с самого начала задумывался как единая платформа для разных настольных RPG.
Показательно, что проект родился не из анализа рынка, а из решения собственной проблемы и уже в процессе разработки его автор глубже погрузился в правила разных систем, чем за все предыдущие годы как игрок.
Особенности и отличие от аналогов
На рынке приложений менеджмента и хранилищ персонажей для настольных игр есть несколько типов сервисов:
- официальные платные онлайн для одной системы (самый известный DND Beyond);
- официальные платные онлайн для нескольких систем (Demiplane);
- оффлайн приложения (Pathbuilder наверное единственный, и, хотя он неофициальный, но есть paywall).
У каждого типа есть свои ограничения. Charkeeper бесплатен (но приветствует донаты) и имеет ряд своих преимуществ:
- Мультисистемность. Большинство аналогов спод одну систему - Charkeeper поддерживает сразу девять, включая DND (редакции 2014 и 2024 года), Pathfinder, Daggerheart, и продолжает расти. Единственный сопоставимый по охвату конкурент это корпоративный Demiplane.
- Отсутствие жёстких лимитов. Никаких ограничений на количество персонажей и мягкая трактовка правил: можно придумывать свои способности или изменять предел уровней и характеристик персонажа.
- Единый интерфейс на всех платформах. Веб, мобильные приложения, десктоп для Mac и Telegram-бот - везде одинаковый опыт использования.
- Инструменты для мастеров. Отдельный раздел позволяет мастеру видеть листы персонажей игроков, их характеристики, инвентарь и здоровье, а также заранее создавать предметы и «вручать» их персонажам одним кликом прямо в базе данных без обмена файлами и скриншотами.
- Лёгкий вес. Благодаря архитектурному решению с единой кодовой базой (подробнее - в разделе про Tauri ниже) мобильная сборка Charkeeper весит около 5 МБ против 100+ МБ у сопоставимых офлайн-приложений.
- Открытость для homebrew. В активной разработке универсальный конструктор пользовательского контента: свои расы, классы, подклассы, заклинания и предметы для любой системы. Один из пользователей уже добавил 50 собственных классов поверх десяти базовых в Daggerheart.



Одна кодовая база на четыре платформы
Отдельного внимания заслуживает то, как Charkeeper решил задачу кросс-платформенности - это, пожалуй, главная техническая находка проекта.
Charkeeper доступен как веб-приложение, Telegram Mini App, приложение для Android и iOS, а также отдельное приложение для macOS. В основе всех версий находится одно SPA-приложение.
Сначала появилась веб-версия. Чтобы проверить, насколько удобно она работает на мобильных устройствах, Антон запустил Telegram-бота. Пользователь открывал Mini App внутри Telegram и автоматически авторизовался через идентификатор своего аккаунта.
Когда пришло время создавать приложения для мобильных магазинов, Антон сначала рассматривал React Native. Но это потребовало бы фактически переписать уже существующий фронтенд.
Вместо этого Антон выбрал фреймворк Tauri. Он не требует переписывания приложения, а берёт уже готовое JS-приложение и оборачивает его в нативную сборку. В результате получилась одна кодовая база фронтенда (вынесенная в отдельный git-подрепозиторий), из которой собираются:
- веб-версия;
- Android-приложение (Google Play);
- iOS-приложение (App Store);
- десктоп-приложение для macOS;
- Telegram Mini App -тот же SPA, что скачивается в браузере, только запущенный внутри Telegram с нативной telegram-авторизацией.
Практический эффект такого подхода не только в экономии времени разработчика-одиночки на четыре версии одного продукта, но и в весе приложений. Антон вручную следит за тем, чтобы каждый новый билд не «распухал», контролируя и оптимизируя количество JS кода.


Процесс выпуска обновлений тоже завязан на этой архитектуре: сначала обновляется веб-версия, минимум сутки она наблюдается на мониторинге ошибок, и только после этого из той же кодовой базы через Tauri компилируются мобильные и десктопная сборки -с учётом того, что модерация в Google Play и App Store может занимать до нескольких дней, и одновременный релиз всех версий рискует обернуться пересборкой и повторной отправкой в сторы, если баг вылезет уже после публикации.
Технический стек
Под капотом у Charkeeper - знакомый Антону как Ruby-разработчику стек, дополненный современными фронтенд и кросс-платформенными инструментами.
Backend
- Ruby on Rails - основной бэкенд-фреймворк.
- RSpec - модульное и интеграционное тестирование бэкенда.
Frontend
- SolidJS - вместо React выбран более лёгкий SolidJS с похожим синтаксисом: он не требует виртуального DOM и даёт более компактный и быстрый билд, что критично для веса мобильных приложений.
- esbuild - сборка и бандлинг фронтенда.
- ESLint - статический анализ и линтинг JS-кода.
- Cypress - E2E-тесты для проверки критичных пользовательских сценариев.
Кросс-платформенность
- Tauri и Telegram Mini Apps SDK.
Инфраструктура и данные
- Два независимых сервера - европейский и российский без синхронизации.
- Аутентификация через OAuth (Google, Discord, Telegram - на европейском сервере, Яндекс - на российском), из внешних сервисов хранится только идентификатор аккаунта.
- Логин пользователя хранится в зашифрованном виде, пароль в виде хеша по стандартным практикам; никакие email или телефоны не собираются.
- Унифицированная модель данных: все способности, заклинания и умения персонажей разных систем хранятся в единой таблице в одном формате, что упростило добавление новых систем и позволило автоматически переиспользовать общие UI-компоненты (заметки, управление персонажем и т. д.) для всех систем сразу.
- Интеграции с внешними игровыми сервисами. Сторонние разработчики могут получать данные с Charkeeper, и как вариант, выводить данные о персонажах на каком-либо виртуальном игровом столе.
Весь код проекта открыт на GitHub:
Развитие Charkeeper
У проекта два основных направления развития.
Первое - поддержка новых настольных RPG. Благодаря универсальной архитектуре можно интегрировать практически любую систему. Сейчас Charkeeper поддерживает 9 систем, в работе интеграция DC20 (система, которую формирует известный DND-стример The Dungeon Coach), в планах Vagabond, Nimble RPG.
Второе - развитие платформы для homebrew. В перспективе пользователи смогут создавать собственный контент в едином формате, объединять его в модули и использовать в разных кампаниях.
Также продолжается развитие интеграций, импорта персонажей и инструментов для гейм-мастеров.
Из нестандартных сценариев использования - сторонние разработчики берут данные персонажей из Charkeeper по API и визуализируют их в своих инструментах, например на карте для настольной игры, отображая актуальное здоровье и статус персонажа сразу после того, как изменения внесены в Charkeeper.
Мотивация и реакция сообщества
Charkeeper поддерживает один человек, и именно обратная связь от сообщества - главное топливо для дальнейшей разработки. Антон состоит в российских и зарубежных чатах разных ролевых систем и лично видит, как в обсуждениях всплывают рекомендации Charkeeper от самих игроков.
А один из испаноязычных пользователей самостоятельно предложил и сделал перевод интерфейса на испанский язык (сейчас приложение доступно на русском, английском и испанском, хотя полный перевод игрового контента - тысяч способностей и заклинаний из разных систем пока в процессе).
Планы на будущее
На момент написания статьи в системе зарегистрировано около 5000 пользователей, мобильное приложение под Android скачано более 1000 раз, нагрузка на бэкенд выросла за полгода с 30–40 тысяч до почти 100 тысяч запросов в месяц. По неофициальному опросу на Reddit среди игроков в Daggerheart, около 15% пользуются именно Charkeeper.
Дальнейшие планы - это расширение числа поддерживаемых систем и развитие универсального конструктора homebrew-контента, который позволит игрокам создавать собственные расы, классы и предметы в едином формате для любой системы, без необходимости ждать, пока разработчик добавит нужную механику вручную.
Помочь проекту можно несколькими способами: исправить ошибку, добавить тесты, предложить улучшение интерфейса, поработать над переводом или принять участие в поддержке новой игровой системы.
Charkeeper появился как личный инструмент для поддержки хобби, но постепенно превратился в универсальную open source-платформу для игроков и мастеров. Это хороший пример проекта, в котором увлечение, инженерный интерес и обратная связь сообщества усиливают друг друга и помогают одному разработчику создавать продукт для тысяч пользователей.
Присоединяйтесь к сообществу Charkeeper
Каждый отзыв, перевод или pull request помогает Charkeeper становиться удобнее. Проект активно развивается, и Антон открыт к обратной связи, идеям и вкладу со стороны сообщества:
- Код и инструкции по локальному запуску — на GitHub kortirso/charkeeper;
- Попробовать приложение можно в вебе, в Google Play, App Store или прямо в Telegram-боте;
- Есть идея для новой системы, баг или предложение по улучшению — заводите issue в репозитории или пишите в комментариях.
Мы в Evrone верим, что open source — это не побочный продукт, а часть здоровой инженерной культуры, поэтому поддерживаем инициативы наших разработчиков: даём время и ресурсы на эксперименты, помогаем с публикацией и продвижением проектов, делимся опытом с сообществом через блог и открытый код.
Если у вас есть амбициозная задача, для которой не подходит типовое решение «из коробки», — напишите нам, обсудим, как её решить.