Layered Architecture TypeScript Boilerplate DTO interfaces, no construction possible simple and flat if possible dependencied only to other dtos no enums no validation