No description
Find a file
Graham McIntire ff3a478bbd
perf: add LIMIT to unbounded DISTINCT ON, guard device table scan, add DB indexes
Bound batch DISTINCT ON queries by input count. Guard Repo.all(Devices) with exists? check. Add trigram GIN index on base_callsign and (has_weather, received_at DESC) partial index.

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-01 16:49:48 -05:00
.devcontainer update deps 2025-12-30 13:35:11 -06:00
.forgejo/workflows move registry + repo refs to codeberg.org/gmcintire/aprs.me 2026-05-05 12:07:31 -05:00
.github/workflows remove duplicate github deploy.yml; only forgejo build.yaml runs now 2026-04-29 12:35:04 -05:00
assets fix: prevent incoming packets from closing user-opened map popup 2026-04-27 09:46:45 -05:00
config Add PromEx Prometheus exporter and /metrics endpoint 2026-05-08 10:41:06 -05:00
docs feat(mobile): rate-limit socket + batch historical packet delivery 2026-04-21 09:38:51 -05:00
k8s Optimize prod: scale deployment, drop expensive metric queries, fix slow callsign and nearby-stations queries 2026-05-12 17:48:58 -05:00
lib perf: add LIMIT to unbounded DISTINCT ON, guard device table scan, add DB indexes 2026-06-01 16:49:48 -05:00
priv perf: add LIMIT to unbounded DISTINCT ON, guard device table scan, add DB indexes 2026-06-01 16:49:48 -05:00
rel Fix Erlang clustering: use IP-based node names with DNS strategy 2026-02-19 16:01:20 -06:00
scripts Remove all VectorGrid references and code 2025-07-28 07:43:44 -05:00
test Remove dead packets.html.heex template and create findings.md 2026-05-29 15:50:23 -05:00
vendor update vendor 2026-05-08 10:04:25 -05:00
.credo.exs auto style things 2023-12-17 12:11:57 -06:00
.dialyzer_ignore.exs Implement mix_unused-style unused public function detector 2026-05-08 12:30:04 -05:00
.dockerignore Implement all Docker performance optimizations 2025-07-26 16:12:47 -05:00
.formatter.exs update 2026-02-18 14:14:49 -06:00
.gitignore chore: ignore .worktrees directory for git worktree isolation 2026-03-01 15:01:08 -06:00
.gitmodules Improve test coverage to 87% and point vendor/aprs submodule at codeberg 2026-05-05 15:18:28 -05:00
.sobelow-skips Add other SSIDs list to map sidebar, fix context/web boundary 2026-02-18 18:15:02 -06:00
.test-commands perf: Optimize test suite for maximum speed 2025-08-01 17:43:39 -05:00
.tool-versions fix elixir type warnings 2026-05-29 14:00:29 -05:00
AGENTS.md cleanup 2026-02-07 10:55:19 -06:00
capture_aprs.py Add mix parse_file task, fix datetime deprecation, update gitignore, fix cleanup worker test 2026-02-18 14:49:14 -06:00
CHANGELOG.md fix: remove invalid empty state from stream container 2025-10-12 12:16:27 -05:00
CLAUDE.md Add Tidewave dev dependency for browser-based debugging 2026-02-18 13:15:03 -06:00
Dockerfile Dockerfile: align Elixir/OTP/Debian versions with microwaveprop 2026-04-29 12:45:01 -05:00
findings.md Remove dead packets.html.heex template and create findings.md 2026-05-29 15:50:23 -05:00
fly.toml fly things 2025-06-13 15:10:29 -05:00
horusec-config.json add horusec to ci 2025-06-15 17:19:26 -05:00
LICENSE Initial commit 2023-01-26 13:19:38 -06:00
mix.exs Add PromEx Prometheus exporter and /metrics endpoint 2026-05-08 10:41:06 -05:00
mix.lock Update dependencies 2026-05-11 09:58:18 -05:00
README.md README: argocd, not flux 2026-04-29 11:12:50 -05:00
renovate.json chore(config): migrate config renovate.json 2026-03-03 16:58:26 +00:00
security-policy.json docker security 2025-06-15 11:06:24 -05:00
tail_logs.sh update 2026-02-25 16:29:45 -06:00
TODO.md Remove completed items from TODO.md 2026-02-20 09:06:49 -06:00
tsconfig.json typescript 2025-06-18 12:26:13 -05:00

Aprs

Prerequisites

Before setting up the project, ensure you have the following installed:

  • Elixir 1.17+
  • Erlang/OTP
  • PostgreSQL with PostGIS extension

Setup

To start your Phoenix server:

  • Run the complete setup:
    mix setup
    
  • Start Phoenix endpoint with mix phx.server or inside IEx with iex -S mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

Deployment

This application is deployed to a Kubernetes cluster using ArgoCD. The Kubernetes manifests are in the k8s/ directory and are reconciled automatically when changes are pushed to the main branch. New container image tags are picked up by argocd-image-updater (no commits to k8s/deployment.yaml required).

Learn more