Design principles for a three tier website with clear responsibilities and well defined interfaces.
The frontend is implemented as a Single Page Application using Angular.
The frontend communicates with the backend using REST.
The backend is implemented as a RESTful API using ASP.NET Core.
The backend is responsible for security, authentication and authorization.
The backend generates database queries via, for example, LINQ to SQL.
The database exposes simple interfaces by providing views and stored procedures.
The database ensures data is consistent with the help of triggers and constraints.