- refined - it feels like all the lessons from DRF were put into Starlette.
- lightweight - minimal dependencies, isn't built specifically for relational data (no orm or other constructs from django that were originally built around models etc)
- flexible - has just enough to build the basics without being too opinionated (app/request/response), let's you choose how to handle things like serialization (e.g. add marshmallow)
- documentation - like DRF, has very solid documentation.
- asgi - the successor to wsgi in many ways, allows things like background tasks so I don't need to set up celery.
- authentication/middleware - easy to set up and customize, again clear documentation and api surface
There's probably more, such as it support for websockets, push, and more, but for me I'm just running a standard http api (sqwok.im).
I'd say Starlette will be the successor of Flask.
Totally agree but I'm 2/3 days in with 500 loc - it's worth rebooting if there's something seriously good out there!
Only caveat is that it's not as opinionated as Django, so you'll need to document some rules as to how you structure your code. For what it's worth, this article gives some good advice you can apply.
Best productivity hack I can recommend is that it's worth investing time into observability once you reach product/market fit: you will slowly have to invest more labor into troubleshooting your application rather than merely adding more product features. And depending on your market, some customers might be very sensitive to that.
We've previously tried React+Hasura/Postgraphile and React+DRF/GraphQL, but this is next level productive and a joy to use, and bugs are rare. Particular love for Django CBVs.