No description
Find a file
Graham McIntire 5184d2ee5e
Cache MixUnused analyzer state to skip repeated BEAM scans in tests
- Split Analyzer.analyze/1 into compute_state/1 (slow, scans all BEAMs)
  and a fast filter step. analyze/1 now accepts :precomputed_state opt.
- Mix.Tasks.Compile.Unused.run/1 picks up precomputed state from process
  dict :mix_unused_extra_analyze_opts when present (test escape hatch).
- AnalyzerTest setup_all computes state once; exclude tests pass it
  through analyze/1, dropping per-test cost from ~700ms to <1ms.
- UnusedTest setup_all does the same — the consolidated severity-args
  test drops from 3.4s to ~5ms.
- Trim further sleeps in HistoricalLoadingTest (100->30ms) and
  MovementTest (50->20ms, receive timeouts 100->30ms).

Total suite: 40.6s -> 37.7s; 2488 tests, 0 failures.
2026-05-09 11:17:08 -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 Add PromEx Prometheus exporter and /metrics endpoint 2026-05-08 10:41:06 -05:00
lib Cache MixUnused analyzer state to skip repeated BEAM scans in tests 2026-05-09 11:17:08 -05:00
priv Remove AppSignal; fix decrement trigger and stale test assertions 2026-05-05 13:20:58 -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 Cache MixUnused analyzer state to skip repeated BEAM scans in tests 2026-05-09 11:17:08 -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 chore: pin erlang 28.5 and elixir 1.19.5-otp-28 2026-05-05 16:39:08 -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
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 Add PromEx Prometheus exporter and /metrics endpoint 2026-05-08 10:41:06 -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