Loading...

Highly robust Enterprise Class Web application This one application is a master peice of a highly scalable and most advanced software that uses reaearched best practices and the best state of the art design patterns.

Service Oriented Architecture in the Cloud This one application has highly secured web apis that uses patterns like UnitofWork, Resposiotry and Dependency Injection to ensure high sepration of concern.

Best Practices of Data Manipulation. This one application makes the best use of data manupulation and validation concepts both on the client side and server side.

Cloud Technologies. This one application uses cloud for deployment, data, continious integration, security and so much more.

The Aspect Series

The Aspect Series is an outcome of a numbers of years of research into diffrent Aspects of an Enterprise Class Web Applications. We perfromed targetted research on each of the aspect and combined it in one Real World Enterprise Grade Web Application. This application demonstrates the use of best practices and design patterns using most modern tools and technologies.

Aspects are divided into four categories. Client Side, Server Side, Cloud and DevOps. Below is the list of these Aspects against each of the category.

icon
Client Side

One a Client Side we have developed a state of the art modular enterprise grade Single Page Application in Angular.

icon
Server Side

On the server side we have REST APIs developed in ASP.NET CORE 3, that follows Best practices of Service Oriented Arhcitecture and Separation of Concern.

icon
Cloud

On Cloud front we are leveraging Microsoft's Azure for Authentication, Storage, Geo Retendancy, Encryption, Security and so much more.

icon
Dev Ops & Project Management

Entire project is developed using Agile Methodologies following proper Processes and Tools for Deployment, Continious Integration, Project Tracking and Collaboration.

Project Structure & Initialization
Project Structure & Initialization

We used Angular CLI's scaffolding and project structuring features to lay down the structure of this appliction.

icon | Angular CLI

UI Components
Modularity and Lazy Loaded Components

This application is highly modular that loads its components on demand basis.

UI Components
UI Components

Most of the UI components used in this application are from Angular Materials. Controls are masked to ensure sanity during data entry.

icon | Angular Materials

Data Grid
Data Grid

Data Grid demonstrates Searching, Sorting, Filtering and Server Side Pagination using oData Endpoints.

icon | Angular Materials Data Grid

Form and Validation
Form and Validation

All the forms in the application uses Angular control status classes like ng-valid,ng-dirty,ng-touched and ng-pristine with RegEX to validate forms.

icon | Angular Forms

State Management
State Management

This application demonstrates the best use of NgRx and RxJs. A reactive state management concept inspired by Redux which creates a single source of truth application wide.

icon | NgRx & RxJs

Server HTTP Communication

Dependency Injected Angular Services are used with NGRX Effects to call Back End APIs to Transform REST responses into Client Side Observable Models and that gets persisted in Store.

icon | Angular HTTP & NgRx Effects

Data Visualization
Data Visualization

Dashboard of this application is a deck of beautifull looking sleek graph controls developed using ChartJS and populated by backend APIs in realtime fashion.

icon | Charts JS

Real Time Updates
Real Time Push

Changes on the Server are pushed to Client in real time using Microsoft's Signal R technology. This results in very responsive live graphs on the Dashboard.

icon | SignalR

Authorization
Authentication

Application gets authenticated from Azure Active Directory to receive JWT token which is then injected in header during api calls using HTTP Interceptors.

icon | Azure Active Directory.

Routing
Routing and Resolvers

Lazy Loaded Routes and Child Routes are suported by Resolvers to fetch the data specific to a page before navigating to that page. With inclusion of caching stratagies this gives the very fast navigation experience.

icon | Angular Routing

Data Formatting
Data Formatting

Following Angular's MVVM nature, Data formating logic is abstracted using Built-In or Custom PIPEs.

icon | Angular Pipes

Unit Testing
Unit Testing

Isolated Tests for services, components, directives and pipes are written using mocks and spies taking Dependcy Injection in consideration.

icon | Karma and Jasmine

Automation Testing
Automation Testing

We are using Protractor for Automated Testing because it allows to test Angular-specific elements. It uses native events and browser-specific drivers to interact with application as a real user would.

icon | Protractor

Code Quality
Code Quality

TypeScript code for readability, maintainability, and functionality errors are checked using ESLint. Code that fails the quality check is not allowed to be checked in.

icon | ES Lint

main-icon
Service Oriented Architecture

REST APIs demonstrates true Separation of Concern where the business logic is encapsulated in Services that performs specific job and Dependency Injects other Services or Data Access layer for functionality beyond their scope.

icon | Dependency Injection in Aspe.net Core

main-icon
Transactional Data Access

Services access data using Entity Framework Code First Models that are wrapped around Generic Repository Design Pattern which inturn is wrapped around Unit of Work Pattern.

icon | EF/Repository Design/Unit of Work

main-icon
Server Side Validation

ASP.net Core Custom Middlewares are written to isolate validation logic using built in and third party Data Annotations.

icon | Data Annotations & FluentAPI

main-icon
Errors & Exception Management

Best Practices of Global Exception Management are incorporated to handle exceptions globally and return a Uniform JSON Response to the client with useful status codes and error messages.

icon | Asp.net Core Middleware

main-icon
Logging

Logging is performed at the levels of Information, Warning and Error. Log Levels are configurable and logging is mostly performed globally in Asp.net core Middleware Pipeline.

icon | Default ASP.NET Core Logging

main-icon
Authorization

Attribute routes are decorated with Authorization attributes that let only authorized users pass in based on their roles that is fetched from incoming request's JWT token.

icon | Json Web Token

main-icon
Asynchronous Programming

Performance Intensive and blocking calls like API Controllers, Services and Data Access are written using C#'s Asynchronous Programming models.

icon | C# Asnyc Api

main-icon
Real Time Push

For any changes in the API the connected clients are notified using Microsoft Signal R technology.

icon | SignalR

main-icon
Security

Custom Middleware are used to configure Certificates that are required by client to perform HTTPS Communication. Moreover Cross Site Request Fogey is blocked using Asp.Net Core's default Antiforgery capability.

icon | Certificates & HTTPS

main-icon
Integration & Unit Testing

Using MSTest Services are unit tested in Isolated fashion and all the Dependency Injected services are mocked out. Integration Tests are also performed by using In Memory Test Server.

icon | MSTest

main-icon
Versioning & Documentation

APIs also support Versioning and api documentation is configured using Swagger.

icon | Swagger

main-icon
Code Quality

To ensure highest code quality, rules are setup in Resharper and and enforced on the deployment level.

icon | Re-Sharper

main-icon
Authentication

Azure Active Directory is setup with Users and Roles that receives Credentials from Client and returns JWT Token with Embedded User Info back to the Client.

icon | Azure Active Directory

main-icon
Auto Scaling & Geo Redundancy

Application is hosted using Azure App Service which provides easiest deployments, high availability, security, deployment slots, monitoring and global reach.

icon | Azure App Service

main-icon
App Insights & Alert

Logs and Exceptions are sent to Azure App Insights where they can be Monitored in Real Time and Failures are diagnosed and alerts are generated.

icon | Azure INsights

main-icon
Notifications using Serverless Architecture

We are using Azure functions to send SMS using SMPT and Email Notifications using Send Grid API.

icon | Azure Function

main-icon
Caching & Security in Cloud

Using Azure API Management the API Endpoints have an added layer of Security in the Cloud. Polices like IP Filter, Limit Call Rate and Response Caching are applied to reduce latency and Enhance Security.

icon | Azure API Management

main-icon
Encrypted Data Protection

All the Keys, Certificates and Secrets throughout the application are kept in Azure Key Vault.

icon | Azure Key Vault

main-icon
Universal Configuration

This application has it's configuration in Azure App Configuration Service. Configurations are managed effectively and reliably, in real time, without affecting production by avoiding time-consuming redeployments.

icon | Azure App Configuration

main-icon
Database Hosted in Cloud

Application uses Azure SQL Database that is an intelligent, scalable, relational database service built for the cloud.

icon | Azure SQL Database

main-icon
Continuous Integration

All the check-ins on Client Side or Server Side code goes through Azure Pipelines. Pipeline performs Code sanity checks and run unit tests before the code is deployed in production.

icon | Azure Pipelines

main-icon
Source Control & Repositories

Git Repositories and Code Commits are managed using Azure Repos. Other team members perform Code Reviews using Pull Requests feature.

icon | Azure Repos

main-icon
Team Collaboration & Project Tracking

Entire project is maintained using Azure Devops. User Stories and Tasks are initiated in Backlog and Moved into Current Sprint where they live through New, In-progress to Done State. Bugs are reported and tracked in similar fashion.

icon | Azure Boards & Team Foundation Server

main-icon
Docker Containers

Entire application is containerized using Dockers. Containers are deployed on Dockers on Azure.

icon | Azure Kubernetes Service

main-icon
Agile Development

Through the application development process we followed Scrum as our Agile Methodology and performed ceremonies like StandUps, Retrospective, Sprint Planning and Demos that were maintained using Azure Boards.

icon | Scrum