# PhoenixKitOG v0.4.0 - Table of Contents > OpenGraph template + hierarchical assignment module for PhoenixKit ## Pages - [Changelog](changelog.md) ## Modules - [PhoenixKitOG](PhoenixKitOG.md): OpenGraph template + hierarchical assignment plugin for PhoenixKit. - [PhoenixKitOG.ActivityLog](PhoenixKitOG.ActivityLog.md): Thin wrapper around `PhoenixKit.Activity.log/3` for the OG plugin. - [PhoenixKitOG.Assignments](PhoenixKitOG.Assignments.md): Context for binding templates to scopes inside a consumer module's hierarchy. - [PhoenixKitOG.Errors](PhoenixKitOG.Errors.md): Central mapping from error atoms (returned by `PhoenixKitOG.Templates`, `PhoenixKitOG.Assignments`, and the render pipeline) to translated, user-facing strings. - [PhoenixKitOG.Gettext](PhoenixKitOG.Gettext.md): Gettext backend for OpenGraph-module-specific UI strings. - [PhoenixKitOG.Migrations](PhoenixKitOG.Migrations.md): Module-owned versioned migrations for `phoenix_kit_og` — the decentralized-migrations protocol that core's `mix phoenix_kit.update` discovers via `migration_module/0`. This follows the canonical shape documented in `phoenix_kit_hello_world`'s README ("Versioned migrations", "Adopting a table core already creates") and its `mix phoenix_kit_hello_world.audit_migrations` task: **two readers** (`migrated_version/1` for migration context, `migrated_version_runtime/1` for Mix-task context), `up/1` re-reading the version before it changes anything, and a namespaced `COMMENT ON TABLE` marker on one anchor table. `PhoenixKitPublishing.Migrations` is this chain's closest sibling in spirit — same adoption situation, same semantic-guard requirement — scaled down here to 2 tables, 1 FK, 1 named UNIQUE constraint and 3 indexes (all on the same table), and extended with a new invalid-index self-heal no sibling chain in this workspace has needed yet. - [PhoenixKitOG.Paths](PhoenixKitOG.Paths.md): Centralized path helpers — every link routes through `PhoenixKit.Utils.Routes.path/1` so the configured admin prefix and locale handling are honored. - [PhoenixKitOG.Render](PhoenixKitOG.Render.md): Top-level rendering facade. Given a template + binding values, produces a PNG (cached) and returns its public URL. - [PhoenixKitOG.Render.Cache](PhoenixKitOG.Render.Cache.md): On-disk cache for rendered OG PNGs. - [PhoenixKitOG.Render.Media](PhoenixKitOG.Render.Media.md): Media resolution + render-mode pre-processing between the stored scene and `OpenFresco.render/3`. - [PhoenixKitOG.Routes](PhoenixKitOG.Routes.md): Route registration for routes that can't be inlined on a `Tab` — notably the per-template editor at `/admin/open-graph/:uuid/edit`. - [PhoenixKitOG.SceneEdit](PhoenixKitOG.SceneEdit.md): Editor-side scene mutations the property panel drives — the counterpart to `OpenFresco.Editor.Ops` (which owns pointer gestures: move/resize/hit-test/front/delete). Everything here takes untrusted form input, so every field goes through a whitelist + coercion; an unknown field or junk value returns the scene unchanged. - [PhoenixKitOG.SceneStore](PhoenixKitOG.SceneStore.md): Loads/saves `OpenFresco.Scene` documents from the template's `canvas` JSONB column, with lazy migration from the legacy canvas format. - [PhoenixKitOG.Schemas.Assignment](PhoenixKitOG.Schemas.Assignment.md): Binds a template to a scope inside a consumer module's hierarchy. - [PhoenixKitOG.Schemas.Template](PhoenixKitOG.Schemas.Template.md): A reusable OpenGraph design — canvas + ordered elements with variable bindings. Persisted as JSONB so the structure can evolve (new element types) without a schema change. - [PhoenixKitOG.Templates](PhoenixKitOG.Templates.md): Context for managing OpenGraph templates. CRUD only — the editor and renderer live elsewhere. - [PhoenixKitOG.Variables](PhoenixKitOG.Variables.md): Registry + resolver for module-exposed variables that templates can bind their slots to. - [PhoenixKitOG.Web.AssignmentsLive](PhoenixKitOG.Web.AssignmentsLive.md): Assignments admin — the overview of every template binding + a single modal for creating **or** editing an assignment. - [PhoenixKitOG.Web.EditorLive](PhoenixKitOG.Web.EditorLive.md): The OG template editor — OpenFresco's server-authoritative editor stage on the left, this module's chrome around it: toolbar + insert menu, slots panel, property panel, and the always-on preview pane. - [PhoenixKitOG.Web.EditorLive.Template](PhoenixKitOG.Web.EditorLive.Template.md): HEEx render template for the OG editor. Split out from the LV module so the event-handler code stays scannable. - [PhoenixKitOG.Web.ImageController](PhoenixKitOG.Web.ImageController.md): Serves rendered OG PNGs from the on-disk cache. - [PhoenixKitOG.Web.StagePlaceholder](PhoenixKitOG.Web.StagePlaceholder.md): The arrows stand-in image for the editor stage's sample-values mode — a light-gray square with four arrows radiating to the corners and a "Placeholder image" caption, shipped as a `data:image/svg+xml` URL. - [PhoenixKitOG.Web.TemplatesLive](PhoenixKitOG.Web.TemplatesLive.md): Admin landing page for the OG module — lists templates and the create/delete actions. The visual editor is Phase 2; this page only carries minimal CRUD scaffolding so the module is interactive end-to-end.