Project URL: https://simplecontactswebapp-asp.azurewebsites.net/index.asp
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.
The frontend user interface is crafted using Classic ASP pages and enhanced with the Bootstrap library to provide a clean and intuitive look.
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.
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.
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.
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.
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 :
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.
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
- 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