In this article, we are going to take a deep dive into the Frapper project template and see all details implementation of it.
- ASP.NET Core 3.1
- Entity Framework Core 3.1
- Visual Studio 2019
- SQL Server 2019
- .NET Core SDK 3.1
- Custom User Management
- Unit Of Work Using Entity Framework
- Unit Of Work Using Dapper
- Configure Menus by Roles
- Custom Grids
- Cache Services
- Entity Framework Core
- Create Pdf files
- Create Notice
- Capture Photo from WebCam
- Cropping Images and storing
- Create Notice
- Download Files
- Download Excel Reports
- Exception Logging
- Globalization and Localization
- health checks
- jQuery Datetime pickers & Bootstrap Datetime pickers
- Jtable Grid
- Modal popups
- Ordering Menus
- Upload Files to store in a folder
- Upload Files to store in Database
NuGet Packages which are used in Project
- Clone code from Github: git clone https://github.com/saineshwar/Frapper
- Open solution Frapper.Web.sln in Visual Studio 2019
- There are 2 Database Scripts FrapperDB (Main Database),FrapperAuditDB (Request Audit Database) Download Database Script
- appsettings.json file update DatabaseConnection (FrapperDB Database) , AuditDatabaseConnection (FrapperAuditDB Database)
- Run Database Script which is provided
- Make Changes in ConnectionStrings, ApplicationSettings, Exceptional, RedisServer in appsettings.json file
- Build project which will restore all NuGet Packages
- Final Step Run Project
Project Structure is simple to understand.
Frapper.Web which is Main ASP.NET Core Project Template.
Frapper.Common this project contains all common libraries which are used in a project such as Session keys, AppSettings, ConnectionStrings, Algorithms.
Frapper.Entities this project contains all Entities.
Frapper.Repository this project contains all Class which access database. In this part we have separated Responsibility into two different part reading and writing.
Command Folder contains all Commands such as Insert, Update, Delete using both Entity Framework and Dapper.
Queries Folder contains all Select Queries Using both Entity Framework and Dapper.
Frapper.Services this project is used to write business logic and also common services such as generating Excel, PDF, Sending Emails. Frapper.Services project has reference to with Frapper.Repository project which means it can access the database directly and Frapper.Services project can be accessed in Frapper.Web project.
Frapper.ViewModel this project contains all ViewModel used in project.
Till now we have seen Project structure if Frapper project now let’s Move Forwards and see all features.
In this project we have used jQuery Confirm Alerts.
Custom User Management
Custom User Management which contains Login, Registration, Forgot Password, Change Password. Disabling and enabling users.
All CRUD operations are done using the Repository Pattern and Unit of Work Pattern. Also, we have separated Responsibility into two different part reading (queries) and writing (commands).
- Change password
- Forgot Password
- Email Sent with Reset Password Link
Email Reset Link
Unit Of Work Using Entity Framework
Unit Of Work Using Dapper
Configure Menus by Roles
For Captcha we have used DNTCaptcha.Core Library.
In this project we are using 2 caching services
- Memory Cache
Memory Cache Implementation
Redis Cache Implementation
Entity Framework Core
Create Pdf files
We are using this DinkToPdf Library for creating pdf.
In creating Notice form we have used Date Range Picker and CKEditor.
For rendering Notice we have used Bootstrap Modal pop.
Capture Photo from WebCam
Cropping Images and storing
For Cropping Images, we are using SixLabors.ImageSharp library.
Download Excel Reports
For downloading Excel, we have used EPLUS library.
For Logging exception, we have to use StackExchange.Exceptional.AspNetCore.
FluentValidation validation library for building strongly-typed validation rules.
Globalization and Localization
We have used 5 languages for demo. For that we have created 5 resource files.
jQuery Datetime pickers & Bootstrap Datetime pickers
- jQuery Datetime picker
- Bootstrap Date Range Picker
We have used bootstrap modal popups and we have also rendered form in modal popup. And wrote whole validation using jQuery validation plugin.
We are using Toasts Notification in this project.
Notification Partial View
For ordering menus, we are using jQuery UI sortable.
Upload Files to store in a folder
Upload Files to store in Database