An education aimed web app similar to Udemy, where users can access educational content in various categories, add courses to the cart and purchase, view the profiles of content producers and filter courses accordingly.
In addition, adding courses with the admin panel, assigning courses to content producers, adding categories, creating campaigns, displaying notifications, displaying data via instant dashboard, creating a to-do list and performing CRUD operations on this list, creating user documents in Excel and also as PDF, consume APIs and with the help of APIs doing translations or searching the internet.
Also, creating a role, assigning a role to users, viewing the communication messages received on the site and replying to them by e-mail, getting informed automatically when a new contact message received.
HomePage.mov
The project topic selection is left to the individuals, however, the desired and completed features in the project content are as follows:
- AspNet Core 3.1 / 5.0 / 6.0 / 7.0
- N Tier Architecture
- Entity Layer
- Data Access Layer
- Business Layer
- Presentation Layer
- Identity
- DI Container
- Reporting
- Dynamic Schedule (To-Do List)
- SignalR - Instant Dashboard
- CQRS - Unit Of Work
- Dynamic API Consume
- SQL Trigger
- JSON Web Token
- DTO Layer
- API Layer
- Fluent Validation
- C#
- .NET Core 5.0
- N Tier Architecture
- Entity Framework
- Fluent API
- JSON Web Token
- SignalR
- HTML, CSS
- JavaScript, Ajax, jQuery
- External API's
- Fluent Validation
- Auto Mapper
- Repository Design Pattern
- Unit of Work
- CQRS
Which is offered to the end user, where operations such as course listing, enrollment and purchasing are carried out.
MainUsage.mov
With dynamic dashboard where operations such as adding courses, managing, assigning roles, user document operations are done.
I used SignalR in order to get instant data on charts and analysis at widgets and used jQuery and Ajax for updating To-Do's. Also, an API is consumed in order to get instant Bitcoin rate. The data exchange interval especially kept this short in order to show the instant change.
Dashboard.mov
In project I used N Tier architecture and also all of the required layers are provided.
Project contains Identity framework. User can:
- Register
- Sign In
- Sign Out
- E-Mail Confirm
- Forgot Password operations
- Reset Password via user page
- Access role based pages
At Admin Panel, admin can list the users and get the user list data as Excel and download their individual info as PDF. iTextSharp and. ClosedXml are used.
In this part, I benefited heavily from jQuery and Ajax technologies. The user can update the status, view the details of the list items and delete the list item by performing the requests without refreshing the page.
With SignalR, I transferred various analysis and statistical data to the dashboard instantly and pulled the instant Bitcoin data through an API and displayed it on the screen.
I did all the operations in the Course entity with CQRS.
I carried out the approval processes in the payment system with Unit of Work. I assigned a SuperAdmin user as default and when user wants to buy the course credits passing into the SuperAdmin's balance.
With the translator API that I have integrated, translation can be made in the desired target language and web search results can be accessed via the search engine API.
I created a trigger that allows records to be posted to the Notifications table when a record is sent to the Contacts table, and inserts parameters from the contacts table there.
CREATE TRIGGER NotificationTrigger ON Contacts
AFTER INSERT
AS BEGIN TRY
SET NOCOUNT ON;
INSERT INTO Notifications (Message, DateTime, MessageWriter)
SELECT 'A new contact message received', GETDATE(), ISNULL(inserted.UserName, 'Unknown User')
FROM inserted;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
THROW;
END CATCH
I included JSON Web Token in API-Campaign layer and used it in campaigns access service. I set token duration as 5 minutes and after accessing the token, I saved it over the cookies for future requests.
Response.Cookies.Append("access_token", (string)token, new CookieOptions
{
HttpOnly = true,
Secure = true, // set to true if you're using https
Expires = DateTime.Now.AddMinutes(5)
});
I developed Campaign entities in API layer and provided all the CRUD operations via API requests.
AutoMapper is used for DTO mapping
Fluent Validation is used in input fields.
Courses are listed dynamically and be filtered by instructor.
Users can add the courses they want to buy to the cart, see the total amount in the cart and buy them. In addition, the undesired courses can be removed from the cart, the updated new amount is reflected in the cart.
Contact messages can be sent by anonymous or logged in user. Admin can view them to see if they have replied before, replies are sent via e-mail via the admin panel.