- 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.
79 lines
3 KiB
Elixir
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
|