Docs

Changelog

What's new and what's changed in NTHMAP.

v0.4.0 — Public site, docs, CLI, MCP (current)

  • Public marketing site at / with hero, features, pricing, use cases, dev strip, and CTA
  • Documentation site at /docs with markdown rendering, sidebar nav, 8 core pages
  • 16 vertical market use case articles at /use-cases with filterable index
  • Python CLI — single-file install, API-key based, pipe-friendly JSON/CSV/YAML output
  • MCP server — stdio JSON-RPC server exposing every dataset as a tool for Claude/ChatGPT/Cursor
  • API keys — Bearer token auth alongside session cookies, create/list/revoke endpoints, bcrypt hashed, key_prefix lookup

v0.3.0 — Admin, i18n, smart loading

  • Internal admin panel at /admin with users CRUD, app settings editor, translation editor, dashboard stats
  • Multi-languagelang_label table with top 10 languages (en, zh, hi, es, ar, bn, pt, ru, ja, de), frontend loader, RTL support, per-user preference
  • AI saved prompts — per-user CRUD, clickable list in sidebar, usage tracking
  • Collapsible accordion layer groups — each layer section in the sidebar is now a <details> accordion
  • Per-layer filters — vessel speed/load moved into Vessels group, event severity filter added to Events group
  • Smart zoom-out vessel loading — backend caps vessel count by zoom level (200 → 5000) and orders by est_cargo_mt so the biggest ships stay visible at world view
  • Mobile responsive — sidebar slides over the map under 900px, compact topbar under 600px
  • Light theme fix — switched to CARTO light_nolabels basemap for better marker contrast

v0.2.0 — Performance + UX polish

  • gzip compression on all JSON/JS/CSS responses — /api/vessels went from 63 KB to 12 KB
  • Viewport-gated vessel/infra/events fetching — only loads what's in view, debounced on moveend
  • Cache headers — 1-year immutable on /static/vendor/*, no-cache with ETag revalidation on other static
  • Modal system — Promise-based ntmAlert / ntmConfirm / ntmPrompt / ntmToast / ntmCustom replaces every native browser dialog
  • New auth modal — tabbed Sign in / Sign up with rich brand header and Pro feature breakdown
  • Sidebar collapse with slide animation, keyboard hotkey Cmd/Ctrl-\
  • Avatar dropdown menu with language picker, tier pill, admin link, Sign out

v0.1.0 — MVP

Initial Phase 1 build per PLAN.md:

  • Database: PostgreSQL 16 + PostGIS, 9 tables, seeded with 150 vessels, 169 infrastructure assets, 15 events, 12 prices, 8 chokepoints
  • Backend: Flask blueprints for auth, map data, user features, AI (OpenAI), billing (Stripe), draw analysis
  • Frontend: Leaflet (no WebGL requirement) + vanilla ES modules
  • Layers: vessels (rotated triangle icons), infrastructure (typed badges + pipeline polylines), events (pulsing markers + radius circles), chokepoints (zone rectangles + count badges)
  • Draw tool: Leaflet.draw polygons/rectangles/circles → PostGIS ST_Within analysis → regional breakdown
  • AI integration: OpenAI chat completions via stdlib urllib (no SDK dependency)
  • Stripe billing: checkout, customer portal, webhook handler
  • Vessel motion simulator — runs as systemd service, moves vessels along heading every 30 seconds for dev demo