mem-dashboard / README.md

MEM Dashboard (rigs and hoists plotter)

MEM dashboard

Last updated: 4/16/2026GitHubMEM Dashboard

MEM Dashboard (rigs and hoists plotter)

The client, Ministry of Energy and Minerals, was inspired by the visual appeal of the RAM Project and requested a similarly engaging dashboard. They need a visually appealing and intuitive interface to monitor units (rigs and hoists) and workforce data in real time. This will support decision-making for workforce deployment, especially as unit terms approach their end.

1. Problem Statement

The Ministry of Energy and Minerals lacks a centralized, real-time dashboard to visualize rigs, hoists, and workforce data, making it difficult to plan timely workforce deployments as unit terms near expiration.

2. Supporting documents

  1. Product brief
  2. System design
  3. API endpoints documentation
  4. Glossary
  5. Unit states explanation
  6. Known Issues

3. Getting started

3.1. Pre-requisites

list all pre-requisitses for the project to be able to run on any system }} Examples:

3.2. Project setup

Clone the repository

git clone https://github.com/rihal-om/mem-dashboard.git
cd mem-dashboard

Running the app locally

Since the app is fully frontend at the time of documenting, all you have to do is run the /web

  1. Change directory to the web
cd web
  1. Install node dependancies
pnpm install
  1. Start the web app locally
pnpm dev

4. Building and publishing the app to production

In case you want to build and publish the app to production, follow these steps:

  1. If needed, edit the tag of the web image docker-compose.build.yaml and docker-compose.prod.yaml
  2. Run docker compose -f docker-compose.build.yaml build to build the web image
  3. Run docker compose -f docker-compose.build.yaml push to push the images to GitHub
  4. Then, login into the ministry's portainer (secrets stored in vaultwarden)
  5. Modify the mem-dashboard stack by editing the web image tag to be the new one and click on "update the stack"
  6. The new docker image should be fetched from github and deployed, and you're good to go!

5. Project Structure

General structure of the project is as follows:

FolderPurpose
docsContains project documentation files
geojsonStores GeoJSON files for geographic data and mapping features
utilsHouses utility functions and helper modules
webContains web application files (frontend code, assets, etc.)

The app relies on GeoJson files to be able to meet the client's requirements, utils/blocks_process.py is used to cleanup geojson/oman_blocks.geojson file to remove unnecessary data and make it more suitable for the app's needs. The cleaned up file is stored in web/public/oman_blocks_processed.geojson; which is then used in the app to render the map and display the blocks.

6. Web Folder Structure

Almost all the code is in the web folder, which is structured as follows:

Folder/FilePurpose
publicStatic assets served directly (images, favicon, etc.)
srcSource code directory containing all application logic
src/apiAPI-related functions and service calls -- currently only containing the axios configs
src/componentsReusable React components that are not logic heavy
src/featureFeature-specific modules and components -- consists of components and some logic
src/hooksCustom React hooks -- containes most of data caching and filtering logic
src/pagesPage components -- collection of componentts, features and data logic that falls under a single view
src/storeState management -- Zustand store for global state management
src/typesTypeScript type definitions
src/utilsUtility functions and helpers
App.tsxMain component, has the routes and the main layout -- app is supposed to be simple
index.cssGlobal CSS styles
main.tsxApplication entry point
vite-env.d.tsVite environment type declarations

7. Tech Stack

Note to maintainers: Update the table when additional services or tools are introduced.

CategoryToolDescription
FrontendReact.jsA declarative, component-based JavaScript library for building user interfaces
ContainerizationDockerA platform for developing, shipping, and running applications in isolated containers
CI/CDGitHub ActionsA flexible automation tool for building, testing, and deploying code directly from GitHub

Breakdown of the important libraries and tools used in the project:

CategoryToolDescription
State ManagementZustandA small, fast, and scalable state management solution for React applications
StylingTailwind CSSA utility-first CSS framework for rapid UI development
RoutingReact RouterA collection of navigational components that compose declaratively with your application
HTTP ClientAxiosA promise-based HTTP client for the browser and Node.js
Components LibraryCustom ComponentsCustom-built reusable components for the dashboard UI
MapmapLibre & ract-map-glA library for integrating interactive maps into React applications, using MapLibre GL JS for rendering

Project Team

NameRoleGitHub
Vineeth KumarProject ManagerVineeth.Kumar@tp.rihal.om
Jishnu KidileUX/UI DesignerJishnu.Kidile@rihal.om
Maymoona Al BalushiLead Frontend Dev@MaymoonaAlBoloshi
Mohamed Al-RasbiBackend Developer@mohdrasbi

Feel free to reach out to any of us for questions, feedback, or collaboration opportunities. We are always open to discussing new ideas and improvements for the project.

Happy coding!