Design patterns
In this project, we follow a set of conventions to ensure that the source code is consistent and easy to maintain. These conventions are based on industry best practices and are designed to make the codebase more readable and maintainable. The conventions cover a wide range of topics, including naming conventions, coding standards, and design patterns. By following these conventions, we can ensure that the codebase is consistent and easy to understand, even for developers who are new to the project.
Problems
Each patterns is designed to solve a specific problem or to meet a specific requirement. Some patterns dictate the nature of the implementation, while others address specific concerns like pagination or filtering.
Each problem is listed in this section, but are detailed in their respective pattern documentation. Each have a list of attributes to consider when deciding for a pattern to implement a solution to a specific problem.
- Entity Patterns: Explain how to address the problem of managing entities in the system.
- List Patterns: Explain how to address the problem of managing a list of items in the system, where the user or the system needs to interact with multiple items at once.
- Details Patterns: Explain how to address the problem of managing a single item in the system, where the user or the system needs to interact with a single item at once, with a focus on the details of the item.
- Command Patterns: Explain how to address the problem of issuing commands to the system, where the user or the system needs to perform an action that changes the state of the system.
- More to come…
- Caching Patterns: Redis and MS Orleans
- Communication Patterns: Sync (RPC) and Async (Messaging)
- Process Notification Patterns: Email, SMS, Push, Server-Sent Events, WebSockets/SignalR
- Image and Document Storage: For use in the system, like storing user profile pictures, project documents, etc.
- Content Management System: For customization of the system by the client, like adding new fields and entities, changing the layout, etc.