Inspiration

Merchant's Bag was born from a developer's love for RPGs. As a Game Master for 10 years, I noticed there still wasn't a truly easy way to manage the table without getting lost in thousands of papers, character sheets, and notebooks. There was a lack of an environment where we could have various centralized resources to help us in all our adventures.

Then came the idea to create Merchant’s Bag. Unlike other RPG tabletop management systems, this one you can literally carry in your pocket (laughs)! The app has a mobile-optimized version, providing real-time practicality for your RPG table.

But that's not all: the goal is to provide complete immersion for the player. Besides carrying the records of their achievements and epic battles, the player can negotiate, buying or selling items in the market created by the campaign's Game Master, and making requests that can be accepted or refused. It is a truly immersive buying and selling experience right at the table. Today, Merchant’s Bag supports all types of RPG systems — from the most famous ones, like D&D, Pathfinder, and Ordem Paranormal, to casual adventures.

What it does

Merchant's Bag has several features to facilitate organization and make adventures more dynamic:

System for the Game Master:

  • Registration of campaigns, characters, items, monsters, scenarios, and objects;
  • Ready-to-use catalog with items from various RPG systems (weapons, boots, shields, etc.);
  • Registration and editing of the interactive campaign map;
  • Visualization and management of all players at the table;
  • Creation of NPCs for the scenes;
  • Complete history and log of everything that happened at the table;
  • Creation of cities, shops, and ecosystems for the players to explore.

For the Player:

  • Registration of characters and their respective RPG character sheets;
  • Management of item bags and the economy (gold, silver, and bronze) acquired;
  • Scenario exploration: enter Dungeons and visit the cities created by the Game Master;
  • Interaction and commerce: buy and sell items in the local market;
  • Real-time visualization of the campaign map.

How we built it

How we built it

To build Merchant's Bag, we focused on a modern, scalable, and high-performance architecture, allowing the application to run smoothly on both the web and mobile apps. We used TypeScript end-to-end throughout the project, ensuring safe static typing and cleaner, more predictable code.

On the frontend, we built the interface using the React Native framework aided by the Expo library, which allowed us to maintain a unified codebase and deliver an optimized experience across multiple platforms. To ensure players had quick access to data without relying on constant network requests, we implemented WatermelonDB as a local database directly on the user's device, bringing blazing-fast speed to reading items and character sheets.

All server-side business logic was developed in Node.js and hosted via Firebase Cloud Functions, providing a serverless infrastructure that scales automatically based on demand. Data exchange between the application and the backend server is handled via a REST API. For financial processing and managing in-app purchases, we integrated Stripe along with the RevenueCat library to orchestrate and validate transactions across app stores.

Finally, all source code is versioned and securely stored on GitHub. To ensure agility when delivering updates, we set up CI/CD pipelines based on terminal commands, fully automating our deployment process in a fast and secure manner.

Challenges we ran into

The biggest challenge faced during development was not in the feature code itself, but in the version deployment process and the strict adherence to Apple's guidelines.

We had a total of 14 rejected submissions to the App Store. We faced a complex bug in the app submission system: the packages we were sending were not correctly attaching the in-app purchases within the binary. Because the items were being sent separately from the app, they were not included in Apple's review platform. This made it impossible for the reviewers to test them and resulted in several denied submissions until we isolated and fixed the linking issue.

Accomplishments that we're proud of

Out of everything we built, our absolute biggest point of pride in Merchant's Bag is, without a doubt, the interactive Grid system. It is incredibly exciting to see how it brings encounters to life, allowing Game Masters to easily position players, monsters, and objects right into the scene.

We designed a powerful yet intuitive feature where you can craft your own fully customized battle grid—and the best part? You can build the entire experience right from the palm of your hand, directly on your smartphone!

The real magic happens at the tabletop: every single player in the campaign can view and explore the dungeon in real-time on their own phones. It creates a deeply shared and thrilling experience, taking the immersion of playing together around the table to a whole new level!

What we learned

The greatest technical takeaway was learning a new approach to board development for mobile platforms. We created a solution where users can interact with a board system directly on their smartphone screens.

We implemented an organizational mechanism that can be dragged and customized (drag-and-drop) in whatever way the user finds most comfortable. It was a fantastic interface development experience, resulting in a highly immersive system that is completely different from the standard we usually see in apps with a theme similar to Merchant’s Bag.

What's next for Merchants Bag

Our goal is to reach a large community of users, ensuring that everyone can fully enjoy all the features Merchant's Bag has to offer for their RPG sessions. We are committed to continuously optimizing the app so that, with every update, the experience becomes even better for all players. As passionate RPG fans ourselves, we hope the app serves as a starting point for more people to discover and fall in love with tabletop RPGs just like we did.

Built With

Share this project:

Updates

Submission history