Mining Network Operations Center & Private LTE Management Platform
Português · Five-minute demo · Architecture · Data model
MineOps is an executable engineering portfolio that connects a fictional private LTE network to mining operations. A backhaul failure becomes more than a red marker: the operator can see which equipment, industrial applications and operational areas depend on the failed site, then handle the resulting incident and restore service.
All operational data, coordinates, routes, workflows and sample SLA durations are synthetic and independently implemented. Aurora Mining is fictional. This is a local demonstration, not real network monitoring, certified RF prediction or an operational decision system.
- Interactive operational map: original mine benches, terrain contours, facilities and haul roads; labeled antennas with three directional coverage petals per site, nested signal bands and sector/azimuth inspection. Focus and expand the view, or optionally enable attributed OpenStreetMap street geography. Inspect serving-site dependencies directly from the map. Map experience.
- Real-time incident simulation: persist backhaul, power, site availability, congestion, signal, latency, packet loss, device growth and missing-telemetry scenarios. REST actions and WebSocket notifications keep the UI consistent; polling remains available after a lost connection.
- Planning integrated with operations: create a connectivity request on the map, assess illustrative coverage, advance an original eight-stage workflow and activate a site into inventory, telemetry, KPIs and map layers.
The map includes a Signal probe: click an antenna or a point to query nominal signal band, candidate site and sector from backend geometry. Coverage remains explicitly simulated. The MineOps mark and favicon now use an original vector mining truck.
Seeded sites are distributed inside their assigned areas and an explicit mine perimeter. Fit all towers frames the complete network, including after viewport changes; stable markers preserve positioning across updates. Choose Satellite · Esri · online for attributed World Imagery beneath the fictional infrastructure. See map experience for online-source details and limits.
Select SITE-LTE-014 in Network Map and choose Simulate backhaul failure. The seeded dependency graph produces:
| Application | Affected devices |
|---|---|
| Fleet Management | 24 |
| Industrial Telemetry | 12 |
| Video Monitoring | 6 |
| Total | 42 |
The panel reports 42 devices, 3 applications and 1 area because those relationships exist in the database. These numbers are not hardcoded in the UI; device additions and application assignments change the result. Recovery reconnects equipment and clears technical alarms. Human incidents remain open until the operator advances their workflow.
Explore the 18-screenshot feature gallery: directional coverage, signal probing, map controls, NOC monitoring, alarms, simulation, adoption, inventory, devices and analytics. Captures show the running application with synthetic operational data.
| Operations and analytics | Planning and connectivity |
|---|---|
![]() |
![]() |
Browse the documentation index for the visual tour, demo walkthrough and engineering details.
Install Docker with Compose, then run from the repository root:
docker compose up --build -d --waitOpen MineOps, Swagger/OpenAPI, or API health. There is no login: the Demo Operator profile is explicitly a shared local demo profile.
Compose starts PostgreSQL/PostGIS, applies Alembic migrations, seeds the database transactionally, launches the backend simulator and serves the compiled frontend through Nginx. No paid service, API key or external basemap is required. Downloading Docker images and dependencies requires internet on the first build; essential runtime functionality uses local services and geometry.
docker compose logs -f backend
docker compose stop
docker compose startDatabase state is retained in the mineops_db volume. Simulation Center → Reset demo restores the original synthetic operational dataset and preserves audit logs. Browser tests also reset the demo.
Copy .env.example to .env to customize demo database credentials and tick interval. The database is not published to the host; HTTP ports are bound to loopback. See technical decisions for development options.
13 API-backed pages: Overview, Network Map, NOC Monitoring, Alarms & Incidents, LTE Sites, Network Inventory, Connected Devices, Industrial Applications, LTE Adoption, Analytics, Simulation Center, Settings and About MineOps.
The initial seed contains 1 operation, 4 areas, 24 LTE sites, 72 cells, 500 devices, 12 applications, 150 infrastructure assets, 20 expansion requests, 40 historical incidents and seven days of hourly synthetic site telemetry. Synthetic vehicle routes, approximate coverage and a baseline capacity alarm are included. The default simulator then writes current samples every five seconds.
flowchart LR
Browser[React / TypeScript UI] --> Nginx[Nginx]
Nginx --> API[FastAPI REST API]
API <-->|WebSocket notifications| Browser
API --> Services[Simulation / Impact / Adoption / Analytics]
Services --> ORM[SQLAlchemy]
ORM --> DB[(PostgreSQL / PostGIS)]
Alembic[Alembic migrations] --> DB
Seed[NumPy / Faker / Shapely seed] --> DB
API --> Export[Pandas / XLSX / CSV]
Frontend: React, TypeScript, Vite, Tailwind, Radix primitives with local shadcn-style UI components, Lucide, Recharts, MapLibre, TanStack Query, React Router, React Hook Form and Zod. Backend: Python 3.12, FastAPI, SQLAlchemy, Pydantic, Alembic, PostgreSQL/PostGIS, Shapely, NumPy, Pandas, Faker and OpenPyXL. QA: Pytest, Ruff, ESLint and Playwright. Infrastructure: Docker Compose and GitHub Actions.
flowchart LR
Simulator --> Ingestion --> Validation[Pydantic bounds / UTC / deduplication]
Validation --> Transformation[Serving-site / device-state transformations]
Transformation --> Persistence[(Telemetry / events / current inventory)]
Persistence --> Aggregation[Weighted hourly aggregation / retention]
Aggregation --> API --> Dashboard
REST endpoints are grouped under /api: health, overview, sites, cells, devices, applications, inventory, areas, coverage, alarms, incidents, adoption, analytics, simulation, settings, export. Site details include equipment, cell sectors, alarms, history and /sites/{id}/impact. /api/ws sends invalidation notifications after committed mutations and periodic simulation ticks.
Collection endpoints support relevant searches, filters and pagination; invalid inputs return 422, missing records 404, invalid workflows 409. Swagger documents the exact parameters.
The dataset download includes CSV tables, a multi-sheet mineops-demo.xlsx, schema dictionary and fictional-data notice. Use Export data, any inventory download link, /api/export, or scripts/export-demo.ps1.
docker compose run --rm backend pytest -q
docker compose run --rm backend ruff check app tests migrations scriptsFor PostgreSQL/PostGIS domain tests, create a separate test database:
docker compose exec -T db createdb -U mineops mineops_test_local
docker compose run --rm -e TEST_DATABASE_URL=postgresql+psycopg://mineops:mineops_demo@db:5432/mineops_test_local backend pytest -qThe test harness refuses PostgreSQL database names that do not start with mineops_test. Default isolated tests use SQLite; the dedicated PostgreSQL run also exercises actual migrations, constraints, spatial columns and coverage queries.
cd frontend
npm ci
npm run lint
npm run build
npm run test:e2eWindows browser tests use installed Microsoft Edge. On Linux CI, npx playwright install --with-deps chromium supplies Chromium. The browser suite requires the Docker stack at localhost:3000 and resets its demo data. It checks all pages, impact, incident handling, expansion activation, theme switching and tablet layout, and creates the screenshots shown here. See validation evidence for the actual run results and limits.
| Document | Contents |
|---|---|
| Feature gallery | 18 real screenshots with feature descriptions |
| Documentation index | Visual and technical documentation navigation |
| Architecture | Components, responsibilities and update flow |
| Database | Entities, relations, spatial types and migrations |
| Simulation | Scenarios, deterministic movement, recovery and reset |
| Network model | Simplified LTE assumptions and impact semantics |
| Adoption workflow | Original stages, deadlines and activation |
| Data engineering | Validation, aggregation, KPI formulas and retention |
| Demo guide | Five-minute recruiter walkthrough |
| Technical decisions | Tradeoffs, configuration and limitations |
| Third-party notices | Dependency licenses and asset provenance |
This MVP has a single-process simulator and shared local operator profile. It estimates impact from current serving-site associations, without real handover, redundancy, propagation, production auth or carrier integration. Routes and coverage buffers are simplified synthetic geometry. Historical availability is sampled, not measured uptime. Expansions are demo workflows; they do not establish real RF feasibility or real SLAs. Large map/chart libraries make the first frontend download heavier than a simple dashboard.
Potential future work: authenticated multi-user operations, a separately scheduled simulation worker, incremental geospatial writes, a more detailed synthetic terrain/sector model, multi-site incident relationships and query pre-aggregation for larger datasets. No performance benchmarks are claimed.
Original MineOps code is MIT licensed. Dependencies and container services retain their respective licenses; the MIT license does not relicense PostGIS or third-party components.




