# gamend_web v1.0.1216 - Table of Contents

> Web interface for Gamend, built with Phoenix Framework. Provides APIs, authentication, real-time features, and payments.

## Pages

- [Gamend Web](readme.md)
- [September 2026](changelog.md)

## Modules

- [GamendWeb.ApiStatsSchema](GamendWeb.ApiStatsSchema.md): The OpenAPI response shape shared by every `/<resource>/stats` endpoint.
- [GamendWeb.BrotliCompressor](GamendWeb.BrotliCompressor.md): A `Phoenix.Digester.Compressor` that shells out to `brotli`.
- [GamendWeb.ContentPages](GamendWeb.ContentPages.md): The changelog and roadmap pages: one markup, two rendering styles.
- [GamendWeb.ContentText](GamendWeb.ContentText.md): Translates the user-facing text stored on quests, leaderboards and
tournaments.
- [GamendWeb.ErrorResponse](GamendWeb.ErrorResponse.md): Sends the real error page from a controller or a plug.
- [GamendWeb.Features](GamendWeb.Features.md): Toggles for the public, unauthenticated surface.
- [GamendWeb.HostRuntime](GamendWeb.HostRuntime.md): The boot-time configuration derivations every host shares: declared settings
turned into the shapes Phoenix, Ecto, Bandit, Swoosh and Pigeon expect.
- [GamendWeb.Http](GamendWeb.Http.md): How the endpoint is addressed and who may call it from a browser.
- [GamendWeb.Icons](GamendWeb.Icons.md): The typed icon set: every heroicon the site ships, as an atom.
- [GamendWeb.IndexNow](GamendWeb.IndexNow.md): Tells search engines a page changed, instead of waiting to be crawled.
- [GamendWeb.LogFilter](GamendWeb.LogFilter.md): A host-supplied rule for dropping log events.
- [GamendWeb.LogFilters](GamendWeb.LogFilters.md): Primary `:logger` filters for crash reports that are noise, not defects.
- [GamendWeb.Observability](GamendWeb.Observability.md): Logging, metrics and dashboard settings.
- [GamendWeb.PageMeta](GamendWeb.PageMeta.md): Helpers for the host module behind `GamendWeb.Plugs.PageMeta`.
- [GamendWeb.Realtime](GamendWeb.Realtime.md): Tuning for outbound realtime state updates.

- [GamendWeb.Sitemap.Cache](GamendWeb.Sitemap.Cache.md): Stores rendered sitemap XML on `Gamend.Storage` so a request serves bytes
instead of rebuilding them.
- [GamendWeb.Sitemap.Lastmod](GamendWeb.Sitemap.Lastmod.md): Truthful `<lastmod>` dates for sitemap entries, from content hashing.
- [GamendWeb.Sitemap.Source](GamendWeb.Sitemap.Source.md): The host's answer to "which pages exist, and what is on them".
- [GamendWeb.Sitemap.Xml](GamendWeb.Sitemap.Xml.md): Rendering a `<urlset>` or a `<sitemapindex>`: the parts no host varies.
- [GamendWeb.Tls](GamendWeb.Tls.md): Native HTTPS, served directly by Bandit.
- [GamendWeb.Uploads](GamendWeb.Uploads.md): The two-step upload every icon and avatar endpoint shares.

- Host integration
  - [GamendWeb](GamendWeb.md): The entrypoint for defining your web interface, such
as controllers, components, channels, and so on.
  - [GamendWeb.CoreComponents](GamendWeb.CoreComponents.md): Provides core UI components.
  - [GamendWeb.Endpoint](GamendWeb.Endpoint.md)
  - [GamendWeb.Layouts](GamendWeb.Layouts.md): Compatibility facade for the host-owned layout shell.

  - [GamendWeb.Router](GamendWeb.Router.md)
  - [GamendWeb.Router.Shared](GamendWeb.Router.Shared.md): Route macros a host app mounts to get the server's HTTP surface.
  - [GamendWeb.Telemetry](GamendWeb.Telemetry.md)
  - [GamendWeb.UserAuth](GamendWeb.UserAuth.md): Helpers for session / cookie based authentication and LiveView mounts.

- Plugs &amp; mounts
  - [GamendWeb.Auth.AssignCurrentScope](GamendWeb.Auth.AssignCurrentScope.md): Plug to assign current_scope from Guardian's loaded user resource.
  - [GamendWeb.Auth.ErrorHandler](GamendWeb.Auth.ErrorHandler.md): Handles authentication errors for the Guardian pipeline.

  - [GamendWeb.Auth.Guardian](GamendWeb.Auth.Guardian.md): Guardian implementation for JWT-based authentication.
  - [GamendWeb.Auth.Guardian.Plug](GamendWeb.Auth.Guardian.Plug.md)
  - [GamendWeb.Auth.OptionalPipeline](GamendWeb.Auth.OptionalPipeline.md): Guardian pipeline for optional API JWT authentication.
  - [GamendWeb.Auth.Pipeline](GamendWeb.Auth.Pipeline.md): Guardian pipeline for API JWT authentication.
  - [GamendWeb.AuthController](GamendWeb.AuthController.md)
  - [GamendWeb.AuthSuccessLive](GamendWeb.AuthSuccessLive.md)
  - [GamendWeb.OnMount.Locale](GamendWeb.OnMount.Locale.md): LiveView on_mount hook that sets the Gettext locale from the session.
  - [GamendWeb.OnMount.Theme](GamendWeb.OnMount.Theme.md): on_mount helper for LiveView that ensures `:theme` is assigned on the
socket. LiveViews can rely on `@theme` being present whether rendering
via an HTTP request or a websocket socket lifecycle.
  - [GamendWeb.OnMount.TrackConnection](GamendWeb.OnMount.TrackConnection.md): LiveView on_mount hook that registers the LiveView process with
`GamendWeb.ConnectionTracker` when the socket is connected.
  - [GamendWeb.Plugs.AcmeChallenge](GamendWeb.Plugs.AcmeChallenge.md): Plug to serve ACME HTTP-01 challenge files for Let's Encrypt certificate validation.
  - [GamendWeb.Plugs.CanonicalHost](GamendWeb.Plugs.CanonicalHost.md): Redirects every other hostname to the one canonical host.
  - [GamendWeb.Plugs.CaptchaCsp](GamendWeb.Plugs.CaptchaCsp.md): Widens the browser Content-Security-Policy for the captcha widget, and only
while the captcha is enabled.
  - [GamendWeb.Plugs.ClientSession](GamendWeb.Plugs.ClientSession.md): Stamps the caller's client session id into `Logger` metadata for the rest of
the request.
  - [GamendWeb.Plugs.ColorMode](GamendWeb.Plugs.ColorMode.md): Reads the `phx_theme` cookie (set by the client-side theme switcher) and
assigns `:color_mode` so that the root layout can render the `data-theme`
attribute server-side, preventing a Flash of Unstyled Content (FOUC) when
the user has selected dark mode.
  - [GamendWeb.Plugs.DynamicCors](GamendWeb.Plugs.DynamicCors.md): Runtime CORS plug that delegates to Corsica using values read from
application environment at startup. This allows `PHX_ALLOWED_ORIGINS`
to be configured at runtime (via `config/runtime.exs`).
  - [GamendWeb.Plugs.FeatureGate](GamendWeb.Plugs.FeatureGate.md): Plug that gates routes behind a `GamendWeb.Features` flag.
  - [GamendWeb.Plugs.ForceSSL](GamendWeb.Plugs.ForceSSL.md): Redirects plain HTTP to HTTPS when `GamendWeb.Tls`'s `:force` is on.
  - [GamendWeb.Plugs.GameHeaders](GamendWeb.Plugs.GameHeaders.md): Adds Cross-Origin headers required by Godot 4 web exports.
  - [GamendWeb.Plugs.GeoCountry](GamendWeb.Plugs.GeoCountry.md): Resolves the client's country and stores it on `conn.assigns[:country]`.
  - [GamendWeb.Plugs.IndexNowKey](GamendWeb.Plugs.IndexNowKey.md): Serves the IndexNow key file that proves we own this host.
  - [GamendWeb.Plugs.IpBan](GamendWeb.Plugs.IpBan.md): Plug that blocks requests from banned IP addresses.
  - [GamendWeb.Plugs.LoadTheme](GamendWeb.Plugs.LoadTheme.md): Plug that assigns the resolved theme map into `conn.assigns.theme` so
templates and LiveViews can render provider-driven copy alongside the
host-owned branding assets.

  - [GamendWeb.Plugs.LocalePath](GamendWeb.Plugs.LocalePath.md): Handles the optional locale prefix in the URL path (e.g. `/es/about`).
  - [GamendWeb.Plugs.MetricsAuth](GamendWeb.Plugs.MetricsAuth.md): Authentication for the `/metrics` endpoint.
  - [GamendWeb.Plugs.PageMeta](GamendWeb.Plugs.PageMeta.md): Assigns per-page SEO metadata so the root layout can render a `<meta
name="description">` that is unique to the page.
  - [GamendWeb.Plugs.RateLimiter](GamendWeb.Plugs.RateLimiter.md): Plug that rate-limits incoming HTTP requests per client IP.
  - [GamendWeb.Plugs.RealIp](GamendWeb.Plugs.RealIp.md): Extracts the real client IP from proxy headers and sets `conn.remote_ip`.
  - [GamendWeb.Plugs.RequestTimer](GamendWeb.Plugs.RequestTimer.md): A plug that logs the total request duration at the end of the request.
This runs before the Router and captures the entire pipeline duration.
  - [GamendWeb.Plugs.RequireAdminApi](GamendWeb.Plugs.RequireAdminApi.md): Ensures the current API request is performed by an admin user.
  - [GamendWeb.Plugs.SecurityHeaders](GamendWeb.Plugs.SecurityHeaders.md): Sets baseline security headers on every response.
  - [GamendWeb.Plugs.WellKnown](GamendWeb.Plugs.WellKnown.md): Serves `.well-known` files with strict headers from the configured static app.

- REST API
  - [GamendWeb.Api.V1.Admin.AnalyticsController](GamendWeb.Api.V1.Admin.AnalyticsController.md)
  - [GamendWeb.Api.V1.Admin.ChatController](GamendWeb.Api.V1.Admin.ChatController.md)
  - [GamendWeb.Api.V1.Admin.ChatModerationController](GamendWeb.Api.V1.Admin.ChatModerationController.md): Admin API for chat moderation: the report queue, mutes and the word filter.
  - [GamendWeb.Api.V1.Admin.EconomyController](GamendWeb.Api.V1.Admin.EconomyController.md): Admin control over wallets: grant/spend against any user's balance and browse
wallets and the ledger.

  - [GamendWeb.Api.V1.Admin.GroupController](GamendWeb.Api.V1.Admin.GroupController.md)
  - [GamendWeb.Api.V1.Admin.KvController](GamendWeb.Api.V1.Admin.KvController.md)
  - [GamendWeb.Api.V1.Admin.KvEntryController](GamendWeb.Api.V1.Admin.KvEntryController.md)
  - [GamendWeb.Api.V1.Admin.LeaderboardController](GamendWeb.Api.V1.Admin.LeaderboardController.md)
  - [GamendWeb.Api.V1.Admin.LeaderboardRecordController](GamendWeb.Api.V1.Admin.LeaderboardRecordController.md)
  - [GamendWeb.Api.V1.Admin.LobbyController](GamendWeb.Api.V1.Admin.LobbyController.md)
  - [GamendWeb.Api.V1.Admin.MatchmakingController](GamendWeb.Api.V1.Admin.MatchmakingController.md)
  - [GamendWeb.Api.V1.Admin.NotificationController](GamendWeb.Api.V1.Admin.NotificationController.md)
  - [GamendWeb.Api.V1.Admin.PushController](GamendWeb.Api.V1.Admin.PushController.md): Admin API parity for the admin Push page: list registered device tokens,
delete one, and send a push to a user.

  - [GamendWeb.Api.V1.Admin.QuestController](GamendWeb.Api.V1.Admin.QuestController.md)
  - [GamendWeb.Api.V1.Admin.ReadyCheckController](GamendWeb.Api.V1.Admin.ReadyCheckController.md)
  - [GamendWeb.Api.V1.Admin.RetentionController](GamendWeb.Api.V1.Admin.RetentionController.md)
  - [GamendWeb.Api.V1.Admin.SessionController](GamendWeb.Api.V1.Admin.SessionController.md)
  - [GamendWeb.Api.V1.Admin.StorageController](GamendWeb.Api.V1.Admin.StorageController.md)
  - [GamendWeb.Api.V1.Admin.TournamentController](GamendWeb.Api.V1.Admin.TournamentController.md)
  - [GamendWeb.Api.V1.Admin.UserController](GamendWeb.Api.V1.Admin.UserController.md)
  - [GamendWeb.Api.V1.ChatController](GamendWeb.Api.V1.ChatController.md)
  - [GamendWeb.Api.V1.ChatMuteController](GamendWeb.Api.V1.ChatMuteController.md): Scoped chat mutes, applied by a room's own authority.
  - [GamendWeb.Api.V1.ClientLogController](GamendWeb.Api.V1.ClientLogController.md): Ingest for logs from the game client, and the policy that tells a client what
to send.
  - [GamendWeb.Api.V1.EconomyController](GamendWeb.Api.V1.EconomyController.md): Read-only wallet access for the current user. Balance mutations are
server-authoritative (hooks / admin), never a raw client endpoint.

  - [GamendWeb.Api.V1.FriendController](GamendWeb.Api.V1.FriendController.md)
  - [GamendWeb.Api.V1.GroupController](GamendWeb.Api.V1.GroupController.md)
  - [GamendWeb.Api.V1.HealthController](GamendWeb.Api.V1.HealthController.md): Health check endpoint for the API.

  - [GamendWeb.Api.V1.HookController](GamendWeb.Api.V1.HookController.md)
  - [GamendWeb.Api.V1.KvController](GamendWeb.Api.V1.KvController.md)
  - [GamendWeb.Api.V1.LeaderboardController](GamendWeb.Api.V1.LeaderboardController.md)
  - [GamendWeb.Api.V1.LobbyController](GamendWeb.Api.V1.LobbyController.md)
  - [GamendWeb.Api.V1.MatchmakingController](GamendWeb.Api.V1.MatchmakingController.md)
  - [GamendWeb.Api.V1.MeController](GamendWeb.Api.V1.MeController.md)
  - [GamendWeb.Api.V1.NotFoundController](GamendWeb.Api.V1.NotFoundController.md): Terminates unmatched `/api/v1/*` requests with a JSON 404.
  - [GamendWeb.Api.V1.NotificationController](GamendWeb.Api.V1.NotificationController.md)
  - [GamendWeb.Api.V1.PartyController](GamendWeb.Api.V1.PartyController.md)
  - [GamendWeb.Api.V1.PaymentController](GamendWeb.Api.V1.PaymentController.md)
  - [GamendWeb.Api.V1.PaymentWebhookController](GamendWeb.Api.V1.PaymentWebhookController.md)
  - [GamendWeb.Api.V1.ProviderController](GamendWeb.Api.V1.ProviderController.md)
  - [GamendWeb.Api.V1.PushTokenController](GamendWeb.Api.V1.PushTokenController.md): Device push-token registration for the current user. Sending pushes is
server-authoritative (hooks / admin) and has no public endpoint.

  - [GamendWeb.Api.V1.QuestController](GamendWeb.Api.V1.QuestController.md)
  - [GamendWeb.Api.V1.ReadyCheckController](GamendWeb.Api.V1.ReadyCheckController.md): The one client-facing surface for ready checks.
  - [GamendWeb.Api.V1.SessionController](GamendWeb.Api.V1.SessionController.md)
  - [GamendWeb.Api.V1.SignalingController](GamendWeb.Api.V1.SignalingController.md): Read-only view of WebRTC signaling.
  - [GamendWeb.Api.V1.StatsController](GamendWeb.Api.V1.StatsController.md): `GET /api/v1/stats` — every public counter in one response, from
`Gamend.Analytics.snapshot/0`. The per-resource `/<resource>/stats`
endpoints keep working and read the same cached composition; this one saves
a client six requests. Gated by `:public_stats` like the others.

  - [GamendWeb.Api.V1.StorageController](GamendWeb.Api.V1.StorageController.md): Receives local uploads and serves stored objects.
  - [GamendWeb.Api.V1.TimeController](GamendWeb.Api.V1.TimeController.md): The server's clock, so a client can render in server-time space instead of
guessing from HTTP `Date` headers, which have one-second resolution.
  - [GamendWeb.Api.V1.TournamentController](GamendWeb.Api.V1.TournamentController.md)
  - [GamendWeb.Api.V1.UserController](GamendWeb.Api.V1.UserController.md)
  - [GamendWeb.ApiSpec](GamendWeb.ApiSpec.md): OpenAPI specification for the Gamend API.

  - [GamendWeb.ErrorHTML](GamendWeb.ErrorHTML.md): Error pages for HTML requests.
  - [GamendWeb.ErrorJSON](GamendWeb.ErrorJSON.md): This module is invoked by your endpoint in case of errors on JSON requests.
  - [GamendWeb.IconController](GamendWeb.IconController.md): Serves the typed icon set as SVG, so an entity's `icon_url` can point at an
icon we already ship instead of an image someone has to host.
  - [GamendWeb.PageController](GamendWeb.PageController.md)
  - [GamendWeb.PageHTML](GamendWeb.PageHTML.md): This module contains pages rendered by PageController.
  - [GamendWeb.PaymentDownloadController](GamendWeb.PaymentDownloadController.md)
  - [GamendWeb.Schemas.ClientLogBatch](GamendWeb.Schemas.ClientLogBatch.md): A batch upload: the run, and the lines collected since the last flush.

  - [GamendWeb.Schemas.ClientLogEntry](GamendWeb.Schemas.ClientLogEntry.md): One line from a game client.
  - [GamendWeb.Schemas.ClientLogPolicy](GamendWeb.Schemas.ClientLogPolicy.md): What the server wants collected. The client gates its own uploads on this, so
verbosity is a server-side decision that needs no new build to change.

  - [GamendWeb.Schemas.ClientLogResult](GamendWeb.Schemas.ClientLogResult.md): What the server did with a batch.
  - [GamendWeb.Schemas.ClientLogSession](GamendWeb.Schemas.ClientLogSession.md): The run a batch belongs to. Sent with every batch so the server can create
the session on first contact without a prior handshake — a client that has to
register before it can log cannot report a failure that happens before it
registers.

  - [GamendWeb.Schemas.ErrorResponse](GamendWeb.Schemas.ErrorResponse.md): Error response schema

  - [GamendWeb.Schemas.HealthResponse](GamendWeb.Schemas.HealthResponse.md): Health check response schema

  - [GamendWeb.Schemas.OAuthSessionData](GamendWeb.Schemas.OAuthSessionData.md): Describes the payload stored in `OAuthSession.data` when a session completes or errors.
  - [GamendWeb.Schemas.OAuthSessionStatus](GamendWeb.Schemas.OAuthSessionStatus.md): Schema describing the response for OAuth session status checks

  - [GamendWeb.SwaggerController](GamendWeb.SwaggerController.md)
  - [GamendWeb.SwaggerHTML](GamendWeb.SwaggerHTML.md)
  - [GamendWeb.UserSessionController](GamendWeb.UserSessionController.md)

- Channels
  - [GamendWeb.ChannelPush](GamendWeb.ChannelPush.md): Format-aware channel push.
  - [GamendWeb.ChannelUpdates](GamendWeb.ChannelUpdates.md): Outbound state-update pushes for channels: drop no-op updates, and optionally
coalesce bursts into one message.
  - [GamendWeb.GroupChannel](GamendWeb.GroupChannel.md): Channel for per-group realtime events.
  - [GamendWeb.GroupsChannel](GamendWeb.GroupsChannel.md): Channel for broadcasting global group list events.
  - [GamendWeb.LobbiesChannel](GamendWeb.LobbiesChannel.md): Channel for broadcasting global lobby list events.
  - [GamendWeb.LobbyChannel](GamendWeb.LobbyChannel.md): Channel for lobby realtime events.
  - [GamendWeb.PartyChannel](GamendWeb.PartyChannel.md): Channel for party realtime events.
  - [GamendWeb.PresenceIndicator](GamendWeb.PresenceIndicator.md): The online / idle / offline dot, shared by every surface that lists a user.
  - [GamendWeb.SignalingChannel](GamendWeb.SignalingChannel.md): Channel for WebRTC signaling relay.
  - [GamendWeb.UserChannel](GamendWeb.UserChannel.md): Channel for sending per-user realtime updates (e.g. metadata changes).
  - [GamendWeb.UserSocket](GamendWeb.UserSocket.md)
  - [GamendWeb.WebRTCPeer](GamendWeb.WebRTCPeer.md): Manages a server-side WebRTC PeerConnection for a single user.

- Admin
  - [GamendWeb.AdminLive.Analytics](GamendWeb.AdminLive.Analytics.md): Admin view over player activity and retention: DAU / WAU / MAU, new users,
D1 / D7 / D30 cohort retention and payer conversion, plus a per-day table
for the last 30 (or 90) UTC days. Read-only; the numbers come from
`Gamend.Analytics`.

  - [GamendWeb.AdminLive.Blacklist](GamendWeb.AdminLive.Blacklist.md): Admin view over player blacklists: every block in the system, filterable by
the user on either side of it, with force-unblock.

  - [GamendWeb.AdminLive.Chat](GamendWeb.AdminLive.Chat.md)
  - [GamendWeb.AdminLive.ChatFilter](GamendWeb.AdminLive.ChatFilter.md): Admin view over the chat word blocklist: CRUD on the filter words, import and
removal of the bundled per-language lists, and a test box that runs a phrase
through the same matcher `Gamend.Chat.send_message/2` uses.

  - [GamendWeb.AdminLive.ChatMutes](GamendWeb.AdminLive.ChatMutes.md): Admin view over chat mutes: every mute in the system, filterable by scope and
by whether it is still in force, with add and unmute.

  - [GamendWeb.AdminLive.ChatReports](GamendWeb.AdminLive.ChatReports.md): The chat report queue: what players — and the word filter — reported, newest
first. A moderator claims a report for review, then dismisses it, warns the
player, deletes the message or mutes the player; every action resolves the
report and can notify both the player and the reporter.

  - [GamendWeb.AdminLive.Config](GamendWeb.AdminLive.Config.md)
  - [GamendWeb.AdminLive.Connections](GamendWeb.AdminLive.Connections.md)
  - [GamendWeb.AdminLive.Economy](GamendWeb.AdminLive.Economy.md): Admin view over the virtual economy: grant/spend against any wallet, and
browse wallets and the ledger.

  - [GamendWeb.AdminLive.Friends](GamendWeb.AdminLive.Friends.md): Admin view over friendships: every non-block row in the system — pending,
accepted and rejected — filterable by the user on either side and by status,
with force-remove (unfriend an accepted pair or cancel a request).

  - [GamendWeb.AdminLive.Geo](GamendWeb.AdminLive.Geo.md)
  - [GamendWeb.AdminLive.Groups](GamendWeb.AdminLive.Groups.md)
  - [GamendWeb.AdminLive.Index](GamendWeb.AdminLive.Index.md)
  - [GamendWeb.AdminLive.KV](GamendWeb.AdminLive.KV.md)
  - [GamendWeb.AdminLive.Leaderboards](GamendWeb.AdminLive.Leaderboards.md)
  - [GamendWeb.AdminLive.Lobbies](GamendWeb.AdminLive.Lobbies.md)
  - [GamendWeb.AdminLive.LobbySnapshots](GamendWeb.AdminLive.LobbySnapshots.md): Browse the durable per-run record of lobby state.
  - [GamendWeb.AdminLive.Logs](GamendWeb.AdminLive.Logs.md): Logs, from both sides of the wire.
  - [GamendWeb.AdminLive.Matchmaking](GamendWeb.AdminLive.Matchmaking.md): Admin view over the matchmaking queue: live stats, per-queue depths, and a
paginated, filterable ticket list with force-cancel.

  - [GamendWeb.AdminLive.Notifications](GamendWeb.AdminLive.Notifications.md)
  - [GamendWeb.AdminLive.Parties](GamendWeb.AdminLive.Parties.md)
  - [GamendWeb.AdminLive.Payments](GamendWeb.AdminLive.Payments.md)
  - [GamendWeb.AdminLive.Push](GamendWeb.AdminLive.Push.md)
  - [GamendWeb.AdminLive.Quests](GamendWeb.AdminLive.Quests.md)
  - [GamendWeb.AdminLive.RateLimiting](GamendWeb.AdminLive.RateLimiting.md)
  - [GamendWeb.AdminLive.Retention](GamendWeb.AdminLive.Retention.md): Admin view over data retention: the configured per-class windows, what the
last sweep pruned, and a manual "run now".

  - [GamendWeb.AdminLive.Runtime](GamendWeb.AdminLive.Runtime.md): Read-only introspection of the running server: hooks, env vars, protobuf
messages, channels and realtime events, the data model (with an ER diagram),
plugins and their RPCs, scheduled jobs, advisory lock namespaces, and
migration status.
  - [GamendWeb.AdminLive.Sessions](GamendWeb.AdminLive.Sessions.md)
  - [GamendWeb.AdminLive.Settings](GamendWeb.AdminLive.Settings.md): Every declared setting, grouped, with its effective value and where that
value came from.
  - [GamendWeb.AdminLive.Storage](GamendWeb.AdminLive.Storage.md): Admin view over object storage: usage summary, a paginated object list with
preview and delete, and a direct upload. Backend-agnostic — works the same
whether storage is local disk or S3/R2.

  - [GamendWeb.AdminLive.System](GamendWeb.AdminLive.System.md)
  - [GamendWeb.AdminLive.Tournaments](GamendWeb.AdminLive.Tournaments.md)
  - [GamendWeb.AdminLive.Translations](GamendWeb.AdminLive.Translations.md)
  - [GamendWeb.AdminLive.Users](GamendWeb.AdminLive.Users.md)
  - [GamendWeb.AdminLive.Users.Index](GamendWeb.AdminLive.Users.Index.md): Admin LiveView for listing and managing users.

- Player pages
  - [GamendWeb.ChangelogLive](GamendWeb.ChangelogLive.md): `/changelog`, rendered from the registered `:changelog` markdown file.
  - [GamendWeb.ChatLive](GamendWeb.ChatLive.md)
  - [GamendWeb.DocsLive](GamendWeb.DocsLive.md): The shared renderer for a markdown guide collection: an index and a page.
  - [GamendWeb.GroupsLive](GamendWeb.GroupsLive.md)
  - [GamendWeb.LeaderboardsLive](GamendWeb.LeaderboardsLive.md): Public-facing leaderboards view.
  - [GamendWeb.LiveHelpers](GamendWeb.LiveHelpers.md): Shared helpers for LiveViews.

  - [GamendWeb.LobbyLive.Index](GamendWeb.LobbyLive.Index.md)
  - [GamendWeb.NotificationsLive](GamendWeb.NotificationsLive.md)
  - [GamendWeb.PlayLive](GamendWeb.PlayLive.md): LiveView wrapper that embeds the Godot web export (`/game/index.html`)
inside the app layout so the navbar is visible.
  - [GamendWeb.PresentationPage](GamendWeb.PresentationPage.md): Shared hero-and-sections page renderer for host presentation pages.

  - [GamendWeb.QuestsLive](GamendWeb.QuestsLive.md): Public-facing quests page.
  - [GamendWeb.RoadmapLive](GamendWeb.RoadmapLive.md): `/roadmap`, rendered from the registered `:roadmap` markdown file.
  - [GamendWeb.StatsLive](GamendWeb.StatsLive.md): Public server activity page — the browser view of the `/<resource>/stats`
endpoints.
  - [GamendWeb.StoreLive.Index](GamendWeb.StoreLive.Index.md)
  - [GamendWeb.TournamentsLive](GamendWeb.TournamentsLive.md): Public-facing tournaments view, laid out like the leaderboards page.
  - [GamendWeb.UserLive.Confirmation](GamendWeb.UserLive.Confirmation.md)
  - [GamendWeb.UserLive.Login](GamendWeb.UserLive.Login.md)
  - [GamendWeb.UserLive.Registration](GamendWeb.UserLive.Registration.md)
  - [GamendWeb.UserLive.Settings](GamendWeb.UserLive.Settings.md): User settings page: a thin coordinator that renders the tab navigation and
routes events to the per-tab modules under
`GamendWeb.UserLive.Settings.*` (account, friends, groups, payments,
data). Each tab module owns its template, events, and helpers.

  - [GamendWeb.UserLive.Settings.AccountTab](GamendWeb.UserLive.Settings.AccountTab.md): Account tab of the user settings page: template, events, and helpers for
email/password/display-name management, provider linking, and account
deletion.

  - [GamendWeb.UserLive.Settings.DataTab](GamendWeb.UserLive.Settings.DataTab.md): Data tab of the user settings page: the user's key-value entries with
pagination and key filtering.

  - [GamendWeb.UserLive.Settings.DevicesTab](GamendWeb.UserLive.Settings.DevicesTab.md): Devices tab of the user settings page: the devices registered for push
notifications, with removal. View + remove only — a token row has nothing
meaningfully editable (token/platform/provider are facts about the device).

  - [GamendWeb.UserLive.Settings.FriendsTab](GamendWeb.UserLive.Settings.FriendsTab.md): Friends tab of the user settings page: friend requests, blocking, user
search, and the paginated friends/blocked lists.

  - [GamendWeb.UserLive.Settings.GroupsTab](GamendWeb.UserLive.Settings.GroupsTab.md): Groups tab of the user settings page: my groups, browsing/joining,
invitations, join requests, and per-group management (members, roles,
editing, notifications).

  - [GamendWeb.UserLive.Settings.ItemsTab](GamendWeb.UserLive.Settings.ItemsTab.md): Items tab of the user settings page: the user's inventory item stacks with
quantities and per-stack metadata, paginated. Read-only — inventory is
server-authoritative (see `Gamend.Inventory`).

  - [GamendWeb.UserLive.Settings.PaymentsTab](GamendWeb.UserLive.Settings.PaymentsTab.md): Payments tab of the user settings page: purchase history, entitlements,
downloads, and Stripe subscription management.

  - [GamendWeb.UserLive.Settings.WalletTab](GamendWeb.UserLive.Settings.WalletTab.md): Wallet tab of the user settings page: the user's virtual-currency balances
and a paginated ledger of every credit/debit. Read-only — balances are
server-authoritative (see `Gamend.Economy`).

- Helpers
  - [GamendWeb.Components.DynamicIcon](GamendWeb.Components.DynamicIcon.md): A tiny runtime SVG loader for hero-style icons stored under
`priv/static/heroicons/`.
  - [GamendWeb.EventCodec](GamendWeb.EventCodec.md): Encodes realtime channel event payloads as protobuf for sockets connected
with `?format=protobuf` (see `proto/gamend_realtime.proto`, the wire
contract shared with all clients).
  - [GamendWeb.Gettext](GamendWeb.Gettext.md): A module providing Internationalization with a gettext-based API.
  - [GamendWeb.Gettext.Stats](GamendWeb.Gettext.Stats.md): Provides translation completeness statistics for a given locale.
  - [GamendWeb.Helpers.ParamParser](GamendWeb.Helpers.ParamParser.md): Shared helpers for safely parsing controller parameters.
  - [GamendWeb.Pagination](GamendWeb.Pagination.md): The one way list endpoints page: parse the window, build the meta.
  - [GamendWeb.SRI](GamendWeb.SRI.md): Computes Subresource Integrity (SRI) hashes for static assets.
  - [GamendWeb.Serializers](GamendWeb.Serializers.md): Shared JSON payload serializers used by API controllers and channels.

- Runtime
  - [GamendWeb.AdminLogBuffer](GamendWeb.AdminLogBuffer.md): In-memory ring buffer of recent log entries for the admin dashboard.
  - [GamendWeb.ConnectionTracker](GamendWeb.ConnectionTracker.md): Tracks active WebSocket channel and WebRTC peer connections using a `Registry`
with `:duplicate` keys.
  - [GamendWeb.FileLogHandler](GamendWeb.FileLogHandler.md): Persists all logs to a rotating file so history survives restarts — the
admin log buffer (`GamendWeb.AdminLogBuffer`) is in-memory only and is
lost on redeploy/restart.
  - [GamendWeb.GeoCountryCleaner](GamendWeb.GeoCountryCleaner.md): Periodic cleaner for old geo traffic minute buckets.
  - [GamendWeb.HostContentStatic](GamendWeb.HostContentStatic.md): Serves host-owned content images directly from the endpoint plug pipeline.

  - [GamendWeb.HostLayouts](GamendWeb.HostLayouts.md): Host-owned layout entrypoints and shared layout helpers.

  - [GamendWeb.HostSupervision](GamendWeb.HostSupervision.md): The canonical supervision tree for a Gamend host application.
  - [GamendWeb.IpBanSync](GamendWeb.IpBanSync.md): Keeps the node-local IP-ban ETS table in sync with the database and the
other app instances.
  - [GamendWeb.PromEx](GamendWeb.PromEx.md): Prometheus metrics exporter using PromEx.
  - [GamendWeb.PromEx.CachePlugin](GamendWeb.PromEx.CachePlugin.md): Custom PromEx plugin exporting cache-effectiveness and overload metrics.
  - [GamendWeb.PromEx.GeoPlugin](GamendWeb.PromEx.GeoPlugin.md): Custom PromEx plugin that exports geo-traffic Prometheus metrics.
  - [GamendWeb.RateLimit](GamendWeb.RateLimit.md): Rate limiter facade used by `GamendWeb.Plugs.RateLimiter`, LiveView
helpers, and channels.
  - [GamendWeb.RateLimit.ETS](GamendWeb.RateLimit.ETS.md): Node-local rate limiter backend powered by Hammer's ETS backend.
  - [GamendWeb.RateLimit.Redis](GamendWeb.RateLimit.Redis.md): Redis-backed rate limiter backend powered by Hammer + Redix.
  - [GamendWeb.RealtimeEvents](GamendWeb.RealtimeEvents.md): Registry of every server→client channel event.
  - [GamendWeb.RuntimeIntrospection](GamendWeb.RuntimeIntrospection.md): Data providers for the admin Runtime page (`/admin/runtime`).

- Exceptions
  - [GamendWeb.NotFoundError](GamendWeb.NotFoundError.md): Raised to render a 404 from LiveViews/controllers — e.g. when a feature
flag (`LIST_*_ENABLED`) disables a public listing page and it should look
like the page does not exist.

## Mix Tasks

- [mix gamend.sitemap.lastmod](Mix.Tasks.Gamend.Sitemap.Lastmod.md): Rehashes every page the host's `GamendWeb.Sitemap.Source` reports and moves
the `<lastmod>` date only for those whose content actually changed.
- [mix gettext.export_csv](Mix.Tasks.Gettext.ExportCsv.md): Exports every translation for a locale to one CSV, for review in a
spreadsheet.
- [mix gettext.import_csv](Mix.Tasks.Gettext.ImportCsv.md): Imports reviewed translations from a CSV back into the PO files.

