Skip to content

nxtgrid/nxt-control-room

Repository files navigation

NXT Control Room

NXT Control Room is the operations dashboard for NXT. It is the central tool for managing mini-grid infrastructure - from grid sites and hardware to user accounts, payments, and field commissioning workflows.

Features

  • Grid, site, and hardware management
  • Real-time meter interaction queue via Socket.IO
  • Geo editor for draft grid designs (with webhook integration)
  • LoRaWAN meter troubleshooting via ChirpStack
  • User and organisation account management
  • Flutterwave payment operations
  • Grafana-embedded analytics dashboards
  • Mapbox-based mapping and geo tools
  • Bulk meter import and testing tools
  • Offline clear-tamper token generation

Tech Stack

Layer Technology
Framework Vue 3
Build tool Vite 6
State management Pinia
Routing Vue Router
Styling Sass
HTTP ky
Real-time Socket.IO
Geo Mapbox GL JS, Turf.js
Backend Supabase
Shared UI NXT UI Components

Prerequisites

  • Node.js — use the version in .nvmrc (managed via NVM)
  • A running instance of the NXT backend (or a local Supabase setup)

Getting Started

1. Clone sibling repositories

NXT Control Room shares UI components and libraries with the other NXT front-end apps via NXT UI Components. Clone it as a sibling of this project:

git clone https://github.com/nxtgrid/nxt-ui-components.git ../nxt-ui-components

2. Install dependencies

nvm use
npm install

The jsconfig.json path alias @nxt/* already points to ../nxt-ui-components/shared, so NXT UI Components is available automatically in local development without any additional build step.

3. Configure environment

Copy .env.example to .env and fill in your values:

cp .env.example .env

See .env.example for a full description of each variable, including the optional ones for Socket.IO, ChirpStack, and geo webhook integrations.

Developing against a local Supabase instance

Use .env.local to override the relevant settings when running Supabase locally:

VITE_API_URL="http://localhost:80"
VITE_SUPABASE_REFERENCE_ID="local"
VITE_SUPABASE_ANON_KEY="<key from `supabase start`>"

4. Start the development server

npm run dev

Scripts

Script Description
npm run dev Start the Vite dev server with hot-reload
npm run build Compile and minify for production
npm run preview Preview the production build locally
npm run lint Lint all JS and Vue files
npm run lint:fix Lint and auto-fix

Code Quality

All commits are linted via Husky + lint-staged. If you encounter a "command not found" error on commit, see the Husky troubleshooting guide.

If you use a GUI Git client like GitKraken, set the project's Git hooks path to an absolute path rather than the default relative ./husky.

Contributing

See CONTRIBUTING.md.

Authors & Contributors

Bobby Bol ([email protected]) — author & maintainer

See AUTHORS.md for the full list of authors and CONTRIBUTORS.md for all contributors.

License

This project is licensed under the Mozilla Public License 2.0 (MPL 2.0). See LICENSE for the full text.

Repository: https://github.com/nxtgrid/nxt-control-room

Third-party licenses: Dependencies include NXT UI Components (nxt-shared) and its npm tree; those packages have their own terms. See the NXT UI Components README, section Third-party licenses.

About

The operations dashboard for NXT. It is the central tool for managing mini-grid infrastructure — from grid sites and hardware to user accounts, payments, and field commissioning workflows.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages