Since there's not much of a spec (past users on newish devices), I would default to:

* Next.js - React on the frontend with endpoints handled by Next.js.

* Postgres for the DB

* Hosted on Vercel (unless otherwise specified).

* S3 for binary files.

If the project scope was anything past what Next.js APIs can reasonable handle (heavy DB migrations required, an admin panel, etc), I'd go with:

* Django Rest (or Django Graphene for GraphQL if it's a better fit) on the backend.

* React on the frontend (possibly still with Next.js if server-side rendering is high priority).

* Postgres for the DB.

* Frontend hosted on Netlify or Vercel.

* Backend hosted on Elastic Beanstalk, DB hosted on AWS Aurora, and S3 for binary files.

> Next.js APIs can reasonable handle (heavy DB migrations required, an admin panel, etc),

You can reasonably handle those in next.js as well!

For backend, I use hasura: https://hasura.io/opensource/

It's a GraphQL backend, that wraps a postgresql database, and handles the heavy lifting. GraphQL is very easy to work with in the javascript/typescript ecosystem.

For admin UI, they're very easy to build with react-admin: https://github.com/marmelab/react-admin

Wrapping them inside next.js is actually doable too, if that's a requirement (or it can be it's own react app, and you can share components between them).