Work

Download as pdf or txt
Download as pdf or txt
You are on page 1of 56

Module Code & Title

CS6004NI Application Development

Assessment Weightage & Type


30% Group Coursework

Year and Semester: 2024 Spring


Assignment Due Date: 10th May 2024
Assignment Submitted Date: 10th May 2024

Group Name
SN Student Name (Group) College ID University ID
1 Prince Adhikari NP01CP4S220007 22015812
2 Yuma Rai NP01CP4S220118 22015804
3 Rose Duwal NP01CP4S220096 22015753
4 Sanikant Kushwaha NP01CP4S220119 22015764
5 Rajan Sah NP01CP4S220122 22015739

I confirm that I understand my coursework needs to be submitted online via MySecondTeacher under the
relevant module page before the deadline in order for my assignment to be accepted and marked. I am
fully aware that late submissions will be treated as non-submission and a mark of zero will be awarded.
Drive Link:
https://drive.google.com/file/d/1XbINycLYew5eKHOJBhEWeh5_OOyimk1R/view?usp=d
rive_link

Acknowledgement

We extend our gratitude to Mr. Bishal GC, our esteemed module leader, and Academic
tutor for his consistent support and guidance overall the coursework and academic
journey. We also want to thank Mr. Abhishek Humagain, our Module Lecturer, for
making us clear on each topic he discusses through us. His efforts to make us more
focused and understandable towards Dotnet were priceless throughout the coursework
journey.

Additionally, with due respect Mr. Bishal GC was fully dedicated to making us clear on
every problem related to the subject matter. His way of teaching and vision has helped
us to complete the given coursework on time. We ran into obstacles that complicated the
development process as we dug more into the project. But rather than giving up, we used
teamwork and research to get beyond these barriers. With every obstacle we overcome,
our confidence in our capacity to create a solid and effective management system
increased.

Also, we want to say thank you to the teaching helpers and staff who worked hard to
make the course successful. They did a lot of important work that we noticed and
appreciate. Lastly, we're thankful for the great leadership of Mr. Bishal GC and Mr.
Abhishek Humagain. They made our learning experience amazing and helped us
succeed in our studies.
Table of Contents
1 INTRODUCTION:..................................................................................................... 1

2 PROGRAM EXECUTION: ........................................................................................ 2

3 SOLUTION DECSRIPTION: .................................................................................... 8

3.1 Features 1 ......................................................................................................... 8

3.2 Features 2 ......................................................................................................... 9

3.3 Features 3 ......................................................................................................... 9

3.4 Features 4 ....................................................................................................... 10

3.5 Features 5 ....................................................................................................... 10

3.6 Features 6 ....................................................................................................... 11

3.7 Features 7 ....................................................................................................... 11

3.8 Features 8 ....................................................................................................... 12

3.9 Features 9 ....................................................................................................... 12

3.10 Features 10 ..................................................................................................... 13

3.11 Feature 11....................................................................................................... 13

3.12 Feature 12....................................................................................................... 13

3.13 Feature 13....................................................................................................... 14

3.14 Feature 14....................................................................................................... 14

4 SOFTWARE ARCHITECTURE: ............................................................................. 15

4.1 Clean Architecture .......................................................................................... 15

4.2 Classes and Purposes .................................................................................... 19

4.2.1 APIs ......................................................................................................... 19

4.2.2 Controllers ............................................................................................... 20

4.2.3 Models ..................................................................................................... 22

4.3 Classes, Methods, and Properties .................................................................. 23


4.3.1 Controllers ............................................................................................... 23

4.3.2 Models ..................................................................................................... 28

5 INDIVIDUAL GROUP REFLECTION: .................................................................... 38

5.1 Prince Adhikari ................................................................................................ 39

5.2 Yuma Rai ........................................................................................................ 40

5.3 Rose Duwal..................................................................................................... 41

5.4 Sanikant Kushwaha ........................................................................................ 42

5.5 Rajan Sah ....................................................................................................... 43

6 CONCLUSION: ...................................................................................................... 44

7. GIT LOG AND HISTORY .......................................................................................... 45

8. FRONTEND PORTIONS ........................................................................................... 46

9. REFERENCES: ......................................................................................................... 50
Table of Figures
Figure 1: Indication of appsetting. Json ........................................................................... 3
Figure 2: Configuration of connection string. ................................................................... 3
Figure 3:Setup for package manager Console. ............................................................... 4
Figure 4: Initiation of Database Migration ........................................................................ 5
Figure 5: Ready for Migration scripts............................................................................... 6
Figure 6: Updating migration scripts. ............................................................................... 7
Figure 7: Running Application in IIS Express .................................................................. 7
Figure 8: User Login and Registration ............................................................................. 8
Figure 9: User Profile ...................................................................................................... 8
Figure 10: Change password via email. .......................................................................... 9
Figure 11: Blog creates, update and delete ..................................................................... 9
Figure 12: Handling file above 3MB. ............................................................................. 10
Figure 13: Pagination and sorting. ................................................................................ 10
Figure 14: Normal user accessing blog without authorization. ...................................... 11
Figure 15: Bloggers to vote on blog post. ...................................................................... 11
Figure 16: Posting comments and reaction on blogs..................................................... 12
Figure 17: Updating and deleting comment after comment. .......................................... 12
Figure 18: Admin creates another Admin. ..................................................................... 13
Figure 19: Blog score. ................................................................................................... 14
Figure 20 : Project Structure ......................................................................................... 17
Figure 21: Separations of Concerns in Clean Architecture............................................ 18
Figure 22: Features of API ............................................................................................ 19
Figure 23: Git log and History. ....................................................................................... 45
Figure 24: Swagger API ................................................................................................ 49
Figure 25: Authentication and Authorization .................................................................. 49
Table of Tables

Table 1 Architecture Layer ............................................................................................ 16


Table 2: Admin Controller .............................................................................................. 23
Table 3: Account Controller ........................................................................................... 24
Table 4: Blog Controller................................................................................................. 24
Table 5: Home Controller .............................................................................................. 26
Table 6: FileUpload Controller ....................................................................................... 26
Table 7: Profile Controller.............................................................................................. 27
Table 8: Base Entities ................................................................................................... 29
Table 9: Blog Table ....................................................................................................... 30
Table 10: BlogImage Model .......................................................................................... 30
Table 11; BlogLog Model .............................................................................................. 31
Table 12: Comment Model ............................................................................................ 32
Table 13: CommentLog Model ...................................................................................... 33
Table 14: Notification Model .......................................................................................... 34
Table 15: Reaction Model ............................................................................................. 35
Table 16: Roles Model .................................................................................................. 36
Table 17: User Model .................................................................................................... 37
Table 18: Individual Member Reflections ...................................................................... 38
CS6004NI Application Development

1 INTRODUCTION:

The assigned group work consists of 30% of the total module grades of the module
“Application Development”. The goal of this group project is to develop a web application
with precise specifications and functionalities, as well as coordinated teamwork among
team members. Developing a blogging management system for "Bislerium PVT. LTD" is
the goal of this task.

The developed application must be able to support its blogging operations as mentioned
and should be developed in C# programming language and the .NET Core Framework.
Blogging system must consist of specific requirements mentioned by the company.
Scalability, security, and maintainability can only be guaranteed by utilizing an enterprise-
level framework, which Bislerium PVT. LTD. understands the significance of. Three
different user categories—bloggers, administrators, and surfers—will be served by the
suggested solution, each with a different amount of capability and access. Along with
facilities for self-registration, login, reactions, comments, and pagination, the program will
have a feature-rich blogging platform with sections for headlines, body material, and
photographs. It will also include rating algorithms for popular pieces and bloggers, an
administrative dashboard with use stats, and push alerts for writers. The application's
goal is to give all users a smooth and enjoyable experience while giving administrators
access to effective management and analytics through the combination of these features.

The primary goal is to create a dynamic blogging platform that can be integrated with the
social media network of Bislerium PVT. LTD. A secure backend architecture utilizing an
enterprise-level framework, an analytics-rich administrative dashboard, and an intuitive
blogging interface should be included in the design. It ought to have areas specifically for
content generation, management, and discovery to accommodate bloggers,
administrators, and surfers.

1
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

2 PROGRAM EXECUTION:

Program execution especially refers to the process of running a computer program or


specific software. Here for execution of any program, we need to prioritize the first step
in project set up. We gradually move on from fulfilling a basic requirement for a project to
hard coding. So, in asp.net project, before doing hard code we need to follow following
instructions for setting up a program:

i. First, we need to install Microsoft SQL Server and SQL Server Management
Studio to provide database service.
ii. Install the latest version of Visual Studio i.e. 2022 and latest version .net 8 for
framework for program execution.
iii. We need to configure development environments like IDE setting, debugging
configurations.
iv. Then we open the git and clone the project that has been placed in the repository
or you can simply download the project and run.
v. Open the project solutions in visual studio 2022.
➔ By opening appsetting. json, configure the connection string in it as
represented through screenshot below:

2
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

Figure 1: Indication of appsetting. Json

Figure 2: Configuration of connection string.

3
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

vi. Open package manager console and create a new migration file.

Figure 3:Setup for package manager Console.

4
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

vii. Write a code to run a new migration file

Add – Migration [Migration Name]

Figure 4: Initiation of Database Migration

5
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

Figure 5: Ready for Migration scripts.

6
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

viii. And the next step is to migrate the script to the database and for that we need to
update the database first.

Update - Database

Figure 6: Updating migration scripts.

ix. Run the Application in IIS Express

Figure 7: Running Application in IIS Express

7
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

3 SOLUTION DECSRIPTION:
A short and brief description of have been provided describing the designs and
implementations of each feature which have been stated below:

3.1 Features 1
Dotnet and Identity Server were set up to track what users do and how they log in. Users
were registered here via user manager function, and we used features like dependency
and service injection to handle user details like Identity User and Identity Role. So,
basically this feature was applied in profile controller for performing CRUD operations on
user’s profile.

Figure 8: User Login and Registration

Figure 9: User Profile

8
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

3.2 Features 2
Basically, User Manager and Sign in Manager were applied for this feature. In this
features Identity feature were used for changing the password once an accurate
password and the current password matches. Furthermore, when a user wants to reset
password via email, it is done through email notifications for valid registered users. So,
these all tasks are basically handled by profile controller.

Figure 10: Change password via email.

3.3 Features 3
This feature was normally applied in blog controller which enables bloggers to create,
edit and delete their post. For this feature, a simple model named Blogs were created
and all the required logics were bult in Service layer after calling DbSet of Blog Model via
application of DbContext.

Figure 11: Blog creates, update and delete

9
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

3.4 Features 4
This feature is all about uploading an image and not handling any files above 3MB.
Basically, all the logics have been built inside FileUploadControllers where a single API
end point for uploading file have been created after accepting file storing path and
IFormFile. And if the file is found to be more than 3 MB, then the API throws Bad requests.

Figure 12: Handling file above 3MB.

3.5 Features 5
This feature is all about pagination and sorting option based on popularity, recency,
and randomness. Algorithms to sort content based on popularity, considering factors like
upvotes and downvotes have been applied here. While, for recent posts, we checked
their creation date and time. Pagination was implemented using functions like Skip and
Take to go through lists of posts.

Figure 13: Pagination and sorting.

10
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

3.6 Features 6
These features basically focus on normal users who can read and access blogs
without the need for authentication. So, all the functional logics for creating this feature
have been applied in Home Controller where API end point is located that triggered the
blogs details without the need of authorization.

Figure 14: Normal user accessing blog without authorization.

3.7 Features 7
This feature is about allowing bloggers to vote on blog posts. All the required logics for
this feature have been implemented in Home Controller and Blog Controller. We stored
reactions separately, noting whether they were upvotes or downvotes. Each reaction
added a new record linked to the blog. We used joins to tally votes for each post. We also
logged who did what and when in the database.

Figure 15: Bloggers to vote on blog post.

11
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

3.8 Features 8
This feature is all about posting comments and reactions on blogs. All the logical
implementations have been applied in Blog Controllers. Like the previous feature,
reactions will be stored with a type identifier and linked to the comment they were made
on. This allows us to track reactions on posts, blogs, or even other comments in the
reaction table.

Figure 16: Posting comments and reaction on blogs.

3.9 Features 9
Once the comment is added to the blog, the user or author has the right to either delete
or update the comment. Deletion follows a soft delete approach, where a flag is
triggered instead of deleting the record entirely. Updates are logged in a separate table
along with the original comment's identifier which are implemented in Blog Controller.

Figure 17: Updating and deleting comment after comment.

12
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

3.10 Features 10

Implementation of a real-time notification system via Blazor Integrations with SignalR.


Establish a connection to the SignalR hub and define methods to handle incoming
notifications. When certain events occur on the server-side (e.g., a new comment is
posted), trigger notifications to be sent to connected clients via SignalR.

3.11 Feature 11

In this feature, a straightforward registration process is implemented, where users are


assigned roles, like admin, using Identity's feature policies. The User Manager handles
user creation and role assignments, ensuring accuracy through database design and
update tracking methods.

3.12 Feature 12

In this feature an Admin can create another Admin with the authorized user credentials.
The logic for this feature has been well implemented in AdminControllers.

Figure 18: Admin creates another Admin.

13
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

3.13 Feature 13

Implemented in the admin dashboard with visualizations based on cumulative counts.


This means that the functionality described earlier, involving the creation of a controller
accessible only to administrators and utilizing LINQ and lambda expressions for
calculations, was integrated into the admin dashboard. Visualizations were added to the
dashboard to display cumulative counts based on the calculations performed.

3.14 Feature 14

This indicates that the functionality described earlier, likely involving the calculation of
popularity scores for blogs and linking them to respective bloggers, was incorporated into
the admin dashboard. The dashboard now provides insights into popular posts and
bloggers, possibly through visual representations or data summaries.

Figure 19: Blog score.

14
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4 SOFTWARE ARCHITECTURE:

Software Architecture defines fundamental organization of a system and more simply


defines a structured solution. It defines how components of a software system are
assembled, their relationship and communication between them. It serves as a blueprint
for software application and development basis for developer team. Software architecture
defines things which results in making many things easier in the software development
process. A software architecture defines structure, behavior, component relationship,
communication structure, design decision and so many requirements of a system
(geeksforgeeks, 2022).

4.1 Clean Architecture

In Clean Architecture, striving for minimal coupling goes beyond implementing use cases;
it impacts all layers and elements of the system's design. By giving importance to lose
coupling, architecture seeks to improve maintainability, scalability, and testability, making
it easier to evolve and adapt to changing requirements.

Clean Architecture focuses on separating concerns to ensure each system component


has a clear responsibility and is protected from unnecessary complexities. Use cases
provide a general organizational framework, defining the system's functions without
getting into the details of the technologies or frameworks used. This concept allows
developers to concentrate on the business logic and specific requirements of the domain
without being bogged down by changing implementation details.

The concept of domains reflects the main focus of an application's development,


emphasizing the need to match the architecture with the specific business requirements
and goals.

Clean Architecture promotes a thorough comprehension of the problem domain and


encourages a more unified and natural system design by centering the architecture on
entities or models that represent the concepts and relationships within the domain.

15
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

The Core in the architecture acts as the central point where the Domain and Application
layers meet, containing the crucial business logic and rules that control how the system
functions. This division of responsibilities guarantees that the main business features are
not tied to outside dependencies like presentation frameworks or data access methods.
As a result, modifications to these external dependencies have little effect on the
fundamental business logic, improving the system's adaptability and ability to withstand
change. Clean Architecture ensures that the core business logic is independent of the
implementation details of infrastructure components by reversing the typical
dependencies between layers. Developers can introduce new technologies or update
existing ones without disrupting the core, thanks to this inversion.

Architectural Layer Components

Domain Layer Consists of Entities / Models, Constants

Application Layer Consists basically Interfaces

Infrastructure Layer Service and Repository Implementation, Persistence Layer

Persistence Layer Consists of Data Context, Data Seeding, Data Migrations

Presentation Layer Consists of Controllers, Views, View Models, Areas

Table 1 Architecture Layer

16
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

Figure 20 : Project Structure

17
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

Figure 21: Separations of Concerns in Clean Architecture

18
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.2 Classes and Purposes


The following heading represents all the list of classes defined in the program execution
along with their purposes.

4.2.1 APIs

ASP.NET Web API is a robust framework for developing HTTP-enabled service APIs that
expose services and data. It may be accessed by a wide range of clients, including
browsers, mobile devices, desktop computers, and tablets. Because it is an HTTP
service, it may reach many clients (Menon, 2023). The characteristics and importance of
APIs are highlighted below:

There are five features of C# Web API, they are:


Routing: It helps in routing through different APIs.
Controller: It gives functional capabilities to the web application.
Model: It gives structural capabilities to the web application.
Filter: It gives filters to web applications.
Action Result: It can keep the action logos user, such as data retrieval.

Figure 22: Features of API

19
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.2.2 Controllers

4.2.2.1 Account Controller

The following controller handles user authentication and registration for an API, providing
JWT tokens upon successful login and providing email and username uniqueness.

4.2.2.2 Admin Controller

It handles administrative activities for an API and includes endpoints for retrieving all
users, registering administrators, and accessing dashboard information. Furthermore, all
users are retrieved and registered using role-based access, and dashboard information
includes blog and user popularity indicators.

4.2.2.3 Blog Controller

The Blog Controller performs CRUD activities on blog posts and provides endpoints for
creating, modifying, and deleting them. Each operation requires connecting with the data
repository to insert, update, or soft-delete blog records. Authorization is required to ensure
that only authenticated users can access these endpoints.

4.2.2.4 File Upload Controller

The FileUploadController allows file upload capabilities and is in charge of providing an


endpoint for uploading files. The controller validates file paths and sizes before sending
file upload activities to the IFileUploadService.

20
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.2.2.5 Home Controller

The 'HomeController' handles a variety of functions related to displaying and interacting


with blog articles on the application's main page. It allows users to browse blog records,
upvote and downvote posts and comments, make new comments, respond to existing
comments, and remove their own. Users can also eliminate their reactions
(upvote/downvote) from blog posts and comments. The controller is responsible for
obtaining blog post details, calculating post popularity, and arranging posts in popularity,
recency, or random order. Overall, it offers a full set of capabilities for engaging with blog
material on the application's homepage.

4.2.2.6 Profile Controller

The following controller handles the application's user profile-related activities. It enables
users to check their personal details, update profile information such as complete name
and mobile number, change passwords, remove their profiles, and reset passwords by
email. It also interacts with the database to get and alter user data, such as updating user
information and deleting associated blog posts, comments, and responses after profile
deletion. The controller also makes it easier to send password reset alerts via email.

21
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.2.3 Models

The model classes in asp.net represent domain-specific data and business logic in the
MVC application. It represents the shape of the data as public properties and business
logic as methods. In the ASP.NET MVC Application, all the Model classes must be
created in the Model folder. Overall, models serve as a foundational element in ASP.NET
applications, enabling developers to manage data effectively, enforce business rules, and
maintain a structured architecture.

4.2.3.1 The models used and their purposes are explained below:

Blog The blog model stores and defines the details of a given blog.
Blog Image: It stores image that will be reflected and specified on a single blog.
Blog Log Blog Log model stores all the logs and dates from updated blog.
Comment It saves all the facts and meanings once a comment is placed.
Comment Log It stores and defines all the update queries for each comment.
Notification It records and describes notifications received and sent by the user.
Reaction It store and initiate reactions for respective item, blog, or comment.
Role Role Models store and describe all instances of roles that appear.
User User Model stores information about all of system registered users.
.

22
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3 Classes, Methods, and Properties

The following section defines all the detailed aspects of the methods present in a
controller and the properties of a model.

4.3.1 Controllers

A method is akin to a recipe—it's a series of instructions designed to accomplish tasks.


When you wish to perform an action, you follow the recipe by calling the method and
providing any necessary ingredients (method parameters). Below are descriptions of all
the HTTP Requests outlined in each controller.

4.3.1.1 Admin Controller

HTTP Request Method Name Descriptions

This method retrieves all users and their

GetAllUser details, including their roles, and returns


them in a response object.

GET This method fetches dashboard details,


including post count, comment count,
GetDashboardDetail
upvotes, downvotes, and blog popularity, and
returns them in a response.

This method registers new administrators


and returns success or bad request based on
POST RegisterAdminstrater user existence.

Table 2: Admin Controller

23
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.1.2 Account Controller

HTTP Request Method Name Descriptions

This method authenticates users, generates JWT


tokens, and returns user details with the token in
Login
a response object.
POST
This method registers new users and returns a

Register success or bad request response based on


whether the user already exists or not

Table 3: Account Controller

4.3.1.3 Blog Controller

HTTP Request Method Name Descriptions

This method creates a new blog post, assigns it to

POST CreateBlog the current user, and returns a success response


upon insertion.

This method updates a blog post, creates a log of

PATCH UpdateBlog the update, and returns a success response upon


successful update.

This method soft deletes a blog post, updating its

DELETE DeleteBlog status and recording deletion details, and returns


a success response upon completion

Table 4: Blog Controller

24
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.1.4 Home Controller

HTTP Request Method Name Descriptions

This method retrieves blog posts


for the home page, including
UploadFile
details such as reactions,
comments, and popularity.
GET
This method fetches blog posts
authored by the current user,
GetBloggersBlogs
includes details like reactions and
comments

UpVoteDownVoteBlog This method allows users to


upvote or downvote a blog post.

UpVoteDownVoteComment This method allows users to


upvote or downvote a comment.
POST
This method allows users to

CommentForBlog comment on a blog post.

This method enables users to

CommentForComment comment on another comment.

This method soft deletes a

DELETE DeleteComment comment, updating its status, and


returns a success response.

25
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

This method removes reactions

RemoveBlogVote from a blog post.

This method removes reactions

RemoveCommentVote from a comment.

This method retrieves comments


NO recursively for a given blog or
GetCommentRecursive
ACTION comment, along with their
reactions and user information.

Table 5: Home Controller

4.3.1.4 FileUploadController

HTTP Request Method Name Descriptions

This method uploads files based on the provided


file path index, checks for file size limits, and
POST UploadFile
returns a response containing the uploaded file
names upon successful upload.

Table 6: FileUpload Controller

26
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.1.5 Profile Controller

HTTP Request Method Name Descriptions

This endpoint retrieves profile details for the


GET GetProfileDetails
current user.
This PATCH endpoint updates the user's
PATCH UpdateProfileDetails
profile details.
This DELETE endpoint deletes the user's
DELETE DeleteProfile
profile
This method updates the user's password if
ChangePassword the current password provided matches the
POST stored password hash.
This method resets a user's password by
ResetPassword
generating a new password.

Table 7: Profile Controller

27
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2 Models

A database model shows the logical structure of a database, including the relationships
and constraints that determine how data can be stored and accessed . A complete data
dictionary of all the models is precisely described below.

4.3.2.1 Base Entities

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data
VARCHAR2 PRIMARY It identifies the
Id B12
(450) KEY app user.
Is denotes
IsActive BIT user is active True
or not.
It identifies
Created
DATETIME user who Sarthak
By
created.
It identifies
Created 2022-11-
DATETIME when it was
At 13
created.
Last It identified
VARCHAR2
Modified NOT NULL when it was
(450) Pranish
By modified.
Last It identifies
2022-12-
Modified DATETIME NOT NULL when it was
23
At modified.
It identifies
Deleted VARCHAR2
NOT NULL user who Abhi
By (450)
deleted.

28
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

It identifies
Deleted 2023-10-
NOT NULL when it was
At DATETIME 13
deleted.
It identified
Created VARCHAR2 specific user
NOT NULL User Id
User (450) who create Prince
blog.
It identified
Updated VARCHAR2 specific user
NOT NULL User Id
User (450) who updated Robin
blog.
It identified
NOT NULL
Deleted VARCHAR2 specific user
User Id
User (450) who deleted Sayam.
blog.

Table 8: Base Entities

29
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.2 Blog Table

Referenc Referenc
Column Example
Data Type Constraint e e Description
Name Data
Table Identifier

VARCHAR2 It denoted the


Title Nature
(450) title of blog.

It explains the People


VARCHAR2
Body body of blog. loves to
(450)
travel.

VARCHAR2 It identifies the


Location location of blog. Gandruk.
(450)

VARCHAR2 It identifies who


Reaction Wow.
(450) reacted to blog.

Blog VARCHAR2 It identified the


Blog Nature Sun.png
Image (450) image of blog.
Table 9: Blog Table

4.3.2.3 BlogImage Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

It denoted the
VARCHAR2
Image URL of specific D. Drive
(450)
URL Image
VARCHAR2 FOREIGN It denotes
Blog B23
BlogID (450) KRY specific blog.
Table 10: BlogImage Model

30
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.4 BlogLog Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

It denoted
VARCHAR2 FOREIGN
BlogID Blog unique blog in B12
(450) KRY
Bloglog.
VARCHAR2 It denotes the
Title College.
(450) title of blog.

It contains
VARCHAR2 Awesome
Body body of the
(450) college.
blog.
It contains the
VARCHAR2 place where
Location KTM.
(450) blog was
created.
It describes
VARCHAR2
Reaction expressions of Amazing
(450)
blog.
Table 11; BlogLog Model

31
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.5 Comment Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

VARCHAR2 It describes
Text Good.
(450) blog using text.

It checks for
IsComment
BIT comment in True.
ForBlog
blog.
It checks if
IsComment
there is
ForComme BIT True.
comment in
nt
comment.
It identifies
VARCHAR2 FOREIGN
BlogID comment in B34.
(450) KEY Blog
specific blog.
It denotes
VARCHAR2 PRIMARY
CommentID specific C20.
(450) KEY
comments.

Table 12: Comment Model

32
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.6 CommentLog Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

VARCHAR2 It describes
Text Good.
(450) blog using text.

VARCHAR2 It checks for


FOREIGN
CommentID (450) comment C12 comment in C34.
KEY
blog.
Table 13: CommentLog Model

33
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.7 Notifications Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

It identifies
VARCHAR2 FOREIGN notifications
SenderID Sender ID S67.
(450) KEY sent by
sender.
It identifies
VARCHAR2
FOREIGN notifications
ReceiverID (450) Receiver ID R3.
KEY sent by
receiver.
It describes
VARCHAR2 the
Title Creature.
(450) notifications
title.
It describes
VARCHAR2 content for New Blog.
Content
(450) notifications.
It checks
whether
IsSeen BIT notifications True.
have been
seen or not.
It identifies the
VARCHAR2 FOREIGN specific blog
BlogID Blog B13
(450) KEY
Table 14: Notification Model

34
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.8 Reaction Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

It identifies
VARCHAR2 PRIMARY
ReactionID specific R45.
(450) KEY
reaction.
It checks
IsReactedF BIT whether there
False.
orBlog is reaction for
Blog or not.
It checks
whether there
IsReactedF
is reaction for True.
orComment BIT
Comment or
not.
It denotes
VARCHAR2
CommentID comment in C56.
(450)
notifications.
It identifies
VARCHAR2 FOREIGN
BlogID ID the specific B13
(450) KEY Blog
blog
Table 15: Reaction Model

35
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.9 Roles Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

It identifies
VARCHAR2 PRIMARY specific roles
ID R4.
(450) KEY of a user.
It describes
VARCHAR2
Name the name of Admin.
(450) roles.
It describes Can
VARCHAR2
Description about the roles Delete
(450) of user. Bog.
Table 16: Roles Model

36
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

4.3.2.10 User Table

Column Reference Reference Example


Data Type Constraint Description
Name Table Identifier Data

It identifies
VARCHAR2 PRIMARY specific user
ID U6.
(450) KEY of app.
It identifies
FOREIGN
RoleID VARCHAR2 Role ID specific roles R16.
KEY of user.
(450)
It describes Can
UserName VARCHAR2 name of the Delete
(450) user. Bog.
It describes
VARCHAR2 FullName of
FullName Riya Jha
(450) the user.
It identifies
VARCHAR2 password of a
Password Admin@1
(450) user.
It denotes the
phone 97654535
PhoneNo NUMBER
number of 63435
user.
It identifies
Email VARCHAR2 the email Use12@g
Address (450) address of mail.com
user.
It denotes the
VARCHAR2 image path.
ImageURL C. Drive.
(450)
Table 17: User Model

37
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

5 INDIVIDUAL GROUP REFLECTION:

Group Project requires cohesive teamwork, effective communication, and efficient time
management from all team members. Each team member understood their role and the
impact of their work on the overall project. Consequently, we achieved our goals by setting
realistic targets, adhering to tight schedules, and maintaining constant communication.

Rajan Prince Yuma Sanikant Rose


Activities
Sah Adhikari Rai Kushwaha Duwal
Analysis of Coursework
✓ ✓ ✓ ✓ ✓

Database Schema
✓ ✓ ✓ ✓
Design
Designing UI / UX
✓ ✓ ✓

Blazor Implementation
✓ ✓ ✓

API / Backend
✓ ✓ ✓ ✓ ✓

SQL ✓ ✓

Testing ✓ ✓ ✓

API Integrations ✓ ✓ ✓

Documentation ✓ ✓ ✓ ✓ ✓

Table 18: Individual Member Reflections

38
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

5.1 Prince Adhikari

Throughout the project, I was majorly focused on working with our team leader to build
the backend and have my input in the documentation. I also, worked with other team
members to solve their problems, identify issues, and come with ideas through
brainstorming and problem solving. The project began with free thinking and every team
member presented their own ideas and at last the best of every part was used to build
the final project.

I worked closely with the team leader as he was mostly familiar with the ideas and
configuration of dot net. Since, dot net and c-sharp is not my preference, there were some
difficulties for me at first but along the development of the project I was clear and could
identify the solutions. We worked on handling requests, implementing the repository
pastern and many other aspects of the backend. As for frontend, there were some design
input and solutions presented to the team which was later used to develop the user
interface. This project helped me to build my communication skills and teamwork and also
help me to refine my skills in dot net and c-sharp.

39
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

5.2 Yuma Rai

Reflecting on my participation in this coursework, I feel a strong sense of achievement


and development. The process from starting to putting it into action has been difficult but
fulfilling, allowing me to explore different areas of software development. In this paper, I
will talk about my involvement and educational experiences in various parts of the project,
such as Coursework Analysis, Database Schema Design, Blazor Implementation, UI/UX,
API/Backend, and Documentation. Understanding the project requirements was the first
crucial step toward its successful execution. Analyzing the coursework involved
deciphering the specifications mentioned in the assignment and breaking them down into
actionable tasks.

In the project, I played a key role in creating an advanced database layout along with my
team members, balancing efficiency with the needs of data formats. This process
improved my abilities in data modelling and normalization. Utilizing Blazor for the web
application offered a smooth development process, despite having to navigate through
its complexities. Working together on UI/UX design highlighted the importance of focusing
on user-centered methods. Backend development for some features entailed designing
strong solutions, with a focus on both security and scalability. Finally, contributing to
thorough documentation emphasized the significance of effective communication and
structure during the entire project process.

I appreciate the chance to have been a part of this significant project in a group and to
have gained valuable insights throughout the process. My experience with the project has
significantly impacted my career growth, moulding me into a skilled and adaptable
software developer prepared to confront upcoming obstacles with self-assurance.
Engaging in these assignments provided me with valuable knowledge in multiple aspects
of software development and project coordination. Throughout the project, I learned the
importance of thorough analysis, effective communication, and attention to detail in each
stage of development. Each task presented its own challenges, but through perseverance
and collaboration with my team members, I overcame difficulties and contributed
effectively to the project.

40
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

5.3 Rose Duwal

I have an inside view at how our blogging page is developed because I had help in front-
end and a quality assurance tester in my team. Testing and bug-fixing our product has
taken time, but it has been well worth the effort, not to mention ensuring that it is of the
best quality possible. Finding problems early on and seeing them rectified has been
satisfying. Still, there have been moments when I've been dissatisfied as I was unable to
identify the source of an issue. In conclusion, I've discovered how important it is to focus
on minor issues and carry out a lot of testing to make our product better for users.

In general, my wide range of abilities and extensive understanding of front-end


programming and database architecture have greatly contributed to the project's success.
Collaborating with a dedicated team and contributing to the development of a website has
been a rewarding endeavor.

41
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

5.4 Sanikant Kushwaha

My participation in the collaborative effort to create a full-stack web development project


for a blogging platform built on.NET included curriculum analysis, API/backend
programming, SQL database management, API integrations, and extensive
documentation. Reflecting on my individual contributions to the group dynamic, I am
deeply satisfied with the multiple behavior of my involvement. My involvement in
group analysis provided the way for a thorough knowledge of project requirements,
ensuring that our development efforts were aligned with the intended goals. As I went into
API and backend programming, I enjoyed the challenge of designing solid solutions that
not only met functional requirements but also conformed to scalability and efficiency
standards. Working with SQL databases, I crossed complexities with precision, refining
data structures to improve efficiency. Furthermore, my involvement in API connections
enabled me to seamlessly connect dissimilar systems, resulting in a consistent user
experience across the blogging platform.

Furthermore, my dedication to strict documentation proved to be a pillar of our project's


success, as I clearly and precisely explained system layouts, API endpoints, and data
structures. Through extensive documentation, I enabled effortless collaboration within the
team while also providing future maintainers with essential insights into our development
logic and implementation specifics. By taking on a variety of responsibilities such as
coursework analysis, backend development, SQL management, API integrations, and
documentation, I not only made a significant contribution to our team's effort but also
developed a comprehensive understanding of the complexities involved in creating strong
web solutions.

42
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

5.5 Rajan Sah

Considering my experience in Dotnet, I decided to take the lead for my team and decided
to contribute more to the backend task as well as documentation and other areas. So as
a project manager I decided to lead the team and coordinate with everyone in their work.
So, in the beginning days we let everyone think of their own and choose wisely on
interesting portions and finally we divided each of our tasks.

So, as I was aware more about Clean Architecture, we decided to select it as our software
architecture. At first, I helped our team in selecting models and their attributes. I helped
them with project setup and maintaining folder structure. I lead the team in helping with
handling HTTP requests, developing controllers, and implementing the repository pattern
and services to performing SQL queries through LINQ and Lambda and validating
response along with fixing many issues.

I have learnt many extra things in the field of Dotnet and I hope in the coming future, I will
be able to implement all those things at the industry level. The skills I learnt in class have
helped me a lot in doing this project and I am very much thankful to my tutors and
lecturers. So, along with the technical skills, I found improvement in soft skills like
communication and collaboration, time management, patience and coordinating with the
team.

43
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

6 CONCLUSION:

Our team was given a challenging assignment: utilizing the C# programming language
and.NET technology, we had to create a blogging system with features for self-
registration, login, reactions, comments, and navigating. Early on, as we learned to
traverse the strange world of C# programming and.NET technologies, we encountered
difficulties. On the other hand, our lecturer and tutor were a tremendous help, offering us
materials and advice that improved our understanding of the technology.

We ran into obstacles that complicated the development process as we dug more into the
project. But rather than giving up, we used teamwork and research to get beyond these
barriers. With every obstacle we overcome, our confidence in our capacity to create a
solid and effective management system increased.

We were able to finish and turn in the job on schedule despite its size. We worked hard
and long hours to make sure the project was not only functional but also visually beautiful
and easy to use.

All in all, we learned a great deal from the process of developing a web application with
C# and.NET technologies. We acquired a multitude of information and abilities, including
technical skills like programming, teamwork, and project management. database
administration and UI design. We are sure that the abilities we developed on this
assignment will come in handy for our next undertakings.

44
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

7. GIT LOG AND HISTORY

Figure 23: Git log and History.

45
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

8. FRONTEND PORTIONS

46
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

47
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

48
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

Figure 24: Swagger API

Figure 25: Authentication and Authorization

49
22015739 | 22015812 | 22015804 | 22015753 | 22015764
CS6004NI Application Development

9. REFERENCES:
geeksforgeeks, 2022. Fundamentals of Software Architecture. [Online]
Available at: https://www.geeksforgeeks.org/fundamentals-of-software-architecture/
[Accessed 9 May 2024].
Menon, K., 2023. A One-Stop Solution To C# Web API. [Online]
Available at: https://www.simplilearn.com/tutorials/c-sharp-tutorial/c-sharp-web-api
[Accessed 9 May 2024].

50
22015739 | 22015812 | 22015804 | 22015753 | 22015764

You might also like