Router (./textula): decides which controller is responsible for processing the input
Controllers (e.g. RoomsController): take user input and pass it on the model layer
Model: responsible for modeling the problem domain (i.e. implements business rules (e.g. input can't be blank or make duplicates)); the model also interacts with some kind of data store(e.g sqlite, apis, files, etc)
Router (./textula): decides which controller is responsible for processing the input Controllers (e.g. RoomsController): take user input and pass it on the model layer Model: responsible for modeling the problem domain (i.e. implements business rules (e.g. input can't be blank or make duplicates)); the model also interacts with some kind of data store(e.g sqlite, apis, files, etc)