# Mishka CMS Builder v0.0.1-alpha.2 - Table of Contents > The visual page builder for Mishka CMS: a drag-and-drop editor for pages, layouts and components, built on Phoenix LiveView. ## Pages - [README](readme.md) - [License](license.md) ## Modules - [MishkaCmsBuilder](MishkaCmsBuilder.md): The visual editor's Ash domain: the records only the editor writes and reads — its snippets, its change history and the snapshots that history restores from, its review notes — and the two resources with no data layer that back its Studio tables and its SEO form. - [MishkaCmsBuilder.Activity.EditorHistory](MishkaCmsBuilder.Activity.EditorHistory.md): Activity source for the visual editor's own record — every change somebody made to a page, layout, component or error page in the page builder, tagged `badge_label: "EDITOR"`. - [MishkaCmsBuilder.AiBackend](MishkaCmsBuilder.AiBackend.md): The seam the Assistant rail talks to, and an honest default that does not pretend to be an AI. - [MishkaCmsBuilder.AiBackend.Echo](MishkaCmsBuilder.AiBackend.Echo.md): The default assistant: it restates the request, names the scope it would act on, and says plainly that no model is configured. - [MishkaCmsBuilder.Application](MishkaCmsBuilder.Application.md): The builder's OTP application. It supervises the processes the visual editor keeps (the open sessions, their history, the rendered palette-card previews and the presence of the people in a session) and every mishka_installer plugin the package ships (`plugins/0`): the sidebar page, the editor's address, the snippet installer, the activity source, the settings and the history release of a deleted draft. A plugin registers on the event it listens on once it is supervised here. - [MishkaCmsBuilder.Blocks](MishkaCmsBuilder.Blocks.md): Whole sections an author drops in one click — a hero, a feature row, a pricing table. - [MishkaCmsBuilder.BuilderAccess](MishkaCmsBuilder.BuilderAccess.md): A policy check: the actor may open the builder the row's own section names — its runtime area or `admin:dashboard:code` (`MishkaCmsCore.Runtime.Authoring.Section.permissions/1`). - [MishkaCmsBuilder.CardPreview](MishkaCmsBuilder.CardPreview.md): What a palette card looks like before you drop it — the small document shown when the pointer rests on a card. - [MishkaCmsBuilder.Classes](MishkaCmsBuilder.Classes.md): Named styles a site can reuse — style once, apply to twenty elements, change it in one place. - [MishkaCmsBuilder.CodeFlags](MishkaCmsBuilder.CodeFlags.md): One short warning for a snippet that calls something worth reading twice. - [MishkaCmsBuilder.Collection](MishkaCmsBuilder.Collection.md): The list or map an attribute is holding, read out of a document and written back into one. - [MishkaCmsBuilder.Comment](MishkaCmsBuilder.Comment.md): The shape and the wording of a review note — what the storage layer is built around. - [MishkaCmsBuilder.Conditions](MishkaCmsBuilder.Conditions.md): When an element is on the page at all, without anyone writing Elixir. - [MishkaCmsBuilder.ControlNames](MishkaCmsBuilder.ControlNames.md): One form-control name per independent drop, renumbered the way `MishkaCmsBuilder.Ids` renumbers an id. - [MishkaCmsBuilder.Demo](MishkaCmsBuilder.Demo.md): Sample content for the editor's Assistant thread and its audit list, so those panels can be judged before there is anything real in them. - [MishkaCmsBuilder.DesignToken](MishkaCmsBuilder.DesignToken.md): The Studio's Design tokens tab, as a Gervaz table. - [MishkaCmsBuilder.Dev.HistorySeeds](MishkaCmsBuilder.Dev.HistorySeeds.md): Fills a page's editing history with every state the timeline can draw, so the whole sheet can be looked at without waiting months for the awkward ones to occur naturally. - [MishkaCmsBuilder.EditorSession](MishkaCmsBuilder.EditorSession.md): One open editing session: the working tree plus everything around it — selection, hover, undo history, clipboard, per-node locks, the breakpoint and state being edited. - [MishkaCmsBuilder.EditorSession.Journal](MishkaCmsBuilder.EditorSession.Journal.md): What happened to the document, in the words a person would use, and the stack that lets them go back. - [MishkaCmsBuilder.EditorSession.Keeper](MishkaCmsBuilder.EditorSession.Keeper.md): Writes the edits an editing session holds and no draft does — on every change, on the way out of the editor, and before a reopened session is moved off its draft. - [MishkaCmsBuilder.Examples](MishkaCmsBuilder.Examples.md): The example list behind a component's Examples modal — curated out of the two sets a kit bundle ships, which are not the same thing and were never reconciled. - [MishkaCmsBuilder.Helpers](MishkaCmsBuilder.Helpers.md): Saves a builder section through its resource's own actions. - [MishkaCmsBuilder.Highlight](MishkaCmsBuilder.Highlight.md): Colour for the code the editor shows, driven by tokenizers rather than by regular expressions. - [MishkaCmsBuilder.History](MishkaCmsBuilder.History.md): Turns the editor's settled entries into durable rows, and reads them back. - [MishkaCmsBuilder.HistoryEvent](MishkaCmsBuilder.HistoryEvent.md): One recorded change to a document in the visual editor — the durable half of the editor's history. - [MishkaCmsBuilder.HistorySnapshot](MishkaCmsBuilder.HistorySnapshot.md): The document a history row can restore — gzipped HEEx, in a table of its own. - [MishkaCmsBuilder.Ids](MishkaCmsBuilder.Ids.md): One DOM id per element, and the references inside a snippet follow when one has to change. - [MishkaCmsBuilder.LayoutSlot](MishkaCmsBuilder.LayoutSlot.md): Whether a layout still renders the page it wraps. - [MishkaCmsBuilder.Marketplace](MishkaCmsBuilder.Marketplace.md): Everything the Studio sheet shows — design tokens, presets, the package registry and snippets — behind one behaviour, so the panel is written once and the source can change underneath it. - [MishkaCmsBuilder.Marketplace.Kits](MishkaCmsBuilder.Marketplace.Kits.md): A `MishkaCmsBuilder.Marketplace` adapter over the registry this install actually has: the UI-kit bundles sitting on disk. - [MishkaCmsBuilder.Marketplace.Mock](MishkaCmsBuilder.Marketplace.Mock.md): The default `MishkaCmsBuilder.Marketplace` adapter: the design prototype's exact seed data, in memory. - [MishkaCmsBuilder.Marketplace.Token](MishkaCmsBuilder.Marketplace.Token.md): One design token — the validated shape both the Mock adapter and any real backend must produce. - [MishkaCmsBuilder.Mentions](MishkaCmsBuilder.Mentions.md): Naming somebody in a note: `@who` in the body, and the notification that follows it. - [MishkaCmsBuilder.PageComment](MishkaCmsBuilder.PageComment.md): A note left on a document in the visual editor — on one element, or on the page as a whole. - [MishkaCmsBuilder.PaletteEntry](MishkaCmsBuilder.PaletteEntry.md): A component in the builder's palette — from the database, or contributed by an extension. - [MishkaCmsBuilder.PartPlacement](MishkaCmsBuilder.PartPlacement.md): Puts a kit's part in the component it belongs to, when it arrives where none of those holds it. - [MishkaCmsBuilder.Placement](MishkaCmsBuilder.Placement.md): Where a thing lands — the answer shared by a click, a drag, and a template that arrives on its own. - [MishkaCmsBuilder.Plugins.CardPreviewInvalidator](MishkaCmsBuilder.Plugins.CardPreviewInvalidator.md): Drops cached palette-card previews when the component they drew has been recompiled. - [MishkaCmsBuilder.Plugins.EditorUrl](MishkaCmsBuilder.Plugins.EditorUrl.md): Answers `runtime:document:editor_url` with the visual editor's address for a document. - [MishkaCmsBuilder.Plugins.ProvisionSnippet](MishkaCmsBuilder.Plugins.ProvisionSnippet.md): Saves the snippet an extension ships into the editor's Studio list when a site is set up, on `runtime:provision:snippets` (`MishkaCmsCore.Runtime.ExtensionProvision`, which describes the payload as `t:MishkaCmsCore.Runtime.ExtensionProvision.snippet_payload/0`). - [MishkaCmsBuilder.Plugins.ReleaseDraftHistory](MishkaCmsBuilder.Plugins.ReleaseDraftHistory.md): Detaches a deleted draft's editing history from it, so the rows survive and join the live record's own timeline. - [MishkaCmsBuilder.Plugins.ReleaseDraftHistory.ErrorPageDraftDestroy](MishkaCmsBuilder.Plugins.ReleaseDraftHistory.ErrorPageDraftDestroy.md): Releases the history of an error-page draft a site admin deletes. - [MishkaCmsBuilder.Plugins.ReleaseDraftHistory.ErrorPageDraftMasterDestroy](MishkaCmsBuilder.Plugins.ReleaseDraftHistory.ErrorPageDraftMasterDestroy.md): Releases the history of an error-page draft a master deletes. - [MishkaCmsBuilder.Plugins.ReleaseDraftHistory.LayoutDraftDestroy](MishkaCmsBuilder.Plugins.ReleaseDraftHistory.LayoutDraftDestroy.md): Releases the history of a layout draft a site admin deletes. - [MishkaCmsBuilder.Plugins.ReleaseDraftHistory.LayoutDraftMasterDestroy](MishkaCmsBuilder.Plugins.ReleaseDraftHistory.LayoutDraftMasterDestroy.md): Releases the history of a layout draft a master deletes. - [MishkaCmsBuilder.Plugins.ReleaseDraftHistory.PageDraftDestroy](MishkaCmsBuilder.Plugins.ReleaseDraftHistory.PageDraftDestroy.md): Releases the history of a page draft a site admin deletes. - [MishkaCmsBuilder.Plugins.ReleaseDraftHistory.PageDraftMasterDestroy](MishkaCmsBuilder.Plugins.ReleaseDraftHistory.PageDraftMasterDestroy.md): Releases the history of a page draft a master deletes. - [MishkaCmsBuilder.Plugins.Settings](MishkaCmsBuilder.Plugins.Settings.md): The editor's own settings, registered on `settings:register` (`MishkaCmsCore.Settings`). - [MishkaCmsBuilder.Presence](MishkaCmsBuilder.Presence.md): Who else is in this editing session — real `Phoenix.Presence` on the session's own PubSub topic. - [MishkaCmsBuilder.Presets](MishkaCmsBuilder.Presets.md): What a component should look like the moment it lands on a page — this site's answer, not the kit's. - [MishkaCmsBuilder.Repo](MishkaCmsBuilder.Repo.md) - [MishkaCmsBuilder.Resources.Changes.NotifyMentions](MishkaCmsBuilder.Resources.Changes.NotifyMentions.md): Tells the people a note names that it names them. - [MishkaCmsBuilder.Resources.Validations.AnchorSiteRequired](MishkaCmsBuilder.Resources.Validations.AnchorSiteRequired.md): A page and an error page are never global; a layout and a component can be. - [MishkaCmsBuilder.Resources.Validations.GlobalRowIsMasterOnly](MishkaCmsBuilder.Resources.Validations.GlobalRowIsMasterOnly.md): Stops a tenant changing a row that belongs to no site. - [MishkaCmsBuilder.Resources.Validations.ParentBelongsToDocument](MishkaCmsBuilder.Resources.Validations.ParentBelongsToDocument.md): The two things a reply's parent has to be. - [MishkaCmsBuilder.Resources.Validations.SiteScopedDocument](MishkaCmsBuilder.Resources.Validations.SiteScopedDocument.md): Refuses a global row about a document that cannot itself be global. - [MishkaCmsBuilder.Review](MishkaCmsBuilder.Review.md): What the builder needs from the review thread: the counter, and getting to an element. - [MishkaCmsBuilder.SeoSettings](MishkaCmsBuilder.SeoSettings.md): The SEO a page or a layout stores, as the builder's settings modal edits it: a Gervaz form. - [MishkaCmsBuilder.Sequence](MishkaCmsBuilder.Sequence.md): A number that says which one of these this is, kept in step when another arrives. - [MishkaCmsBuilder.ShownWhen](MishkaCmsBuilder.ShownWhen.md): The properties a component draws only while one of its switches is on. - [MishkaCmsBuilder.Snippet](MishkaCmsBuilder.Snippet.md): A named piece of markup an author saved out of the visual editor to reuse somewhere else. - [MishkaCmsBuilder.Snippets](MishkaCmsBuilder.Snippets.md): The Studio's snippet list, over `MishkaCmsBuilder.Snippet`. - [MishkaCmsBuilder.Starter](MishkaCmsBuilder.Starter.md): What a component should SAY the moment it is placed. - [MishkaCmsBuilder.States.CardPreviewState](MishkaCmsBuilder.States.CardPreviewState.md): O(1) ETS cache of rendered palette-card previews, keyed by the template a card would drop. - [MishkaCmsBuilder.States.EditorHistoryState](MishkaCmsBuilder.States.EditorHistoryState.md): What the undo history holds, kept beside the session rather than inside it. - [MishkaCmsBuilder.States.EditorSessionState](MishkaCmsBuilder.States.EditorSessionState.md): The ETS table behind the page builder's live editing sessions, keyed by session token. - [MishkaCmsBuilder.TablePlacement](MishkaCmsBuilder.TablePlacement.md): Puts a table around a cell, a row or a table section dropped where no table holds it. - [MishkaCmsBuilder.Tokens](MishkaCmsBuilder.Tokens.md): The design tokens a site actually renders from — read out of, and written back into, its own stylesheet rows. - [MishkaCmsBuilder.Tree.Patch](MishkaCmsBuilder.Tree.Patch.md): What you apply to one version of a document to get an earlier one back. - [MishkaCmsBuilder.Tree.Shadow](MishkaCmsBuilder.Tree.Shadow.md): A box shadow as the five things an author is actually choosing, and back again. - [MishkaCmsBuilder.Wizard](MishkaCmsBuilder.Wizard.md): Composing a component from its own option lists, before anything is placed. - [MishkaCmsBuilderWeb.Forms.SnippetSubmit](MishkaCmsBuilderWeb.Forms.SnippetSubmit.md): The submit handler for the Studio's "Save as snippet" box. - [MishkaCmsBuilderWeb.Live.BuilderLive](MishkaCmsBuilderWeb.Live.BuilderLive.md): The page builder's chrome: top bar, the two side panels, the crumb bar, the code drawer and the overlays — everything around the canvas, which is its own LiveView inside an iframe (`MishkaCmsBuilderWeb.Live.CanvasLive`). - [MishkaCmsBuilderWeb.Live.CanvasLive](MishkaCmsBuilderWeb.Live.CanvasLive.md): The page-builder canvas: the document itself, rendered inside a same-origin iframe with the **site's** compiled CSS rather than the admin's. - [MishkaCmsBuilderWeb.Live.Panels](MishkaCmsBuilderWeb.Live.Panels.md): Every region of the page-builder chrome as a function component: the 56px top bar, the two resizable side panels, the crumb bar, the canvas frames, the code drawer, the command palette and the overlay sheets. - [MishkaCmsBuilderWeb.Paths](MishkaCmsBuilderWeb.Paths.md): The visual editor's addresses, spelled in one place. - [MishkaCmsBuilderWeb.Routes](MishkaCmsBuilderWeb.Routes.md): The visual editor's routes, mounted like any extension's: the host lists the editor's web module in `config :mishka_cms_core, :extensions`, and `MishkaCmsCore.ExtensionRouter.extension_routes/1` finds this module beside it. - [MishkaCmsBuilderWeb.SidebarMenu](MishkaCmsBuilderWeb.SidebarMenu.md): The visual editor's admin pages — a `"sidebar:menus"` plugin (`MishkaCmsCore.Sidebar`). - [MishkaCmsBuilderWeb.Templates.AssetsChrome](MishkaCmsBuilderWeb.Templates.AssetsChrome.md): Everything the builder's Assets sheet draws around its files, shared by both of its views. - [MishkaCmsBuilderWeb.Templates.AssetsGrid](MishkaCmsBuilderWeb.Templates.AssetsGrid.md): A MishkaGervaz table template: the file grid in the builder's Assets sheet. - [MishkaCmsBuilderWeb.Templates.AssetsList](MishkaCmsBuilderWeb.Templates.AssetsList.md): A MishkaGervaz table template: the file LIST in the builder's Assets sheet. - [MishkaCmsBuilderWeb.Templates.HistoryTimeline](MishkaCmsBuilderWeb.Templates.HistoryTimeline.md): The visual editor's history, drawn as a MishkaGervaz custom table template: a vertical rail with a bucket-tinted node per change, the assistant's own words where it has them, and a Revert on every row whose document was kept. - [MishkaCmsBuilderWeb.Templates.ReviewCommentForm](MishkaCmsBuilderWeb.Templates.ReviewCommentForm.md): A MishkaGervaz custom form template: the composer at the FOOT of the builder's Review sheet. - [MishkaCmsBuilderWeb.Templates.ReviewComments](MishkaCmsBuilderWeb.Templates.ReviewComments.md): A MishkaGervaz custom table template: the thread in the builder's Review sheet. - [MishkaCmsBuilderWeb.Templates.SeoForm](MishkaCmsBuilderWeb.Templates.SeoForm.md): A MishkaGervaz custom form template, and the events its markup sends: the SEO tab of the builder's settings modal, over `MishkaCmsBuilder.SeoSettings`. - [MishkaCmsBuilderWeb.Templates.SnippetForm](MishkaCmsBuilderWeb.Templates.SnippetForm.md): A MishkaGervaz custom form template: the "Save as snippet" box at the top of the Studio's Snippets tab. - [MishkaCmsBuilderWeb.Templates.StudioSnippets](MishkaCmsBuilderWeb.Templates.StudioSnippets.md): A MishkaGervaz custom table template: the saved-snippet list inside the page builder's Studio. - [MishkaCmsBuilderWeb.Templates.StudioTokens](MishkaCmsBuilderWeb.Templates.StudioTokens.md): A MishkaGervaz custom table template: the Design tokens list inside the page builder's Studio. - [MishkaCmsBuilderWeb.UIAdapters.Review](MishkaCmsBuilderWeb.UIAdapters.Review.md): The UI adapter for the builder's Review panel — the editor's own look, over Gervaz's behaviour.