"It depends" is my preferred stack. First define the problem, then we can look at how to implement it. If you mean most websites with simple crud and maybe some user interaction?<p>Very simple model: DynamoDB, especially if it fits in the free tier to start.
More complex model: PostgreSQL, especially for anything between a trivial model and 10 million users (which is most projects). Database migration with Sqitch.<p>Data access method (middleware): GraphQL, because it's a spec rather than an implementation. My preference all things being equal is the database-driven solution Postgraphile, but I've had good experiences with other solutions like Hasura and Apollo Server depending on the problem. Hides complexity of DynamoDB access. Acts as an ORM layer for relational. The only GraphQL engine I avoid unless there is a good reason/requirement is AWS AppSync; I don't consider it fully baked yet as a general purpose data access solution from dev perspective.<p>Authorization: JWT, because I don't have to do an extra lookup, especially in a serverless environment with an API Gateway in front. Row-level security if I'm using PostgreSQL.<p>Authentication: Typically AWS Cognito, because most of my dev work is on AWS, and after you've done it once, redoing is trivial. Google auth for general public access. Simple identity pool for cases with a finite set of users such as an internal tool. If Google Auth on Google Cloud is dead simple, so I give that an honorable mention.<p>Front end: Svelte, because I know HTML, CSS, and JS very well, and Svelte is little more than that while still allowing fast component-driven development, data binding, and other modern features. Svelte calls the GraphQL API. Once all queries are clarified, the GraphQL layer is given an allowlist of acceptable queries and authorized through the JWT.<p>I prefer PWAs to native mobile coding or frameworks like React Native. If a PWA is insufficient, my preference would be Ionic due to my stated earlier experience with HTML, CSS, and JS.<p>I prefer AWS to Azure or Google Cloud. I also prefer regions other than us-east-1. Between those big three, I find prices similar, but options on AWS to be more mature and cover a wider breadth. CDK, CDK Pipelines, and CDK Solutions Constructs is by far my preferred method of developing infrastructure as code. I prefer writing in TypeScript mostly because it allows homogeneous language development from UI on down.<p>If I ever run into a performance problem that is CPU bound (happens fairly rarely), optimizing the lambda or whatever in Rust would be enticing. Most of the time though, it's just cheaper to scale up the instances/provisioning and move on. Developer time is almost always more expensive.