-
Notifications
You must be signed in to change notification settings - Fork 0
8. Developer Guide
- Flurl : for building URLs : https://www.nuget.org/packages/Flurl/
- HtmlAgilityPack : for parsing html contents https://www.nuget.org/packages/htmlagilitypack/
- Identity Model : https://www.nuget.org/packages/IdentityModel/
- Mailkit : for sending email in application https://www.nuget.org/packages/MailKit/
- Microsoft.AsonetCore.Staticfiles : which contains middleware for serving and browsing static files: https://www.nuget.org/packages/Microsoft.AspNetCore.StaticFiles/
- Serilog.AspNetCore : for logging operations and exception in project https://www.nuget.org/packages/Serilog.AspNetCore
- Serilog.Sinks.File: Write Serilog events to text files in plain or JSON format: https://www.nuget.org/packages/Serilog.Sinks.File
- Sixlabors.ImageSharp.Drawing : a cross-platform replacement for System.Drawing in .net framework which working with images https://www.nuget.org/packages/SixLabors.ImageSharp.Drawing/
- BuildBundlerMinifier: to configure bundling and minification of js, css and html files: https://www.nuget.org/packages/BuildBundlerMinifier/
- ClosedXMl: for working with excel files: https://www.nuget.org/packages/ClosedXML/
- Microsoft.AspnetCore.Mvc.Razor.RuntimeCompilation: which enable runtime compilation for all environment: https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
- Microsoft.AspnetCore.Session: which provide a default set of APIs for building an ASP.NET core application: https://www.nuget.org/packages/Microsoft.AspNetCore.Session/
- AspNetCore.Identity.Mongo: mongoDB provider for ASP.NET core identity framework: https://www.nuget.org/packages/AspNetCore.Identity.Mongo/
- Automapper: a simple library for mapping one object to another: https://www.nuget.org/packages/automapper/
- AutoMapper.Extensions.Microsoft****.DependencyInjection : AutoMapper extensions for ASP.NET Core: https://www.nuget.org/packages/AutoMapper.Extensions.Microsoft.DependencyInjection
- LibphoneNumber-Csharp: C# port of Google's common Java, C++ and Javascript library for parsing, formatting, storing and validating international phone numbers : https://www.nuget.org/packages/libphonenumber-csharp/
- Microsoft.AspNetCore.Hosting****: provide types that help configure and start web application: https://www.nuget.org/packages/Microsoft.AspNetCore.Hosting
- NewtonSoft.Json: this package adds support for formatting and content negotiation to System.Net.Http includes support for json, xml and from UTL encoded: https://www.nuget.org/packages/Newtonsoft.Json/
- Slick-carousel : which is a carousel with some customized design: https://www.npmjs.com/package/slick-carousel
- Font-awesome version 5.15.4: use for icons in admin and shop project: https://fontawesome.com/v5/download
- Intel-tel-input: a javascript plugin for entering and validating international telephones: https://github.com/jackocnr/intl-tel-input
- Bootstrap-Select: jquery plugin that brings select elements into the 21th century with intuitive multiselection, searching and much more: https://github.com/heimrichhannot/bootstrap-select
- Owlcarousel: it is also a carousel with some customized feature which is used in some pages: https://www.jqueryscript.net/demo/Powerful-Customizable-jQuery-Carousel-Slider-OWL-Carousel/
- Animate.css : for having animation effect to html tags: https://animate.style/
- Bootstrap-Color-Picker: for selecting color from whole range of colors in page designs: https://github.com/itsjavi/bootstrap-colorpicke
this project handle multilingual data in two ways: first we have dictionaries file in wwwroot folder of each project (admin and shop). This disctionaries contain the value of static strings which are used in projects in different language.
Another way is for dynamic values which store in database and will be store in multilingual object of each entity.
Inside admin project each user has a role which has different permissions. Each permission is an access to an action in a controller.
Admin project can be accessed by users who “IsSiteUser” field of its entity equal to false. User accounts which are created in shop site this field is always false but admin users are able to create both type of users in admin project.
Menus in admin project will be built based on userRole unless use is SystemAccount
(“IsSystemAccount” equal to true) this user has access to every thing every path or any domains and entities that exist on database, complete and full access.
Authorization were implemented by policy-based authorization. We have a custom policy called role and based on permissions role it allow or forbid a path.
Inside Shop project a site user can register in site and after his/her account is created he can interact with site like commenting, rating, adding like/dislike and doing online shopping and having basket only if main site is a shop.
we have created predefined modules, each module is a viewcomponent which has some parameters as input arguments.
Developer can create any custom module here and add its related record in Module entity of database.
some modules are created in the way that has several views like ProductList or ContentList developer can extend these views for this kind of modules and add that viewName to related enum in the project.