I've been mulling this over for the past few days. I'm posting this in the DB section because I think the choice of DB solution does impact things here.
So far, the winning combinations appear to be:
MikroOrm + class-transformer + class validator:
This plays nicely with Nest's tooling and leaves the door open to quickly add code first GraphQL resolvers. However the class packages are slow and somewhat abandoned at this point.
Drizzle or Kysely + zod:
More full stack type safety. But very green projects. I'm also a bit concerned with TS language server performance as the app grows in complexity.
Prisma + zod:
Good DX, but questionably heavy dependency on a Rust engine to power sub-optimal queries
For the non-entity based approach, I'm also curious how I might best leverage DTOs at the controller level.
Are there any other winning combinations I might have missed?