Update projects page with details from resume

Add APRS.me and Verona Networks project pages, flesh out
TowerOps and GridMap descriptions, and add shared infrastructure
overview to the projects section.
This commit is contained in:
Graham McIntire 2026-02-25 17:04:03 -06:00
parent ab2099d16a
commit 9f1da2c174
No known key found for this signature in database
5 changed files with 32 additions and 2 deletions

View file

@ -3,3 +3,7 @@ title = "Projects"
template = "projects.html"
sort_by = "title"
+++
All three applications are built with Elixir/Phoenix and run on a self-managed Kubernetes cluster hosted on my WISP's network infrastructure. Talos Linux nodes run as VMs on Proxmox VE hypervisors, managing the full stack from physical hardware through container orchestration. Workloads are deployed via Kubernetes manifests with Phoenix releases built as Docker images, using PostgreSQL operators with TimescaleDB and PostGIS extensions for per-app database isolation.
Monitoring is handled with Grafana, Telegraf, Loki, and UptimeRobot. Kubernetes secrets are stored in 1Password vaults, daily PostgreSQL backups run to an offsite NAS, and services are exposed through Cloudflare Tunnels via cloudflared.

9
content/projects/aprs.md Normal file
View file

@ -0,0 +1,9 @@
+++
title = "APRS.me"
description = "Real-time APRS packet tracking and visualization, built with Elixir/Phoenix, and PostGIS."
[extra]
url = "https://aprs.me"
+++
APRS.me is a real-time tracking and visualization platform for the Amateur Radio Automatic Packet Reporting System (APRS) network. Built with Elixir/Phoenix and backed by PostgreSQL with PostGIS for spatial queries.

View file

@ -1,7 +1,11 @@
+++
title = "GridMap"
description = "GridMap"
description = "Maidenhead grid square mapping tool for amateur radio operators, built with Elixir/Phoenix."
[extra]
url = "https://gridmap.org"
+++
GridMap is a mapping tool for amateur radio operators that visualizes Maidenhead grid squares. Built with Elixir/Phoenix and backed by PostgreSQL with PostGIS for spatial queries.
Parses NASA SRTM elevation data to generate elevation profiles along a path, useful for evaluating line-of-sight between stations.

View file

@ -1,7 +1,11 @@
+++
title = "TowerOps"
description = "TowerOps"
description = "Network monitoring and management platform for WISPs, built with Elixir/Phoenix."
[extra]
url = "https://towerops.net"
+++
TowerOps is a network monitoring and management platform built specifically for wireless internet service providers. It monitors the entire Verona Networks infrastructure alongside LibreNMS, Icinga2, and PagerDuty.
A remote agent written in Go runs in Docker Compose within customer networks, letting TowerOps poll internal network devices without exposing them to the internet. The agent connects back to towerops.net over a WebSocket using protobufs.

View file

@ -0,0 +1,9 @@
+++
title = "Verona Networks"
description = "Rural wireless internet service provider serving the Princeton, Texas area."
[extra]
url = "https://vntx.net"
+++
Verona Networks is a wireless internet service provider I founded in 2006 to bring quality high-speed internet to rural areas around Princeton, Texas.