I wouldn't say its a crazy approach, I mean some great software has been written from crazy approaches but there are reasons as to why this isn't a great solution.
Why this isn't a good practice
- As VLAZ said in the comments, scalability is difficult with this approach since once you have more data, you're likely going to be performing more complex queries, which are difficult with just JSON files since you haven't set up any custom queries and because as your data grows, your algorithm for performing queries will need to change become more advanced which again, takes timefor you to implement
- Also, the authentication will likely be an issue if the project gets larger since you'll want to manage access to the database and generate multiple access keys, which is another setup process in itself with this approach
- If this is just a side project or something for a portfolio project, since it's not generally used in the industry (and takes lots of extra work on your side to manage the DB, not even getting to the app) it won't impress most employers and even if this is just for fun, I suppose you're also not able to learn new technologies and systems..
Other things to consider
Also, remember that if your site or this server was to go down, all your data would be lost until your site is back online. Whereas, with MongoDB or another service, your data would still be intact and you might be able to route traffic to a backup server or something like that.
I also doubt that it's faster in a way that actually matters to the end user. Most users likely don't care how long an application takes within about 2-3s of waiting (or at least, that's been my experience). Once the wait has increased to about 5-10s, that's a problem, but I doubt that an additional layer to MongoDB or another service would take 5-10s, probably a max of 1s longer, if even. So from my perspective, likely not, whereas making your own algorithm would increase the response time with a larger amount of data (unless its extremely optimized).
To summarize, it likely takes longer, is riskier in the case of an incident, difficult for you as the developer to set up and generally tougher to maintain.
Hope I answered your question. Let me know if I got anything wrong.