I'm building a Flutter app for tracking the games people have played or are currently playing, with recommendations based on each user's game library. So far, the frontend has handled API requests and data, but as the project gains users, I need a proper backend for storing user data, making external API calls, authenticating users, and handling the usual CRUD operations.
I have substantial experience with Flask and feel comfortable using it. I also used Express about a year and a half ago, but I haven't worked with it recently. I was initially leaning toward Express because of Node.js's event loop and its large package ecosystem, but I'm unsure whether it makes sense to return to a framework I'm rusty with. Which option would be the best fit for this project?
2 Answers
Because the app includes game recommendations, Python may be the more convenient ecosystem. Libraries such as pandas and scikit-learn will make it easier to experiment with datasets, recommendation algorithms, and collaborative filtering later on. If you choose Python for an API-only backend, I’d look at FastAPI instead of Flask. It supports async endpoints, provides automatic OpenAPI documentation, and uses Pydantic for request and response validation.
If you prefer JavaScript or TypeScript, a TypeScript backend can be great for a small product because of strong typing and the ability to share interfaces with the Flutter-facing API contract or other tooling. I’d consider NestJS or Fastify rather than plain Express if you want more structure or better control. The main thing is to choose the stack you’ll be productive and willing to maintain; Express’s event loop alone isn’t a reason to switch.

That makes sense. I ended up looking into FastAPI and it seems like a good compromise: I can stay with Python while still learning something new and getting useful API features out of the box.