Please read below topics before starting a new project Single Responsibility Open/Closed Principle Liskov Substitution Interface-Segregation Principle Dependency Inversion Principle Don't Repeat Yourself