For Next.js App Router projects, I like a structure where schema, validators, server actions, and forms share the same mental model. Drizzle gives the database a readable shape, Zod keeps input honest, and server actions make mutations explicit without spreading API details across the UI.
The interface still matters. A strong admin panel should be dense but calm, keyboard-friendly, responsive, and clear about what changed. If the user has to manage real data every day, visual polish is not decoration. It is part of the product's reliability.