prop/lib/microwaveprop_web/live/privacy_live.ex
Graham McIntire ff950f9e40
docs/tests: moduledocs on 18 LiveViews, MapLive event coverage, Rust pipeline roundtrip
- Add one-line moduledocs to 18 LiveViews that were carrying
  @moduledoc false. Each line names the route and summarizes what
  the page does so a future reader knows where to look before
  opening the file.
- Add MapLive handle_event tests for toggle_radar, select_time /
  set_selected_time, point_detail, map_bounds, retry_initial_scores.
  Assertions focus on socket-state transitions and "didn't crash"
  rather than raw HTML — map_bounds in particular has no visible
  render-side effect (it push_events the new scores to the JS hook).
- Rust pipeline: integration-shaped test that hand-builds a 2-cell
  surface + pressure grid, runs merge → cell_to_conditions →
  precompute_band_invariants → composite_score_with → write_atomic
  → decode, asserting header + body length round-trip. Closes the
  'pipeline's happy path is only covered by unit tests' gap.
2026-04-21 17:16:12 -05:00

79 lines
3 KiB
Elixir

defmodule MicrowavepropWeb.PrivacyLive do
@moduledoc "Static `/privacy` page."
use MicrowavepropWeb, :live_view
@impl true
def mount(_params, _session, socket) do
{:ok, assign(socket, :page_title, "Privacy")}
end
@impl true
def render(assigns) do
~H"""
<Layouts.app flash={@flash} current_scope={@current_scope} max_width="max-w-3xl">
<.header>
Privacy
<:subtitle>What we collect, and what we promise to do with it.</:subtitle>
</.header>
<section class="space-y-6 text-sm leading-relaxed">
<p>
NTMS Propagation Prediction is an amateur-radio research project run by
and for the North Texas Microwave Society. Any information we collect or
that you submit is used exclusively to study microwave propagation and
improve the prediction model on this site.
</p>
<div class="space-y-3">
<h2 class="text-lg font-bold">We will never</h2>
<ul class="list-disc list-outside pl-5 space-y-1">
<li>Sell your information.</li>
<li>Trade or barter it to third parties.</li>
<li>
Disclose it to anyone outside the project, except where required by law.
</li>
</ul>
</div>
<div class="space-y-3">
<h2 class="text-lg font-bold">What we collect</h2>
<ul class="list-disc list-outside pl-5 space-y-1">
<li>
<strong>Account information</strong> — when you register, we store
your callsign, email address, and a hashed password. Email is only
used for account confirmation and password resets.
</li>
<li>
<strong>Submitted data</strong> — beacon listings, QSOs, and beacon
monitor reports you voluntarily submit. These are published back to
other amateurs as part of the project.
</li>
<li>
<strong>Approximate location</strong> — our CDN (Cloudflare) provides
a rough latitude/longitude derived from your IP so the map can open
centered near you. It is not stored with your account or any
submission.
</li>
<li>
<strong>Basic request logs</strong> — standard web server logs
(timestamp, path, status, user agent) retained for a short period
for debugging and abuse prevention.
</li>
</ul>
</div>
<div class="space-y-3">
<h2 class="text-lg font-bold">How it's used</h2>
<p>
Everything feeds one goal: calibrating and improving propagation
predictions for the amateur microwave bands. Aggregate or anonymized
results may appear in publications, talks, or on this site, but
individual personal details (email, password, IP) will never be
published.
</p>
</div>
</section>
</Layouts.app>
"""
end
end