2026 · Enterprise application

Engro Markaz

Web application for Engro Markaz admins and store employees, including the Markaz incharge. The farmer mobile app is a separate product.

Role
Full-Stack Developer
Timeline
2026 – present
Domain
Fertilizer retail at the Markaz store
Status
Ongoing
Client
Engro Fertilizers, via MT Pixels
Engro Markaz dashboard with farmer, cart, order, and soil-sampling counts
Dashboard overview for farmers, carts, orders, and soil sampling.

02 / Overview

Overview

Engro Markaz has a farmer mobile app and this web application. I built the web application. Admins and employees, including the Markaz incharge, use it for registration, carts, orders, letters, catalog, and reports. The web application is in English. Admins also maintain the translations the mobile app displays. The API is split into three microservices: auth, core, and markaz.

03 / Context

Context

Built at MT Pixels for Engro Fertilizers. Still in progress. I worked on the web application only. The interface of that application is English. An admin can add a language, then add a translation for each record the mobile app needs, including the title and an uploaded image. There is no public URL.

04 / Problem

Problem

Farmers buy on the mobile app. Admins and store employees still have to run the store side: register a farmer, place or correct an order, and keep the catalog. The mobile app also has to show that catalog in whatever languages the business adds, and those languages are not fixed in advance.

Constraints

  • Angular and TypeScript web application. The farmer mobile app is a separate product, and I did not build it.
  • The API follows a microservices split: auth, core, and markaz.
  • Sign-in starts with Microsoft, through MSAL (the Microsoft Authentication Library). The app then exchanges that identity for its own session.
  • The web application is English. Translations for the mobile app are data: an admin adds a language, then a title, an image, and the other fields that record needs in that language.
  • Farmer registration collects a location, a CNIC (Pakistan's national identity card number), and an OTP (a one-time password sent to the farmer's phone).
  • Ongoing. No public usage numbers.

05 / My role

My role

I built the Engro Markaz web application for admins and employees such as the Markaz incharge, from Microsoft sign-in through catalog translations and the order at the store.

What I built

  • Microsoft sign-in (MSAL) and the application session after that exchange
  • Farmer registration, including location, CNIC, and OTP, plus internal users and roles
  • Carts, the order hub, authority letters (documents that authorize collection), and delivery letters
  • Warehouses, products, crops, mandis (wholesale markets), and the area hierarchy
  • Translations for the mobile app: languages are added by an admin, then a title, image, and the other fields for products, categories, and similar records
  • Notifications, promotions, soil sampling, and reports

How it is structured

  • The API split into auth, core, and markaz microservices
  • Cart create and edit, including warehouse and line items
  • Authority and delivery letters, including disputes
  • Operational reports, including the Bharosa scan report

06 / Approach

Approach

Microsoft sign-in is exchanged for an application session before any staff screen opens. Registration, carts, orders, and the catalog each go through a service contract against the auth, core, or markaz API. The web application stays in English. A translation is a record an admin attaches to a language, and the mobile app is what displays it.

07 / Key decisions

Key decisions

01 / Decision

Microsoft sign-in is exchanged for an application session before staff work begins.

Reason
Azure AD, through MSAL, establishes who the person is. Carts, orders, letters, and reports need the application's own session, because that session carries profile and permissions.
Trade-off
A Microsoft account alone does not open the product. Staff reach the farmer and the order only after the exchange succeeds.
Result
An admin or Markaz incharge reaches the farmer, the order, and the reports only after that session exists.

02 / Decision

The web application stays in English. Translations are data an admin maintains for the mobile app.

Reason
The mobile app has to show products, categories, and similar records in the languages the business adds. Those languages are not fixed to English and Urdu.
Trade-off
Each translatable record needs a translation per language, including a title and an uploaded image, instead of one string on the screen.
Result
An admin adds a language, then the translations for it. The mobile app reads those translations. This web application stays in English.

08 / Solution

Solution

After the session exists, an admin or Markaz incharge opens the farmer, then the cart: warehouse, line items, and delivery. Authority letters and delivery letters sit on that order. The same application is where an admin adds a language and the title, image, and other translated fields the mobile app will show.

Engro Markaz list of carts
Markaz cart list with pending, paid, and deleted counts.
Engro Markaz cart editor for a farmer, warehouse, and items
Cart editor for farmer, warehouse, items, and delivery.
Engro Markaz promotional notification form
Promotional notification targeted by Engro hierarchy.

09 / Stack

Methods and technology

Methods

  • 01MSAL redirect, then an application session
  • 02API microservices: auth, core, and markaz
  • 03Service contract per feature
  • 04Dynamic languages and per-record translations for the mobile app

Technology

  • 01Angular
  • 02TypeScript
  • 03RxJS
  • 04PrimeNG
  • 05Tailwind CSS
  • 06Microsoft Authentication Library (MSAL)
  • 07Google Maps

10 / Scope

Scope

Who uses it
Admins and store employees, including the Markaz incharge. The farmer mobile app is a separate product.
Translations
Languages are added by an admin. A translation can include the title, an uploaded image, and the other fields that record needs. The mobile app is what displays them.
API
Three microservices: auth, core, and markaz.