Reactivities is a social media application developed by .NET 7, React and Typescript. It is an extensive social media program that allows activity management, participant attendance and various profile options. Used:
- CQRS, Clean Architecture and Mediator patterns,
- Middleware,
- MobX for centralized state management,
- Automapper,
- DTOs (Data Transfer Objects.
Design principles such as Clean Architecture, Mediator, CQRS (Command Query Responsibility Segregation) are used. Clean architecture is a software design philosophy that separates the elements of a design into ring levels. An important goal of clean architecture is to provide developers with a way to organize code in such a way that it encapsulates the business logic but keeps it separate from the delivery mechanism. Mediator design pattern is one of the important and widely used behavioral design patterns. Mediator enables decoupling of objects by introducing a layer in between so that the interaction between objects happens via the layer. In addition, CQRS stands for Command and Query Responsibility Segregation, a pattern that separates read and update operations for a data store. Implementing CQRS in your application can maximize its performance, scalability, and security.On the frontend, React will be used to render the components and it will be supported with a typescript template in order to achieve type safety throughout the development. React was chosen due to its popularity and plenitude of resources and guides. SQLLite will be used in the early stages of development due to its lightweight properties and the database will be later migrated to PostGreSQL during deployment.
- To properly check for type-safety issues, we will be using date-fns to get rid of date datatype related issues throughout the application and yup of object schema validation. On the design side, we will be using Semantic UI with React since it successfully delivers various front-end functionalities and is compatible with React. Additionally, it will help us with achieving responsiveness on different device screens, and produce a screen-friendly web application.
- To efficiently develop the end-product, TypeScript will be used in strict mode. Moreover, MobX will be used as the centralized state management of the application on frontend to systematically keep track of the states we will be dealing with. MobX is chosen instead of Redux since MobX has support for TypeScript, which makes it a compatible centralized state management tool choice.
- On the backend, .NET 7 will be used with C# and various frameworks of .NET will be leveraged in order to achieve durability in the database, such as the Entity Framework. A middleware will be written with ASP.NET Core to prevent the application from crashing and handle errors properly. To ensure type safety throughout the backend, AutoMapper will be planned to use. DTOs will be used to pass data from the presentation layer to the service layer, and back, or for simply passing data between layers of our Clean Architecture structure. Moreover, SignalR is implemented for commenting purposes on the activities. As Microsoft describes it, ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of adding real-time web functionality to applications.
- On the other hand, Formik is used on the front end for form-related actions as it helps with Getting values in and out of form state, validation and error messages, handling form submission. Yup will be used for object schema verification purposes.