Sustainability Report System | 2muchcoffee


Normative was designed to simplify sustainability reporting with automated calculations which will ensure a smooth transition towards the Sustainable Development Goals (SDGs).


Having in mind a faster transition towards a sustainable society, Normative created a special tool to measure the company’s sustainability index.
It is the very first software capable of assessing a company’s social and environmental sustainability. Using artificial intelligence combined with the world’s largest online database, Normative makes the required calculations. As a result, a user gets advanced visual analytics, detailed reports, and gets step-by-step recommendations to achieve sustainable development.
System Dashboard


By the time we started working with Normative, it was a fully functioning business. The team was looking for a robust solution to automate processes. Previously the Normative team worked with freelancers which could not satisfy the project requirements, like the scope of tasks and complexity.
That is why Normative was looking for an outsourcing software development company to become a reliable partner and work together on their project. Our cooperation started with the frontend, precisely with some refactoring and fixing of the existing components.

What was the Scope of our Work?

The initial phase of our cooperation was to provide a secure source code review. Since it was an existing software solution, it was essential to be sure that the source code is bug-free, so the application will work according to the plan.
Based on the requirements, we improved the overall user experience and added new features, such as:
  • Document Parsing
  • Document Validation
  • Table Creation
  • Info Charts
  • Localization
  • Authorization System
  • CSV/XLS Parsing
  • User Management
  • Organization Management

Development in Details

  • Document Parsing/CSV/XLS Parsing
    We used two libraries for quick parsing data on the client-side. Papa Parse - powerful CSV parser for JavaScript allows configuring header row options, specify/auto-detect delimiters, identify character for commented rows, and convert numbers and booleans to their types. The xlsx library was used to parse binary input data to XLS entities — workbooks and worksheets. On the next step, the worksheet gets converted to JSON. Input data is taken from the native FileReader object (onload event is used to emit a parsed workbook).
  • Info Charts
    We had to make sure that the app analytics will include complex graphs and benchmarks to provide the visual statistics. We used the Microsoft Power BI service to display data charts. Data (reports, data sources, transaction impacts) gets uploaded to the Power BI from the server app. The client app uses powerbi-client library to perform requests to the Power BI API and renders the charts in the iFrame. We ensured the intuitive and composite visual elements for better understanding and comparison of the sustainability index.
  • Document Validation
    All uploaded data should have a format that is specified in JSON-schemas. To validate this data, we used Ajv library. This library is known as the fastest JSON Schema validator and is currently maintained and developed, so it was a perfect choice for this solution.
  • Localization
    For content translation, we used @ngx-translate library. Since translation tokens get stored in JSON files on the client-side, provided by the library TranslateService implements methods for both sync and async translations. Also, there is a useful translate pipe which allows us to translate content directly in the component’s template.
  • Authorization System
    As part of the authorization solution, we used the Auth0 service. It provides a web interface to configure API, database connection, authorization rules, and email templates. The implemented functionality allows users to sign in via email/password credentials, use the passwordless sign in (via email or SMS confirmation) or use OAuth2 flow.
  • User Management
    The requirement for this app was far beyond the scope of a basic user management system. The application does not have a sign-up functionality, so users can be created directly by the app admin or invited to the organization by the organization admin. Each user can be a member of multiple organizations. The user access is managed via application and organization roles.
  • Organization Management
    Since the app allows getting an overview of the company’s sustainability index, organization management is an essential feature. So, organizations can be created and managed by the app-admin only. Organizations have different access to application modules. Each organization has its own dataset on the Power BI service, which is based on the actual organization’s data sources and reports.
  • Table Creation
    Convenient reporting process depends on top-level tables. We used ag-grid library for table rendering. It provides a highly configurable solution to get tables with customized elements. It allows creating separate Angular components for header and data cells rendering, implement sorting, filtering, pagination, and rows drag’n’droping. The table’s functionality can be expanded by a custom context menu, sidebars, and rows grouping.


We did the configuration of the entire frontend stack using Angular, Typescript, RxJS while for the back end we use NodeJS. Specifically, such a tech stack allows the Normative team to easily scale the app later on. Plus, NGXS made it possible to make functionality and logic more transparent.
  • AngularJS
  • RxJS
  • TypeScript
  • NGXS
  • Express
  • NodeJS


At 2muchcoffee we believe that a successful software product comes out of mutual cooperation between a client and a web development company. The Normative case only proved that.
While working with the Normative team we paid close attention to the target audience and business needs of our partner. As a result, we were able to improve the existing solution and transform it into a robust and responsive sustainability reporting platform. A platform is fully functional and ready to handle millions of users.
Visit the website


Adam Egesa photo

Adam Egesa country flag


2muchcoffee provides top-notch development work and expert advice that please end-users needs. The team is transparent about progress, communicative, and committed to deadlines.

Visit the website
Adam Egesa photo

Adam Egesa country flag



  • productivity platform image

    Product Hunt - SaaS Product of the Year

    Centralize all your apps in one single place.
    • SaaS
    • Web App
    • France
    Station is a SaaS focused platform for working with web applications (supports 600+ apps). It aims to boost your productivity at the workplace while saving tons of your time. As an app and web development company, we are highly skilled to build complex and user-friendly apps, such as Station. It's a Product Hunt project of the year and Y Combinator alumni.
    See full case study
  • fitness app image

    Swedish App Store №1 Fitness App

    Maintain a healthy lifestyle with no-time and money.
    • Fitness
    • Mobile App
    • Sweden
    Our client was looking to motivate people to stay fit regardless of the tight schedule. We provided a full cycle development of the mobile app where users can track taken steps and convert them into real goods. Among the best walking apps, Stepler works as a trigger to take care of your health. Based on App Store ranking, Stepler is a top mobile app in Sweden.
    See full case study
  • education literacy app image

    US K-12 E-learning Reading Application

    Reinvent the learning experience for kids.
    • eLearning
    • Web/Mobile App
    • USA
    Cultivating the love for reading while developing the key literacy skills was the main goal of our client. We provided app design and development services from the discovery phase to web development using AngularJS to create intuitive and feature-rich eLearning product.
    See full case study

Build from scratch or improve the existing project — we can do it all