Imagine writing a back-end for an MMO game, you have a set of characters that belong to a user who can improve the characters stats by either playing with them or by equipping some items. Besides being massive, it sounds easy enough, right?
Now, what if the user can freely edit some parts of the DB completely bypassing the Backend and there is nothing you can do about it?
Not only that, these items and characters have a real value worth thousands of dollars so transparency, reproducibility, fairness is a must.
This is precisely what we are doing at Metasoccer, a football manager play2earn blockchain game where our characters and currency can be freely trade-able in the blockchain while the games are executed in a transparent and reproducible way in our back-end so our users can be sure that they can never be tricked.
We use a monorepo (rushjs) that holds the entire project, Frontend (Vue migrating to React), Backend (services based monolith) and our smart contracts.
As for the database, we are using a mix of relational and document oriented all based on PostgreSQL.
This is a small summary:
We use Typescript as much as we can, right now we use it for:
The other only language that we use is Solidity, used to write the Smart Contracts.