{"id":1463,"date":"2026-08-18T14:14:42","date_gmt":"2026-08-18T12:14:42","guid":{"rendered":"https:\/\/www.bandidor.info\/wp\/?p=1463"},"modified":"2026-08-18T14:14:45","modified_gmt":"2026-08-18T12:14:45","slug":"how-i-built-get-craftly-a-kanban-app-with-ai","status":"publish","type":"post","link":"https:\/\/www.bandidor.info\/wp\/?p=1463","title":{"rendered":"How I Built Get Craftly: a Kanban App with AI"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Recap<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Get Craftly started as a side project for my other side projects. I wanted a board where every project could have its own lane, with cards moving through <em>Planned<\/em>, <em>WIP<\/em>, and <em>Done<\/em>. At the same time, I wanted to run an experiment: how far could I get without manually writing the application code and without already knowing React or Tailwind CSS?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The answer turned out to be considerably further than I expected. What began as a screenshot and a conversation with an AI assistant is now a Firebase-hosted application with authentication, persistent boards, an admin dashboard, automated tests, and more than one hundred commits.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The initial idea<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The starting point was the mockup below. It already contained the central idea: a horizontally scrolling board made from project lanes, three workflow rows inside every lane, and task cards carrying useful details such as priority, tags, and dates.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2141\" height=\"1051\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup.png\" alt=\"Original Get Craftly Kanban board mockup with project columns and task cards\" class=\"wp-image-1464\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup.png 2141w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup-300x147.png 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup-1024x503.png 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup-768x377.png 768w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup-1536x754.png 1536w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup-2048x1005.png 2048w\" sizes=\"auto, (max-width: 2141px) 100vw, 2141px\" \/><figcaption class=\"wp-element-caption\">The original mockup that started the project.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">My initial requirement was intentionally visual and practical. Cards had to move between lanes and rows, drop targets had to react while dragging, completed work had to remain recognisable, and the layout had to survive a board wider than the screen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">First implementation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I began with Claude&#8217;s free web interface. There was no IDE integration and no coding plug-in. I described the interface, supplied the mockup, copied the result into the project, and reported the next problem. Tailwind CSS 4 had changed enough to create some confusion during setup, so Gemini provided a little help there.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first version was a React application created with Vite and styled with Tailwind CSS. It proved that the board itself worked: lanes could be displayed side by side, cards could be dragged, and the interface could keep the original three-row structure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That first success was also the start of the real work. A board that merely looks correct is not yet useful. Titles needed in-place editing; lanes and cards needed to be created and removed; cards needed tags, colours, priority flags, dates, and completion behaviour. Each improvement exposed another small edge case.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Making the board useful<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The current interface is still recognisably based on the original mockup, but it has grown into the board I now use for real projects.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2062\" height=\"763\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-board-overview-blurred.png\" alt=\"Current Get Craftly version 1.3.0 board with multiple project lanes, workflow rows, coloured cards and admin statistics\" class=\"wp-image-1465\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-board-overview-blurred.png 2062w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-board-overview-blurred-300x111.png 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-board-overview-blurred-1024x379.png 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-board-overview-blurred-768x284.png 768w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-board-overview-blurred-1536x568.png 1536w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-board-overview-blurred-2048x758.png 2048w\" sizes=\"auto, (max-width: 2062px) 100vw, 2062px\" \/><figcaption class=\"wp-element-caption\">Get Craftly 1.3.0 in use. The account address has been blurred for privacy.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Every lane represents a project or area of work. Inside it, cards move between <em>Planned<\/em>, <em>WIP<\/em>, and <em>Done<\/em>. A card can have a due date, a priority flag, one or more coloured tags, and a completion state. Titles are edited directly on the board instead of through a separate form.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Drag cards between rows and lanes while preserving their order.<\/li>\n\n\n\n<li>Add, rename, reorder, and remove project lanes.<\/li>\n\n\n\n<li>Create cards directly in the required workflow row.<\/li>\n\n\n\n<li>Use tags, muted card colours, priority flags, and due dates as visual cues.<\/li>\n\n\n\n<li>Move completed work automatically into <em>Done<\/em>.<\/li>\n\n\n\n<li>Scroll horizontally through a board containing many projects.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The screenshot also shows the admin overview. At the time of writing, the hosted instance reports two registered users, four boards, fifteen lanes, and fifty-six cards. These are not demonstration records\u2014the application is being used to organise work on my other projects.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Creating a card, step by step<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A feature list describes what the application can do, but it does not show how it feels to use. The following sequence creates a real demonstration card in the <em>Get Craftly<\/em> lane.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>The complete flow stays on the board: choose the workflow row, type a title, then enrich the card only when the extra information is useful.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">1. Start in the right workflow row<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every lane has its own <em>WIP<\/em>, <em>Planned<\/em>, and <em>Done<\/em> areas. Each area has an <em>Add task<\/em> action, so a new card starts exactly where it belongs rather than being created in a separate screen and moved afterward.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"900\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-get-craftly-lane.jpg\" alt=\"Focused Get Craftly lane showing WIP, Planned and Done workflow rows\" class=\"wp-image-1470\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-get-craftly-lane.jpg 1280w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-get-craftly-lane-300x211.jpg 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-get-craftly-lane-1024x720.jpg 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-get-craftly-lane-768x540.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">A focused view of the Get Craftly lane before creating the demonstration card.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. Enter the card title<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Clicking <em>Add task<\/em> expands a deliberately small form inside the selected row. For this walkthrough I created <strong>Article demo \u2013 create a card<\/strong> directly in WIP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1495\" height=\"1052\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-form-blurred.png\" alt=\"Get Craftly WIP row with the inline New card title form and Add and Cancel buttons\" class=\"wp-image-1471\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-form-blurred.png 1495w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-form-blurred-300x211.png 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-form-blurred-1024x721.png 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-form-blurred-768x540.png 768w\" sizes=\"auto, (max-width: 1495px) 100vw, 1495px\" \/><figcaption class=\"wp-element-caption\">The inline card-creation form keeps the user in the context of the board.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Pressing <em>Add<\/em> creates the card immediately. It receives a muted colour automatically and is persisted to Firestore, so the new state survives a refresh and appears on the user&#8217;s owned board.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"900\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-created.jpg\" alt=\"New Article demo card created in the WIP row of the Get Craftly lane\" class=\"wp-image-1472\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-created.jpg 1280w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-created-300x211.jpg 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-created-1024x720.jpg 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-new-card-created-768x540.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">The new card appears in WIP without leaving the board.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. Add visual context<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A minimal card can remain just a title, but richer work can be classified with reusable coloured tags. The selector filters existing tags and also supports creating a new one. Here I reused the <code>ESP32<\/code> tag and enabled the high-priority flag.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"900\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-tag-selector.jpg\" alt=\"Open Get Craftly tag selector listing reusable coloured tags such as ESP32, IMAP and 3d print\" class=\"wp-image-1473\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-tag-selector.jpg 1280w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-tag-selector-300x211.jpg 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-tag-selector-1024x720.jpg 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-tag-selector-768x540.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">Tags are selected or created directly from the card.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4. Choose a due date<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The calendar icon opens a date picker over the board. It supports selecting a day or clearing an existing date without opening another page. For the demonstration card I selected 24 August 2026.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1495\" height=\"1052\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-date-picker-blurred.png\" alt=\"August 2026 date picker open above the demonstration card in Get Craftly\" class=\"wp-image-1474\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-date-picker-blurred.png 1495w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-date-picker-blurred-300x211.png 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-date-picker-blurred-1024x721.png 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-date-picker-blurred-768x540.png 768w\" sizes=\"auto, (max-width: 1495px) 100vw, 1495px\" \/><figcaption class=\"wp-element-caption\">The date picker opens in place and keeps the surrounding workflow visible.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5. The configured result<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The finished example combines the pieces without turning the card into a form: title in the centre, completion and priority at the top, due date on the right, and the tag below. Every change is saved as it is made.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1495\" height=\"1052\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-configured-blurred.png\" alt=\"Configured Get Craftly demonstration card with high priority, ESP32 tag and August 24 due date\" class=\"wp-image-1475\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-configured-blurred.png 1495w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-configured-blurred-300x211.png 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-configured-blurred-1024x721.png 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-card-configured-blurred-768x540.png 768w\" sizes=\"auto, (max-width: 1495px) 100vw, 1495px\" \/><figcaption class=\"wp-element-caption\">The completed demonstration card: high priority, tagged ESP32, and due on 24 August.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">From browser state to Firebase<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The early prototype stored everything in React component state. That was sufficient for experimenting with the interface, but a refresh removed the work. The obvious next step was persistence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Firestore now stores boards, lanes, rows, cards, ordering information, tags, colours, dates, and ownership. Firebase Authentication supports Google sign-in and email\/password accounts. Each user receives an owned board, while claims-based rules protect administrative functionality.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This stage produced some of the less glamorous but most important fixes. Moving a card on screen was easy; making sure exactly the same move was persisted was harder. The same was true for adding lanes, changing priorities, updating dates, and preserving card order within priority groups. Most bugs appeared where local React state and Firestore state could briefly disagree.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How the project evolved<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The current repository is public and contains the application source, Firebase configuration examples and rules, documentation, scripts, unit tests, and end-to-end tests.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1422\" height=\"725\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-repository.jpg\" alt=\"Public Get Craftly GitHub repository showing source, documentation, tests and Firebase files\" class=\"wp-image-1466\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-repository.jpg 1422w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-repository-300x153.jpg 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-repository-1024x522.jpg 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-repository-768x392.jpg 768w\" sizes=\"auto, (max-width: 1422px) 100vw, 1422px\" \/><figcaption class=\"wp-element-caption\">The public repository now includes source code, documentation, Firebase rules, and automated tests.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The code also moved beyond the original single large component. Board behaviour is now separated into reusable components and custom hooks. A dedicated API layer handles Firestore operations, while Playwright-based end-to-end coverage exercises important user flows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The history is a good description of the development method: implement one behaviour, test it, discover what did not persist or did not feel right, and make the next focused change.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1422\" height=\"670\" src=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-commits.jpg\" alt=\"Get Craftly GitHub commit history including card ordering, releases and admin dashboard work\" class=\"wp-image-1468\" srcset=\"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-commits.jpg 1422w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-commits-300x141.jpg 300w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-commits-1024x482.jpg 1024w, https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-github-commits-768x362.jpg 768w\" sizes=\"auto, (max-width: 1422px) 100vw, 1422px\" \/><figcaption class=\"wp-element-caption\">The commit history records the incremental route from prototype to the current release.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">At the time of writing, the public repository contains 114 commits and 15 tags. The live footer identifies version 1.3.0 at commit <code>00e6b21<\/code>, built on 23 July 2026. Recent work includes preserving card order within priority groups; earlier milestones added Firebase Hosting, authentication, the admin flow, rules, testing, and deployment automation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The AI experiment<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The project idea was not simply \u201cmake a Kanban board.\u201d It was also \u201cmake it without manually coding it.\u201d I had not used React or Tailwind and did not particularly want to stop and learn the complete stack before testing the idea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claude and Gemini handled the earliest steps. Later I also used Gemini CLI, GitHub Copilot, and Roo Code. I deliberately stayed with free LLM access rather than paid plans. The tools changed, but the working method stayed much the same: describe the required behaviour, inspect the result, reproduce the failure, and ask for a narrowly scoped correction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This does not mean that the process required no work. The AI could write code, but it could not decide whether the application behaved correctly for me. Clear requirements, careful testing, source control, and small changes remained essential. The most useful skill was often not programming syntax but explaining precisely what happened and what should have happened instead.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Current result<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Get Craftly is still a personal project rather than a commercial product, but it is no longer just a mockup. It is a deployed application that I use, with real persistence, authentication, board ownership, administration, and automated checks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can open the <a href=\"https:\/\/get-craftly.web.app\/\">live application<\/a> or inspect the complete <a href=\"https:\/\/github.com\/olegme\/get-craftly-app\">source and development history on GitHub<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How I built Get Craftly, a React and Firebase Kanban app, with AI coding tools\u2014then added drag-and-drop cards, authentication, persistence, administration, and automated tests.<\/p>\n","protected":false},"author":1,"featured_media":1464,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[57],"tags":[62,61,58,59,60],"class_list":["post-1463","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-projects","tag-ai-assisted-development","tag-firebase","tag-get-craftly","tag-kanban","tag-react"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2EszU-nB","jetpack_featured_media_url":"https:\/\/www.bandidor.info\/wp\/wp-content\/uploads\/2026\/08\/craftly-original-mockup.png","_links":{"self":[{"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1463"}],"version-history":[{"count":4,"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1463\/revisions"}],"predecessor-version":[{"id":1478,"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1463\/revisions\/1478"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=\/wp\/v2\/media\/1464"}],"wp:attachment":[{"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bandidor.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}