GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - iblh/uplotr: Open-source GPS and IoT device tracking console with REST and LoRaWAN ingestion.

BranchesTags
Open more actions menu

Latest commit

 

History

15 Commits
15 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
app
app
 
 
components
components
 
 
docs
docs
 
 
lib
lib
 
 
prisma
prisma
 
 
public
public
 
 
tests
tests
 
 
.dockerignore
.dockerignore
 
 
.env.example
.env.example
 
 
.env.prod.example
.env.prod.example
 
 
.gitignore
.gitignore
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Dockerfile
Dockerfile
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
SUPPORT.md
SUPPORT.md
 
 
docker-compose.prod.yml
docker-compose.prod.yml
 
 
docker-compose.yml
docker-compose.yml
 
 
docker-entrypoint.sh
docker-entrypoint.sh
 
 
eslint.config.mjs
eslint.config.mjs
 
 
next-env.d.ts
next-env.d.ts
 
 
next.config.mjs
next.config.mjs
 
 
package.json
package.json
 
 
playwright.config.ts
playwright.config.ts
 
 
pnpm-lock.yaml
pnpm-lock.yaml
 
 
pnpm-workspace.yaml
pnpm-workspace.yaml
 
 
postcss.config.js
postcss.config.js
 
 
proxy.ts
proxy.ts
 
 
tailwind.config.ts
tailwind.config.ts
 
 
tsconfig.json
tsconfig.json
 
 
vercel.json
vercel.json
 
 
vitest.config.ts
vitest.config.ts
 
 

Repository files navigation

uplotr

Open-source field testing for moving hardware. Capture GPS and arbitrary sensor telemetry, diagnose data quality, and compare hardware or firmware test runs on a fast MapLibre map.

Website · Live synthetic demo · Documentation · Discussions

Public Beta — v0.3.1-beta.1. uplotr is suitable for evaluation, maker field tests, and self-hosted deployments. Back up location data before upgrades. The official instance does not offer public registration or accept visitor location uploads.

What works today

  • Generic REST ingestion with bearer API keys
  • LoRaWAN webhooks for The Things Network, Helium, and ChirpStack payloads
  • Live device state, online/offline status, battery, RSSI, and SNR
  • Historical paths, point view, time filtering, and trajectory replay
  • Structured field-test runs with hardware, firmware, goals, and notes
  • Arbitrary flat telemetry metrics stored beside every position
  • Explainable reporting-gap, GPS-jump, and timestamp diagnostics
  • Baseline-to-candidate run comparison reports
  • DIY drone flight-log import from GPX and generic, PX4, ArduPilot, or Betaflight CSV exports
  • Run-scoped route replay, telemetry-colored paths, and flight-specific altitude, speed, GPS, and home-distance summaries
  • MapLibre + OpenFreeMap by default; Mapbox is optional
  • Single-owner private console with administrator-managed users and keys
  • PostgreSQL persistence, retention cleanup, Docker Compose, and Vercel deployment
  • Public, deterministic, read-only demo that never touches the production database

Not included in this Beta: open registration, multi-tenant SaaS, alerts, native MQTT/Kafka adapters, public report sharing, or a commercial SLA. These are roadmap items, not advertised features.

Five-minute Docker start

git clone https://github.com/iblh/uplotr.git
cd uplotr
cp .env.prod.example .env
# Set strong AUTH_SECRET, DB_PASSWORD, and CRON_SECRET values in .env
docker compose -f docker-compose.prod.yml up -d

Open http://localhost:3000/login, create the owner account, then create an API key in Settings → Access and security. The full key is displayed once.

curl -X POST http://localhost:3000/api/v1/ingest \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"device_id":"tracker-01","lat":37.7749,"lon":-122.4194,"battery":98,"metrics":{"altitude":32,"voltage":4.08}}'

See the Quick Start, Deployment Guide, and API Reference for complete instructions.

Architecture

flowchart LR
  D[Devices and gateways] -->|REST or LoRaWAN webhook| A[Next.js API]
  A --> V[Validation, auth, rate limits]
  V --> P[(PostgreSQL)]
  P --> C[Private console /app]
  S[Deterministic synthetic data] --> M[Public read-only demo /demo]
  C --> L[MapLibre + OpenFreeMap]
  M --> L
Loading

The public website and demo are isolated from private tracking data. API routes enforce their own authorization; the request proxy is used only for page navigation.

Development

Requires Node.js 22, pnpm 10, and PostgreSQL.

pnpm install
cp .env.example .env
pnpm exec prisma migrate dev
pnpm dev

Before opening a pull request:

pnpm lint
pnpm typecheck
pnpm test
pnpm build

CI also runs real-Postgres integration tests, browser smoke tests, a production dependency audit, and a Docker build.

Security and data responsibility

Internet-facing deployments should use AUTH_MODE=REQUIRED, strong unique secrets, HTTPS, a connection-pooled PostgreSQL database near the application, and regular encrypted backups. Location data is sensitive; do not attach real payloads, coordinates, credentials, or logs to public issues.

Please report suspected vulnerabilities privately as described in SECURITY.md.

Roadmap

  1. Raw PX4 ULog, ArduPilot DataFlash, Betaflight Blackbox, and licensed DJI flight-record adapters
  2. Read-only MCP tools for devices, runs, reports, and comparisons
  3. Native MQTT/Meshtastic worker plus webhook retry and idempotency
  4. Geofences, offline/low-battery rules, and outgoing automation webhooks
  5. Private report sharing plus GPX, GeoJSON, and CSV export

Community and license

Questions and ideas belong in GitHub Discussions; actionable defects belong in Issues. See CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SUPPORT.md.

Licensed under Apache-2.0.

About

Open-source GPS and IoT device tracking console with REST and LoRaWAN ingestion.

uplotr.com/

Topics

gpsiotlorawanmaplibrenextjspostgres

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity

Stars

1 star

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.