Skip to content

brookhab/SimpleContactsApp

Repository files navigation

SimpleContactsApp

Project URL: https://simplecontactswebapp-asp.azurewebsites.net/index.asp

Introduction

The Simple Contact App is a straightforward demonstration of contact management, allowing users to store, retrieve, create, update, and delete contacts online. It empowers users with the ability to register and create accounts, granting them control over their contact lists. This application is built using SP.NET Core serving as the backend and Classic ASP Pages handling the frontend to demonstrate the Docker Contenerization and session sharing between two technologies in different time lines. The application is hosted on Azure, utilizing its cloud infrastructure for seamless deployment.

Frontend

The frontend user interface is crafted using Classic ASP pages and enhanced with the Bootstrap library to provide a clean and intuitive look.

Backend

The backend is developed with .NET Core, and its architecture follows the principles of the Onion Architecture, promoting maintainability and readability. The design decisions made in this architecture make the codebase understandable and extensible for future developers.

Database

Azure SQL Database serves as the application's data store, seamlessly connected through Entity Framework. This integration enables us to apply various CRUD (Create, Read, Update, Delete) operations efficiently.

Session Sharing Between Classic ASP and .NETCore

When a user logs in through UI, the api will send a request witht he "userId" as a custom Session value via a request to Classic ASP Bridge. The Bridge is a small Classic ASP page that captures the userId that was sent as query parameter and stores it in the current session which makes it avaliable and accessiable for all other page that are under the same session. Then the UI uses the session value to make the basic CRUD operations for the given user.

Testing

The core components, including Web, Application, and Infrastructure, are thoroughly tested. Mocking is facilitated using Moq, while Xunit serves as the testing framework. The test suite encompasses both unit and integration tests.

UI Contenerization

The UI is contenerized using docker and deployed to its own hosting environment using Azure App Service via the CI/CD pipeline. Azure container Registery is also used to store the docker images as showen below : image

image

CI/CD Pipelines

The application has a dedicated CI/CD pipeline that runs unit tests and generates a test report after each run. There is also a dedicated release pipeline that is connected to Azure App Service that will deploy upon successful completion of the build pipeline.

AzureDevops Build Pipeline image

image

Azure Devops Release Pipeline image

image

Deployment

The Simple Contact App is hosted on Azure App Service. The entire deployment process, from setting up Resource Groups to configuring resources is created manually. Azure Key Vault securely stores the database connection string, enabling seamless authentication and retrieval during startup. Azure SQL Database efficiently manages the application's data, and Application Insights monitors the app's performance, providing real-time insights.

Below are a couple of screenshots showcasing the app's Azure integration: Azure Resources image

Azure Redis image

Azure App Service image

Azure AppInsights image

Future Development and Enhancements

  • Further refining the API to follow RESTful practices
  • Implementing filtering and sorting on both the API and UI fronts
  • Introducing session management to enhance user experience
  • Enabling users to upload and manage user profiles using Azure Blob Storage
  • Establishing CI/CD pipelines to automate deployment and run comprehensive unit tests using yamal scripts
  • Adding Iac using terraform for automatic creation of resources and reduce manual intervention

Thank you for exploring my App!

About

A Simple Contacts Managment Web App

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published