In some of my apps (web apps, not games), I put a folder called “data” for files that just contain data that’s better suited for csv, xml, json, etc than it is for either hard coded object definitions or database.
Another term for this kind of thing, at least in the web dev world, at least in 2020 which was when I last was a developer, is “assets”.
A logo for a website is an example of an asset, as is a font file.
Assets is data that’s designed to be immutable.
One thing to keep in mind, however, is that balancing the game will likely involve changing the parameters of the base objects as well as the modifications they can get. After balancing is done, the data won’t change. But during balancing, the data might change quite a bit.
For this reason, it might be worth it to have a set of functions for manipulating these parameters, instead of just going into a big json file and manually altering numbers.
Balancing in this way might make storing this stuff in the database more useful.
Just some thoughts. Again, not a game developer. But I have written a lot of code, and fiddled with lots of “balancing” in systems.
It may seem like overkill to put such data in the DB, but there’s not as much downside as one might expect in my experience.