React is currently one of the most popular libraries for building web applications. We are convinced that the React library along with Redux provides a prefect environment for building CRUD applications.
We use Material UI library because it is one of the top user interface libraries for React out there. Also, it is the most reliable and customizable React component library.
We use Redux Toolkit because it addresses common concerns about Redux. Additionally, we use Redux Toolkit Query that provides a powerful data fetching and caching mechanism.
REST is the de-facto standard for building web services on the web. We use the Spring portfolio to build a RESTful service: Spring MVC, Spring Security and others.
We use the Data Access Object (DAO) pattern to hide all the complexities involved in performing CRUD operations in the underlying JDBC mechanism.
We are using isolated data flow for user roles administration. So, you don't have to change something in your database to make the app secure.
The filtering of the data takes place on the server side. So we don't have to download a large amount of data to the client application.
Sorting is performed on the server side - this allows us to sort the entire data set, not just on the current page.
The client application receives only the data it needs to display on the current page. Therefore, a large amount of data does not create problems on the client side.
The CRUD implementation takes into account different data types and performs data validation, which you can customize before generating.
The client application tracks the user's transitions between pages and provides navigation to recently opened pages.
A user with administrator rights can manage user accounts and roles directly from the interface.
The result is an archive with the application source code inside.
The application is ready to use right after downloading the archive, but before that it has to be assembled and run according to the instructions that are in the package along with the source code.
You can easily extend the functionality of the application by following the guidelines and documentation that you will find in the package along with the source code files.