{"id":359343,"date":"2026-09-07T15:51:47","date_gmt":"2026-09-07T15:51:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/thinkboard\/"},"modified":"2026-09-07T15:51:18","modified_gmt":"2026-09-07T15:51:18","slug":"ideom","status":"publish","type":"plugin","link":"https:\/\/es-pr.wordpress.org\/plugins\/ideom\/","author":13985035,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1","requires":"6.3","requires_php":"8.1","requires_plugins":null,"header_name":"Ideom","header_author":"Eugen Guriev","header_description":"Embed and edit canvas mind maps in WordPress. Maps live in a custom post type and are served through the plugin's own REST namespace.","assets_banners_color":"fdfdfc","last_updated":"2026-09-07 15:51:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/theguriev\/ideom","header_author_uri":"https:\/\/profiles.wordpress.org\/gurievcreative\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"gurievcreative","date":"2026-09-07 15:51:18","revision":3685229}},"upgrade_notice":{"1.1.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3685229,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3685229,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3685229,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3685229,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3685229,"resolution":"1","location":"assets","locale":"","width":1279,"height":764},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3685229,"resolution":"2","location":"assets","locale":"","width":1279,"height":764},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3685229,"resolution":"3","location":"assets","locale":"","width":1279,"height":764},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3685229,"resolution":"4","location":"assets","locale":"","width":1279,"height":764}},"screenshots":{"1":"The editor: colored branches, markdown nodes, emoji reactions, undo\/redo and zoom \u2014 all on one canvas.","2":"The Ideom screen: every map you can see, searchable, newest first.","3":"The command palette: every action one keystroke away.","4":"Start a map from anywhere: + New \u2192 Mind Map in the admin bar."}},"plugin_section":[],"plugin_tags":[88082,864,15399,171758,16374],"plugin_category":[],"plugin_contributors":[279597],"plugin_business_model":[],"class_list":["post-359343","plugin","type-plugin","status-publish","hentry","plugin_tags-brainstorming","plugin_tags-canvas","plugin_tags-diagram","plugin_tags-mind-map","plugin_tags-mindmap","plugin_contributors-gurievcreative","plugin_committers-gurievcreative"],"banners":{"banner":"https:\/\/ps.w.org\/ideom\/assets\/banner-772x250.png?rev=3685229","banner_2x":"https:\/\/ps.w.org\/ideom\/assets\/banner-1544x500.png?rev=3685229","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ideom\/assets\/icon-128x128.png?rev=3685229","icon_2x":"https:\/\/ps.w.org\/ideom\/assets\/icon-256x256.png?rev=3685229","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ideom\/assets\/screenshot-1.jpg?rev=3685229","caption":"The editor: colored branches, markdown nodes, emoji reactions, undo\/redo and zoom \u2014 all on one canvas."},{"src":"https:\/\/ps.w.org\/ideom\/assets\/screenshot-2.jpg?rev=3685229","caption":"The Ideom screen: every map you can see, searchable, newest first."},{"src":"https:\/\/ps.w.org\/ideom\/assets\/screenshot-3.jpg?rev=3685229","caption":"The command palette: every action one keystroke away."},{"src":"https:\/\/ps.w.org\/ideom\/assets\/screenshot-4.jpg?rev=3685229","caption":"Start a map from anywhere: + New \u2192 Mind Map in the admin bar."}],"raw_content":"<!--section=description-->\n<p>Ideom puts a real mind-map editor inside your WordPress admin. No external service, no accounts, no iframes: maps are ordinary WordPress content, stored in your database, protected by WordPress permissions, and embeddable in any post or page with a block or a shortcode.<\/p>\n\n<h4>Made for thinking<\/h4>\n\n<ul>\n<li><strong>A real canvas editor.<\/strong> The whole map is drawn on an HTML canvas by a custom React renderer, so dragging, panning and zooming stay smooth even on large maps.<\/li>\n<li><strong>Markdown in every node.<\/strong> Headings, bold and italics, code, links, lists, quotes \u2014 even tables.<\/li>\n<li><strong>Style it your way.<\/strong> Color branches, change line styles and shapes, resize nodes, drop sticky notes, and react to any node with emoji.<\/li>\n<li><strong>Keyboard first.<\/strong> A command palette (Ctrl\/Cmd+K), find node (Ctrl\/Cmd+F), duplicate branch (Ctrl\/Cmd+D), and full undo\/redo.<\/li>\n<li><strong>Templates.<\/strong> Star any map as a template and start new maps from it.<\/li>\n<li><strong>Export.<\/strong> Download any map as an SVG file.<\/li>\n<\/ul>\n\n<h4>Made for WordPress<\/h4>\n\n<ul>\n<li><strong>Your data stays home.<\/strong> Every map is a <code>ideom_map<\/code> post; the document is JSON in post meta. Deactivating or deleting the plugin leaves your maps untouched, and Tools \u2192 Export can back them up.<\/li>\n<li><p><strong>Embed anywhere.<\/strong> Use the Mind Map block or the shortcode below. Visitors get the map read-only: they can pan, zoom, fold branches and export, and nothing they do reaches the server.<\/p>\n\n<p>[ideom_map id=\"42\" height=\"600\"]<\/p><\/li>\n<li><p><strong>Start from anywhere.<\/strong> + New \u2192 Mind Map in the admin bar opens a fresh map.<\/p><\/li>\n<li><strong>Sensible permissions.<\/strong> A published map is readable by anyone \u2014 that is what makes embedding worth doing. Everything else follows WordPress capabilities: creating needs <code>edit_posts<\/code>, updating or deleting is re-checked on the server for that specific map, and the map list is never public.<\/li>\n<li><strong>Its own REST API.<\/strong> Maps are served through the plugin's <code>ideom\/v1<\/code> namespace, and every write passes strict document validation. Core's post endpoints are deliberately not exposed.<\/li>\n<\/ul>\n\n<p>Worth knowing before you write anything sensitive in a map: a published map is readable by anyone who knows its post id, whether or not it is embedded anywhere. Keep private notes out of published maps, or keep the map as a draft.<\/p>\n\n<h4>REST API<\/h4>\n\n<p>Namespace <code>ideom\/v1<\/code>. Writes are authenticated with cookies plus the standard <code>X-WP-Nonce<\/code> header; reading a published map needs neither.<\/p>\n\n<ul>\n<li><code>GET \/maps<\/code> \u2014 every map the caller may see, newest first, capped at 100<\/li>\n<li><code>POST \/maps<\/code> \u2014 create a map<\/li>\n<li><code>GET \/maps\/&lt;id&gt;<\/code> \u2014 read one map<\/li>\n<li><code>PUT \/maps\/&lt;id&gt;<\/code> \u2014 overwrite one map<\/li>\n<li><code>PUT \/maps\/&lt;id&gt;\/template<\/code> \u2014 star or unstar a map as a template<\/li>\n<li><code>DELETE \/maps\/&lt;id&gt;<\/code> \u2014 delete one map<\/li>\n<\/ul>\n\n<p>Errors carry a stable code: <code>ideom_invalid_document<\/code> (400), <code>ideom_forbidden<\/code> (403), <code>ideom_not_found<\/code> (404).<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>This plugin ships built JavaScript and CSS. The unminified source, and the tools that build it, are public:<\/p>\n\n<ul>\n<li>Repository: https:\/\/github.com\/theguriev\/ideom<\/li>\n<li>Each release is built from the tag of the same version as <code>Stable tag<\/code>.<\/li>\n<\/ul>\n\n<p>Where the shipped files come from:<\/p>\n\n<ul>\n<li><code>assets\/index.js<\/code> \u2190 <code>apps\/wordpress\/src\/main.tsx<\/code> (with <code>packages\/engine<\/code> and <code>packages\/storage<\/code>), built by <code>apps\/wordpress\/vite.config.ts<\/code><\/li>\n<li><code>assets\/block.js<\/code> \u2190 <code>apps\/wordpress\/src\/block.ts<\/code>, built by <code>apps\/wordpress\/vite.block.config.ts<\/code> \u2014 a second, separate Vite build<\/li>\n<li><code>assets\/index.css<\/code> \u2190 <code>apps\/wordpress\/src\/index.css<\/code> (Tailwind)<\/li>\n<\/ul>\n\n<p>To build it yourself you need Node 22 or newer and pnpm:<\/p>\n\n<pre><code>git clone https:\/\/github.com\/theguriev\/ideom\ncd ideom\npnpm install\npnpm wp:package\n<\/code><\/pre>\n\n<p>That writes <code>services\/wordpress\/dist\/ideom.zip<\/code>, which is this plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install through Plugins \u2192 Add New (search for \"Ideom\"), or upload the ZIP through Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open <strong>Ideom<\/strong> in the admin menu and press <strong>New<\/strong>.<\/li>\n<li>Embed the map anywhere with the Mind Map block or <code>[ideom_map id=\"\u2026\"]<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20need%20an%20account%20or%20an%20external%20service%3F\"><h3>Does it need an account or an external service?<\/h3><\/dt>\n<dd><p>No. The editor runs entirely on your site and the plugin makes no external requests. Maps never leave your database.<\/p><\/dd>\n<dt id=\"where%20is%20a%20map%20stored%3F\"><h3>Where is a map stored?<\/h3><\/dt>\n<dd><p>In a <code>ideom_map<\/code> post. The title mirrors the root node's text; the document is JSON in the <code>_ideom_content<\/code> post meta, alongside <code>_ideom_version<\/code> and <code>_ideom_template<\/code>.<\/p><\/dd>\n<dt id=\"can%20visitors%20edit%20an%20embedded%20map%3F\"><h3>Can visitors edit an embedded map?<\/h3><\/dt>\n<dd><p>No. A signed-out visitor gets the map read-only: it can be panned, zoomed, folded and exported, and nothing they do reaches the server. The same applies to any signed-in user without <code>edit_post<\/code> on that map. Every write is re-checked on the server regardless of what the front end believed.<\/p><\/dd>\n<dt id=\"does%20it%20expose%20the%20maps%20through%20the%20core%20rest%20api%3F\"><h3>Does it expose the maps through the core REST API?<\/h3><\/dt>\n<dd><p>No. The post type registers with <code>show_in_rest<\/code> disabled on purpose \u2014 core's endpoints would let a client write <code>_ideom_content<\/code> without going through the plugin's document validation.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20a%20corrupted%20map%3F\"><h3>What happens to a corrupted map?<\/h3><\/dt>\n<dd><p>It degrades to an empty document instead of breaking the screen. Content that fails validation \u2014 non-finite coordinates, duplicate node ids, cyclic parent chains \u2014 is never returned to the editor.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20maps%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my maps if I delete the plugin?<\/h3><\/dt>\n<dd><p>They stay. Maps are your content, stored as ordinary <code>ideom_map<\/code> posts, and deleting or deactivating the plugin leaves them in the database untouched \u2014 reactivating brings all of them back exactly as they were.<\/p>\n\n<p>If you want them gone, delete them in the Ideom screen <strong>before<\/strong> removing the plugin; once it is gone there is no screen that lists them. To keep a copy, Tools \u2192 Export offers \"Mind Maps\" as an export type.<\/p>\n\n<p>Note that deleting a <em>user<\/em> does delete their maps, the same way WordPress deletes other content belonging to a removed user.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>First public release: canvas editor with markdown nodes, sticky notes, emoji reactions and SVG export; <code>ideom_map<\/code> post type; <code>ideom\/v1<\/code> REST namespace; Mind Map block and <code>[ideom_map]<\/code> shortcode; templates; admin screen.<\/li>\n<\/ul>","raw_excerpt":"A fast canvas mind-map editor right in wp-admin. Sketch ideas, style branches, react with emoji \u2014 then embed any map in a post or page.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/359343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=359343"}],"author":[{"embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gurievcreative"}],"wp:attachment":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=359343"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=359343"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=359343"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=359343"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=359343"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=359343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}