Shipped this project!
At first, I thought microservices wouldn’t be that hard. I had already built some projects adapted to Kubernetes, so I wanted to explore this approach further.
However, it turned out to be much harder than I expected.
For example, I chose gRPC as the backend service protocol. That meant learning a lot of new things, and it doesn’t integrate smoothly with TypeScript types. The types are not fully compatible, so you often need to write converters. Also, I can’t directly reuse JSON, which is used across the whole project, because I’m still unsure whether gRPC should be the primary data format or not.
On top of that, the types generated by gRPC come with many limitations, and there aren’t many resources available for TypeScript developers. There are also challenges like connection management, version control, and more.
The hardest part is designing the plugin system. I’ve discussed it many times with friends and AI. This version isn’t the best, but I still can’t come up with a better solution. The current strategy is mostly provided by AI, since almost none of my real-life friends are into programming.
I’ll keep working on it until it’s complete. This might be the last project I do in high school—and probably the largest one as well.
I hope I can make it.