junvandCopilot cfca2c2ed7 routermon: add WAN geo map + fix batch geo enrichment
- Add WanGeoStatsView (api/wan/geo/) returning country choropleth +
  bubble data for WAN source IPs using IPGeoCache lat/lon
- Add wanGeoMap (420px) in dashboard between ports chart and live table:
  red colour scale by country, rose bubbles sized by attempt count,
  top-5 country legend
- Rewrite _geo_worker_loop to drain up to 200 queue items per cycle,
  bulk DB cache check, batch API calls (100 IPs per request) instead
  of 1 request per IP — fixes ip-api.com timeout pile-up under scan
  volumes
- Add _geo_skip in-memory set: IPs that return no geo data get an
  empty IPGeoCache placeholder saved to DB so they are never retried;
  skip set also prevents re-queuing known-empty IPs during flush
- Remove _fetch_geo / _enrich_dns_geo / _enrich_wan_geo helpers
  (logic consolidated into the new batch worker)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-16 16:13:30 +10:00
2026-04-14 12:04:44 +10:00
2026-01-18 10:28:00 +11:00
2026-03-21 16:41:14 +11:00
2025-08-18 21:20:14 +10:00
2026-03-30 19:51:12 +11:00
2026-04-01 21:52:29 +11:00
2026-04-01 21:33:07 +11:00
2026-03-29 11:10:37 +11:00
2026-03-29 11:10:37 +11:00
2026-04-16 14:01:43 +10:00
2026-03-29 10:23:46 +11:00
2024-11-17 11:11:08 +11:00
2025-11-04 22:22:40 +11:00
2026-04-01 21:33:07 +11:00
2025-11-05 20:56:35 +11:00
2026-04-16 14:18:46 +10:00
2024-11-18 15:47:35 +11:00
2026-04-01 15:51:20 +11:00
2024-11-04 15:20:18 +11:00
2026-03-21 16:41:14 +11:00
2026-03-29 11:10:37 +11:00
2026-03-30 19:51:12 +11:00
2026-01-18 10:28:00 +11:00
2026-01-18 10:28:00 +11:00
2026-04-01 15:51:20 +11:00
2026-03-29 11:10:37 +11:00

URL Manager

A URL management tool that helps you organize and access your links efficiently.

Features

  • Create and manage short links
  • Template links with dynamic parameters
  • Bookmark pages with automatic title and summary extraction
  • Screenshot capture for bookmarked pages
  • Advanced search capabilities
  • REST API access
  • In-process background task scheduling (APScheduler)
  • Network security scanner (NetScan)

Prerequisites

  • Python 3.12+
  • uv — fast Python package manager
  • just — command runner (brew install just)
  • Docker + Docker Compose (for containerised setup)

Quick Start (Local)

# 1. Install dependencies and apply migrations
just install

# 2. Install Playwright browsers (for screenshot capture)
just install-browsers

# 3. Run the full stack (Django + Tailwind watcher)
just dev-all

The app will be available at http://localhost:8000

Run just (no arguments) to see all available recipes.

Local Development Commands

Recipe Description
just dev Run Django server + Tailwind together
just tailwind Run Tailwind CSS watcher (standalone)
just migrate Apply pending migrations
just makemigrations Generate new migrations
just shell Open Django shell
just dbshell Open raw DB shell
just superuser Create a superuser
just build-css Build minified Tailwind CSS
just collectstatic Collect static files
just test Run tests
just compilemessages Compile i18n translation files
just makemessages Extract translatable strings (zh_Hans)

Docker Commands

Recipe Description
just docker-build Build images
just docker-start Start all services (detached)
just docker-stop Stop all services
just docker-restart Restart services
just docker-logs Tail logs (all services)
just docker-logs web Tail logs for a specific service
just docker-shell Shell into the web container
just docker-migrate Run migrations inside Docker
just docker-static Collect static files inside Docker
just docker-rebuild web Rebuild and restart a specific service

Docker Services

  • web — Django server on port 8000 (APScheduler runs in-process)
  • node — Tailwind CSS compiler

Usage

  1. Create a new link at /create/
  2. Access a link at http://localhost:8000/your-alias
  3. For template links use {param, default=value} syntax in the URL

Managing Pages (Bookmarks)

  1. Add a bookmark at /ui/pages/new/ — title and summary are auto-extracted
  2. Screenshots are captured automatically in the background
  3. View all bookmarks at /ui/pages/

Network Scanner (NetScan)

Available at /ui/netscan/. Create a scan profile to automatically monitor your home network for security issues (router exposure, DNS, TLS certs, camera access).

API

  • List pages: GET /api/pages/
  • Full API docs: /ui/api-docs/

Architecture

core/         — Django project config, APScheduler setup
links/        — Main app: links, pages, tags, posts, collections
netscan/      — Network security scanner
templates/    — Base HTML templates

Background tasks (screenshot capture, page metadata extraction, network scans) run via APScheduler in-process — no separate worker or Redis needed.

Dependencies

Managed with uv via pyproject.toml.

# Add a new package
uv add package-name

# Sync environment from lockfile
uv sync

Favicon

Generated using the Zen Tokyo Zoo font (https://fonts.gstatic.com/s/zentokyozoo/).

Image Resizing (Cloudflare)

S
Description
No description provided
Readme
27 MiB
Languages
HTML 45%
Python 37.9%
Swift 9.7%
JavaScript 5.2%
CSS 1.5%
Other 0.6%