SD-Perfumery: a from scratch fully customized small scale e-commerce solution

Github link: https://github.com/pengbo-XUE/Uniwear-Umbraco.git

 

Quick tour for the user side:

Quick tour of the CMS:

SD perfumery created from scratch, design to implementation by a small team of 4 using the ASP.NET MVC framework JavaScript and a number of different APIs such as stripe and send gird. It was completed in a total of 7 sprints coordinated through Trello boards and frequent team meetings as well as meetings with the client.  I was the back-end engineer of the operation but since its only a small team I  also have had to do some work on the front end of the application. The database is managed using Entity framework and created using  database first approach. The authentication  feature is achieved using ASP.NET Core Identity  Entity framework Core.

The application feature a hand crafted CMS for the owner of the store to manage, product, inventory, category, brand, promotions, order operations, users & roles etc, it is the most difficult and time consuming part of the development process.

Here’s a couple of the more interesting features and how I achieved them:

Promotions:

The promotion feature is achieved by first creating a promotion, then sending it to customers using Sendgrid, a promotion E-mail will be sent out to all customers who oped in to receiving promotional material.  The customer can then enter the promotion at the checkout process, the code is sent back to the controller and if the promotion is active and in date and the code is valid a promotion will then be applied to that product, if there is issue with the promotion code then an error message will display stating the exact problem such as an expired code.

Carts:

Carts are achieved using a Hash table (dictionary) in this application, the dictionary has the product’s Id as the key and a class called CartValuePair as the value, the CartValuePair class has two properties one records the quantity of the product in the cart and the other record if any discount has been added to this product type. When the customer add a duplicate item to the cart the instead of creating a new item in the dictionary it would simply increase the quantity by however many the customer has added.