A stack is a decision for years, not for one project. I pick boring, proven tools — so the thing is still maintainable three years from now.
The worst thing you can do to a client is leave them a solution written in something nobody but the author can maintain. So my stack is deliberately boring.
Python
Python is the default language of automation and data processing — and that is not a fashion. For practically any file format, protocol or API there is a mature, maintained library. Excel, Word, PDF, CSV, databases, queues, e-mail, driving desktop applications — all within reach.
It is also readable. Someone with basic Python can open my code and follow what happens. That matters a lot if you ever want to hand the project to somebody else.
Django
Django gives you things for free that normally take weeks: an admin panel, authentication, database migrations, a security layer. Instead of writing my twentieth login screen, I spend the time on what is specific to your process.
React
React has been the frontend standard for a decade. A huge number of developers know it, the ecosystem is mature, and components move between projects.
Boring is a feature
Every technology I choose passes the same test: will it still be maintained in three years, and can you find somebody who knows it? That rules out a lot of exciting new things — which is the point.