ESS WEB Platform

Mirna Kojić VeljovićBy Mirna Kojić Veljović10. 08. 2022. Blog


Since 2016 year, all web applications developed in E-Smart Systems were developed on a specific development platform based on ASP.NET Core , java script single-page-application form and REST web services.

In the text that follows, I will try to answer five + one key questions about the ESS Web Platform (Why, When, Where, Who, What and How).

These answers will be interesting:

  • to our users, where solutions created using this technology have been working for more than five years,
  • to the ESS team members who are now using this technology, to those who used it in the past,
  • to a wider readership, future users, colleagues and pentesters.

Considering that the platform itself represents a significant technical resource of ESS development, this blog is only the first in a series of blogs on this topic.

Happy reading!

Why did we decide to develop our own platform in addition to countless existing ones?

  • to ensure complete freedom of user interface concepts in relation to the models of the technical part of the system, including databases. Transferring ready-made models from one world to another (e.g. entity framework ) in the projects we developed following the standard MVC pattern, represented in more demanding implementations a very serious limitation for one or the other party, and most often for both.
  • in order to direct the focus of the developer’s creation towards solving real challenges and expanding the platform’s capabilities or concrete, specific user requirements. The goal is that platform extensions provide additional value not only for the current one, but also for all subsequent ones, as well as projects that are already in production,
  • to standardize the production of parts of the system for which we have the “best solution”. It is clear that the number of best IT solutions is endless. Even for very simple concepts, new and even better solutions could still be rediscovered today. However, these discoveries will most likely not bring value to the projects and systems within which they would be implemented, that is, the value they would provide would not justify the associated cost. For us, the standard is a guaranteed value in application, that is, at the moment, the “best solution”.

Where was the platform developed and implemented, are the source codes publicly published?

When did it start and how did the development of the platform proceed?

  • The start of development work is scheduled for 2016. year. From then until today, the platform has experienced significant architectural leaps, each of which provided standardization in very important areas. In the same period, the project was regularly upgraded to the highest version of .NET Core , so today it is operationally working on version 6.0,
  • The first promotion of 2017. provided standardization in the field of dynamic user interface generation (Dynamics). In the case of the ESS platform, the concept of “mutable data structure” was created, which ensures the management of state machines without the need to re-declare or instantiate UI elements in the design time,
  • 2018 improvements related to the standardization of Master data configuration, Signal-R , using configuration from different data stores ( SQL server ), while development still remains linked to mongo DB,
  • During 2019 the client part of the platform is connected to IndexdDB , controllers for communication with M365 were developed, the first integration with oidc identity providers was made,
  • During 2020 UI configuration is integrated into the Visual Studio project/solution, a new controller model with a standardized internal structure was developed, extensions that provide intellisense in the configuration process,
  • During 2021 a unique project template and integration standard in CI/CD processes of Azure DevOps was created. In this way, a better coordination of work on improvements and a central repository for code review are provided.
  • During 2022 In 2008, logging mechanisms, authentication and authorization mechanisms based primarily on OAuth/oidc were standardized , support for docker containers was introduced.

What exactly is a platform?

  • The ESS platform is an ASP.NET Core solution that follows the single-page-application pattern based on JSON configuration on the client side,
  • The key server part of the platform is a dispatcher controller – a semi REST controller with a specific configurable routing map that ensures the forwarding of HTTP GET/POST requests to specific business logic controllers,
  • Business logic controllers follow the command pattern , implement a common platform interface through which they are activated by the dispatcher controller, and are completely independent of each other. The controllers are activated by the dispatcher controller via reflection, they can be installed independently, and in the system they can be easily replaced and rerouted during operation,
  • The configuration of the user interface is based on JSON documents and is available both to the components of the server and the components of the client part of the application,
  • The client part of the application calls the service methods of the controller (via the dispatcher of the controller) using REST calls, with which it sends the appropriate data stored in the data structures on the client in the POST body, and in accordance with the configuration,
  • Authentication and authorization to the system as a whole or for an individual route are part of the system configuration. The system can be configured to accept multiple authentication types and multiple identity providers within the same session of the authorized user.

How to use the platform?

  • The development process on the ESS Platform includes the following stages:
    • data identification, dynamics and user interface construction,
    • user interface configuration and dummy controller development,
    • Development of business logic and databases, including business logic services that are triggered by events unrelated to end users,
    • Development of deployment environment, Azure DevOps pipeline and containers.
  • Projects are instantiated using predefined forms ( Visual Studio Project Template),
  • Each solution references a platform, one or more standard controllers, a controller in which the UI configuration is implemented and specific business logic controllers,
  • During the build, executable versions of the controller as well as files specific to a specific project are automatically copied to the file structure of the platform. The UI configuration is embedded in the dll file of the configuration controller, which additionally protects sensitive technical data.

Who participated in the development of the platform?

  • The development team of E-Smart Systems, with a high dose of enthusiasm, creative potential and dedication to user problems:
    • special kudos to Marija Aleksandrić for a large number of brave promotions, selfless support for younger team members and endless optimism,
    • special kudos to the Government of Kočinac for code that shines, an approach that knows no obstacles and a pessimism that brings back to reality :),
    • special kudos to Stanislava Jovanović for her dedicated contribution to the visual identity of almost all projects implemented on the ESS platform,
    • special kudos to Mirko Cumba and Svetislav Nedeljković for pioneering work on technological expansions in all areas, persistent work on always “thorny” projects for the public sector,
    • special kudos to Marija Živanović , who follows the development of the platform from the earliest versions in various roles, and with an analytical approach contributes to a higher level of quality of the solutions implemented on the platform
    • special kudos to Jasna Gmitrović for the valuable contributions to the development of server and client logic patterns that require considerable concentration and precision,
    • special kudos to Andrea Pilipović, Katarina Jovanović, Jovana Pešić, Živojin Milić, Nikola Stojković and Jovan Grbić for understanding and commitment to professional excellence, valuable results that provide an excellent basis for further development and improvements for the projects they worked on,
  • extra special kudos to the project managers who were there to support and protect us 🙂 Nikola Grbić, Biljana Rolović and program manager Ranko Brajović ,
  • special kudos to the testers Teodora Radosavljević and Miloš Krstić , on the additional level of assured quality,
  • extra extra 🙂 special kudos to Ani Marković , who is always there to connect with knowledge and experience different technologies, projects, and especially data, and give the platform a chance to conquer the spaces occupied by some previous technologies and solutions
  • and to all those who participated in the joint work and construction of the ESS Platform for these five years: Andrej Stanojković, Ivana Živanić, Aleksandr Đurić, Ivan Špagnut, Goran Jerinić, Nikola Ilić, Miljan Milovanović, Aleksandra Kovačević, Đorđe Urošević, Nemanja Subotic, Filip Novović , Igor Rodić and Mateja Veljković.

Like all those who manage the software development process independently, we constantly strive to make this process more efficient and effective.

The influence of people on the creative development of systems, and thus of software according to Conway’s law , is deeply conditioned by the existing patterns of communication. The way users communicate, developers must also communicate during development, and therefore the components they develop.

Designing a microservice system architecture based on clearly separated units that can be developed independently and freely communicate with each other is the goal we strive for.

Along the way, the ESS platform is a tool designed to help us wander as little as possible.