Data model
Schema, migrations and the invariants the application refuses to violate.
Software where the user is doing work
A build with real state, real permissions and real failure modes. The interesting engineering is in the data model, the authorisation boundaries and what the interface does when a request is slow or fails.
Schema, migrations and the invariants the application refuses to violate.
Who may read and write what, enforced on the server and not only in the interface.
Empty, loading, partial, error and offline treated as designed states.
Logging, backups and a deployment path that can be run more than once.
01Next.js with a typed API layer
02A split frontend and service tier when the domain warrants it
Software where the user is doing work