# Hakushi v0.6.0 - Table of Contents > Canvas for Phoenix: nodes of your own HEEx on an endless sheet, joined by edges, with every change checked on the server and live collaboration. ## Pages - [Hakushi](readme.md) - [Changelog](changelog.md) - [Contributing to Hakushi](contributing.md) - [Security](security.md) - Guides - [Quickstart](quickstart.md) - [Nodes](nodes.md) - [Edges](edges.md) - [Groups](groups.md) - [Kits](kits.md) - [In a page](embedding.md) - [Layout and export](layout.md) - [Changes](changes.md) - [Collaboration](collaboration.md) - [Upgrading](upgrading.md) - [Navigation](navigation.md) - [Testing](testing.md) - [Theming](theming.md) - Reference - [Accessibility](accessibility.md) - [Features](features.md) - [Known limits](limits.md) ## Modules - [Hakushi.Issho](Hakushi.Issho.md): A shared canvas on [Issho](https://hex.pm/packages/issho): the canvas's graph is a document of an Issho room, the canvas's LiveView is one of the room's sessions, and Issho is the room's people and their cursors. - [Hakushi.Issho.Place](Hakushi.Issho.Place.md): A place on a Hakushi canvas, in the canvas's own terms (never screen pixels, as each person has their own pan and zoom): where a person's pointer is, where an agent goes (`Issho.Motion`), what an app keeps of them. Its format is part of Hakushi's public API, and only grows. - Canvas - [Hakushi](Hakushi.md): Hakushi (白紙, "a blank sheet of paper") is a canvas for Phoenix: an endless sheet that people pan and zoom, with nodes of your own HEEx on it, joined by edges. - [Hakushi.Canvas](Hakushi.Canvas.md): The LiveComponent behind `Hakushi.Components.canvas/1`. - [Hakushi.Components](Hakushi.Components.md): Function components for the canvas. - [Hakushi.Live](Hakushi.Live.md): The `on_mount` hook of a LiveView with a shared canvas (`issho`), and the app's own changes to a canvas. - [Hakushi.Messages](Hakushi.Messages.md): The words of the canvas: the labels of its controls, the reasons it gives when it refuses a change, and the announcements for screen readers. - Kits - [Hakushi.Icons](Hakushi.Icons.md): The icons of the kits and of the embed frame: Lucide icons (https://lucide.dev, ISC licence), drawn with strokes of `currentColor`, as Kotoba's toolbar draws its own. - [Hakushi.Images](Hakushi.Images.md): The images of a canvas (`Hakushi.Kits.Images`), checked on the server before they become nodes, and kept in the app's store with [Storehouse](https://hexdocs.pm/storehouse). - [Hakushi.Ink](Hakushi.Ink.md): The geometry of a stroke of ink (`Hakushi.Kits.Ink`): its outline, as the `d` of an SVG path, whose width follows the pen's pressure. - [Hakushi.Kit](Hakushi.Kit.md): A kit: the things of one kind of canvas, which the canvas draws, makes and edits by itself. A canvas with `kits` needs no `:node` slots and no `new_node` for them - [Hakushi.Kits.Flow](Hakushi.Kits.Flow.md): The kit of a flow: a trigger that starts it, steps, and conditions with two ways out, joined by edges in the order they run. - [Hakushi.Kits.Images](Hakushi.Kits.Images.md): The kit of images on the paper: for a moodboard, a screenshot to mark up, references beside a plan. - [Hakushi.Kits.Ink](Hakushi.Kits.Ink.md): The kit of ink: drawing on the paper with a pen, over anything on the canvas (annotate, sketch, circle a node, write by hand), with a highlighter, an eraser of whole strokes, and a lasso that selects strokes and nodes alike. - [Hakushi.Kits.Notes](Hakushi.Kits.Notes.md): The kit of sticky notes: notes of a few colours, which people write in place, resize by their corners and join with arrows. - [Hakushi.Kits.Schema](Hakushi.Kits.Schema.md): The kit of a database schema: tables, with columns that have a name, a type and a key (primary or foreign), and foreign keys drawn from a column to a column of the same type. - [Hakushi.Kits.Shapes](Hakushi.Kits.Shapes.md): The kit of plain shapes: rectangles, ellipses, diamonds, triangles, text and lines, for diagrams, wireframes and whiteboards with no `:node` slot of the app's. - [Hakushi.Mermaid](Hakushi.Mermaid.md): Helpers for kits that write their canvas as a Mermaid diagram in Markdown, and read it back (`c:Hakushi.Kit.to_markdown/1`, `c:Hakushi.Kit.from_markdown/1`). - Graph - [Hakushi.Change](Hakushi.Change.md): A change to a canvas: what a person did, or what the app does. - [Hakushi.Edge](Hakushi.Edge.md): An edge of a canvas: a line from a handle of one node to a handle of another. - [Hakushi.Graph](Hakushi.Graph.md): The nodes and edges of a canvas. - [Hakushi.Node](Hakushi.Node.md): A node of a canvas: a box at a place, drawn by the `:node` slot of its `type`. - [Hakushi.Paper](Hakushi.Paper.md): The paper of a canvas: its pattern (`background`) and the size of its squares (`grid`), which nodes snap to. - [Hakushi.Rules](Hakushi.Rules.md): The rules of the edges of a canvas, the same in the browser and on the server. - Storage - [Hakushi.Graph.Type](Hakushi.Graph.Type.md): An Ecto type for a whole canvas in one column: a `:map` (`jsonb` on PostgreSQL, JSON text on SQLite and MySQL). - Testing - [Hakushi.Test](Hakushi.Test.md): Helpers for `Phoenix.LiveViewTest`, to read and change the canvases of a LiveView with no browser. ## Mix Tasks - [mix hakushi.build](Mix.Tasks.Hakushi.Build.md): Builds the Hakushi canvas into `priv/static`. - [mix hakushi.install](Mix.Tasks.Hakushi.Install.md): Sets up Hakushi in a Phoenix application. - [mix hakushi.release_check](Mix.Tasks.Hakushi.ReleaseCheck.md): Checks the built files before a release of Hakushi.