prop/lib/microwaveprop_web/live/api_docs_live.ex
Graham McIntire c56b55d5af
feat: serve API docs at /docs/api
- /docs/api → LiveView rendering README.md as HTML
- /docs/api/openapi.yaml → raw OpenAPI 3.1 spec
- /docs/api/README.md → raw markdown source
2026-05-09 09:09:45 -05:00

23 lines
641 B
Elixir

defmodule MicrowavepropWeb.ApiDocsLive do
@moduledoc "Renders `docs/api/README.md` as HTML at `/docs/api`."
use MicrowavepropWeb, :live_view
@external_resource "docs/api/README.md"
@docs_html "docs/api/README.md" |> File.read!() |> Microwaveprop.Markdown.to_html!()
@impl true
def mount(_params, _session, socket) do
{:ok, assign(socket, page_title: "API Documentation", content: @docs_html)}
end
@impl true
def render(assigns) do
~H"""
<Layouts.app flash={@flash} current_scope={@current_scope}>
<div class="markdown-content">
{raw(@content)}
</div>
</Layouts.app>
"""
end
end