{"id":6573,"date":"2019-12-16T19:13:14","date_gmt":"2019-12-16T19:13:14","guid":{"rendered":"https:\/\/cheesecakelabs.com\/blog\/?p=6573\/"},"modified":"2022-07-01T17:09:40","modified_gmt":"2022-07-01T17:09:40","slug":"rethinking-atomic-design-react-projects","status":"publish","type":"post","link":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/","title":{"rendered":"Rethinking Atomic React: an interpretation of Brad Frost\u2019s Atomic Design to use in React projects"},"content":{"rendered":"<p>Atomic Design is a very widespread topic nowadays within the front-end community, but while looking at several projects, I realized that there is still&nbsp; a lot of personal opinion on its implementation, and here I list some points that caught my attention throughout the years.<\/p>\n<p><span style=\"font-weight: 400;\">This article is not a tutorial on how to create your applications but it is intended to share my interpretation on how to best use this amazing methodology.<\/span><!--more--><\/p>\n<h2><b>First, what is Atomic Design?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">A methodology created initially by Brad Frost, in which he took inspiration from chemistry and brought it to applications and the way to develop. Initially, it focused only on the design and eventually reflected and &#8220;revolutionized&#8221; front-end architecture as well. In Brad&#8217;s own words:<\/span><\/p>\n<blockquote><p><span style=\"font-weight: 400;\">Atomic design is methodology for creating design systems. There are five distinct levels in atomic design: atoms, molecules, organisms, templates and pages.<\/span><\/p><\/blockquote>\n<p><b>Atoms<\/b><span style=\"font-weight: 400;\">: are the basic structure of matter, applied to web atoms are like HTML tags, a label, an input or a button.<\/span><\/p>\n<p><b>Molecules<\/b><span style=\"font-weight: 400;\">: They are a group of atoms put together with basic fundamentals of a unit. They serve as the basis for the design system. For example, a label, input and button together making a form element.<\/span><\/p>\n<p><b>Organisms<\/b><span style=\"font-weight: 400;\">: They are blocks of our system, where we can group molecules together to form relatively more complex components, a section of the application.<\/span><\/p>\n<p><b>Templates<\/b><span style=\"font-weight: 400;\">: They are mostly a group of organisms put together to form a final structure, this is where we begin to see the layout in action.<\/span><\/p>\n<p><b>Pages<\/b><span style=\"font-weight: 400;\">: These are instances of templates where \u201cgaps\u201d are filled with content, resulting in the final view that the user will see.<\/span><\/p>\n<figure id=\"attachment_6574\" aria-describedby=\"caption-attachment-6574\" style=\"width: 796px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"size-full wp-image-6574\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/blogpost-atomic-react-02.png\" alt=\"atomic-react\" width=\"796\" height=\"600\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/blogpost-atomic-react-02.png 796w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/blogpost-atomic-react-02-768x579.png 768w\" sizes=\"(max-width: 796px) 100vw, 796px\" \/><figcaption id=\"caption-attachment-6574\" class=\"wp-caption-text\">Based on the definitions above, we will now enter the world of code. What I intend to bring is my interpretation of how to apply these concepts within our applications.<\/figcaption><\/figure>\n<h2><b>Problems<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">I know there are several examples of atomicity out there, so I want to focus on the problems I encountered during my experiments while working with React, showing some concepts and an example of code that you can find linked at the end of the article.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">* Duplicate Behavior (mainly between molecules and atoms)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">* Inability to reuse code between projects<\/span><\/p>\n<p><span style=\"font-weight: 400;\">* Lack of visibility and understanding of component state<\/span><\/p>\n<p><span style=\"font-weight: 400;\">* Great impact on development time by creating more components than needed<\/span><\/p>\n<p><span style=\"font-weight: 400;\">* Difficult code maintainability due to lack of standardization<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Well, let\u2019s talk about each item separately, starting with: <\/span><b>Duplicate Behavior<\/b><span style=\"font-weight: 400;\">. What I\u2019ve noticed looking at various projects is that even though they are different code, components often have the same behavior. As in the case of forms components, where we tend to create a component for each form of the application (form-client, form-company, form-xxxx,\u2026) and they perform the tasks in a similar way. Why not create a single, more detailed and worked form component that can abstract all of these components? It&#8217;s easier to avoid abstraction and simply implement specific behavior in duplicated components, and that&#8217;s what greatly impact reusability within a project.<\/span><\/p>\n<p><b>Inability to reuse code between projects<\/b><span style=\"font-weight: 400;\"> is a very important thing for a company and its developers. Does rewriting all the code with each project mean your code is not good enough to use again? The problem I see here is related to where to put your application\u2019s business rule. Continuing with the forms example above, your component should not be aware of the backend API let alone fetch the data. As stated earlier, components are \u201cdumb\u201d elements. Your entire business rule, functions that are \u201cinjected\u201d into your components, must come from the business rule layer (pages, containers, services). This way you can move your code between projects, taking only what interests you.<\/span><\/p>\n<p><b>The lack of visibility and understanding of component state<\/b><span style=\"font-weight: 400;\"> is very particular and will vary widely among developers. Using a list of users as an example,&nbsp; I want to highlight that it may be hard for another developer to understand the component&#8217;s usage and behavior just by its name if you add other things to the component, like API requests to fetch users information and\/or handling the Redux state for it. At that point, we lost all the intuitiveness of the component as it became a piece of application, no longer a simple component.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Considering that you develop your components by duplicating behavior or injecting business rules into them, at some point on the project you may have a <\/span><b>big impact on development time<\/b><span style=\"font-weight: 400;\"> by creating more components than necessary. Why do I say this? Because there are situations, that happen more often than we want, in which small fixes impact in&nbsp; changes on dozens of components or even API changes to break the entire application, and that can cause a giant rework during the fix. In addition to it, if your projects are reusable, planning will give you much more accuracy on time and scope management.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Last but not least, <\/span><b>difficult code maintainability due to lack of standardization<\/b><span style=\"font-weight: 400;\"> is something that happens all the time, since every project gets refactored, and every week there is a new library available, a React update (now all components have hooks, now each one has useState), etc. Don\u2019t get me wrong, code must be updated, but before that, it must be thought through, standardized and then evolved.<\/span><\/p>\n<h2><b>OK! What tips can I share?<\/b><\/h2>\n<ol>\n<li><span style=\"font-weight: 400;\"> Firstly, while reading the Atomic design components definitions, the first thing I realized is that Pages are not components, as these are just instances of Templates, and the pages should be closer to the service layer of your application, so:<\/span><\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"size-full wp-image-6575 aligncenter\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/blogpost-atomic-react-01.png\" alt=\"pages\" width=\"742\" height=\"704\"><\/p>\n<ol start=\"2\">\n<li><span style=\"font-weight: 400;\"> Speaking of components, I believe they should be \u201cdumb\u201d and should not be aware of your application\u2019s business rule and only render what they were asked to do. Don&#8217;t use Fetch\/Axios, properties that can&#8217;t be overridden or anything related to your application inside the component.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"> Inject the dependencies of your project. A very common thing is to use high impact external libraries within components, such as:<\/span><\/li>\n<\/ol>\n<p><i><span style=\"font-weight: 400;\">import {Link} from &#8216;react-router-dom&#8217;<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Avoid this within its components. It may be that you won\u2019t use the sample library above in every project and you will lose component reusability.<\/span><\/p>\n<ol start=\"4\">\n<li><span style=\"font-weight: 400;\"> Start the component small, but once you get the chance to improve it, do it! And don&#8217;t duplicate the same behavior in different components, like the form example mentioned previously.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">All the items discussed above are very conceptual. I am sharing this link: <\/span><a href=\"https:\/\/github.com\/natamvo\/rethinking-atomic-react\"><span style=\"font-weight: 400;\">https:\/\/github.com\/natamvo\/rethinking-atomic-react<\/span><\/a><span style=\"font-weight: 400;\"> where I started a React application (react-app) and created some sample components in order to make the points raised above clear.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Atomic Design is a very widespread topic nowadays within the front-end community, but while looking at several projects, I realized that there is still&nbsp; a lot of personal opinion on its implementation, and here I list some points that caught my attention throughout the years. This article is not a tutorial on how to create [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":6576,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[432,7],"tags":[305],"class_list":["post-6573","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","category-opinion","tag-tag-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rethinking Atomic Design in React Projects<\/title>\n<meta name=\"description\" content=\"What to keep an eye out for when developing React applications using Atomic Design and tips for good development.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rethinking Atomic Design in React Projects\" \/>\n<meta property=\"og:description\" content=\"What to keep an eye out for when developing React applications using Atomic Design and tips for good development.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/\" \/>\n<meta property=\"og:site_name\" content=\"Cheesecake Labs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cheesecakelabs\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-16T19:13:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-01T17:09:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cheesecake Labs\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:site\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/\"},\"author\":{\"name\":\"Natam Oliveira\"},\"headline\":\"Rethinking Atomic React: an interpretation of Brad Frost\u2019s Atomic Design to use in React projects\",\"datePublished\":\"2019-12-16T19:13:14+00:00\",\"dateModified\":\"2022-07-01T17:09:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/\"},\"wordCount\":1124,\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png\",\"keywords\":[\"development\"],\"articleSection\":[\"Engineering\",\"Opinion\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/\",\"name\":\"Rethinking Atomic Design in React Projects\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png\",\"datePublished\":\"2019-12-16T19:13:14+00:00\",\"dateModified\":\"2022-07-01T17:09:40+00:00\",\"author\":{\"@type\":\"person\",\"name\":\"Natam Oliveira\"},\"description\":\"What to keep an eye out for when developing React applications using Atomic Design and tips for good development.\",\"breadcrumb\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png\",\"width\":2000,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cheesecakelabs.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rethinking Atomic React: an interpretation of Brad Frost\u2019s Atomic Design to use in React projects\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#website\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/\",\"name\":\"Cheesecake Labs\",\"description\":\"Nearshore outsourcing company for Web and Mobile design and engineering services, and staff augmentation for startups and enterprises..\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cheesecakelabs.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"name\":\"Natam Oliveira\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/1665394374251.jpeg\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/1665394374251.jpeg\",\"caption\":\"Natam Oliveira\"},\"description\":\"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/autor\/natam-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rethinking Atomic Design in React Projects","description":"What to keep an eye out for when developing React applications using Atomic Design and tips for good development.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/","og_locale":"en_US","og_type":"article","og_title":"Rethinking Atomic Design in React Projects","og_description":"What to keep an eye out for when developing React applications using Atomic Design and tips for good development.","og_url":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/","og_site_name":"Cheesecake Labs","article_publisher":"https:\/\/www.facebook.com\/cheesecakelabs","article_published_time":"2019-12-16T19:13:14+00:00","article_modified_time":"2022-07-01T17:09:40+00:00","og_image":[{"width":2000,"height":720,"url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png","type":"image\/png"}],"author":"Cheesecake Labs","twitter_card":"summary_large_image","twitter_creator":"@cheesecakelabs","twitter_site":"@cheesecakelabs","twitter_misc":{"Written by":null,"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#article","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/"},"author":{"name":"Natam Oliveira"},"headline":"Rethinking Atomic React: an interpretation of Brad Frost\u2019s Atomic Design to use in React projects","datePublished":"2019-12-16T19:13:14+00:00","dateModified":"2022-07-01T17:09:40+00:00","mainEntityOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/"},"wordCount":1124,"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png","keywords":["development"],"articleSection":["Engineering","Opinion"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/","url":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/","name":"Rethinking Atomic Design in React Projects","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage"},"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png","datePublished":"2019-12-16T19:13:14+00:00","dateModified":"2022-07-01T17:09:40+00:00","author":{"@type":"person","name":"Natam Oliveira"},"description":"What to keep an eye out for when developing React applications using Atomic Design and tips for good development.","breadcrumb":{"@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#primaryimage","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2019\/12\/atomic_react.png","width":2000,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/cheesecakelabs.com\/blog\/rethinking-atomic-design-react-projects\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cheesecakelabs.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Rethinking Atomic React: an interpretation of Brad Frost\u2019s Atomic Design to use in React projects"}]},{"@type":"WebSite","@id":"https:\/\/cheesecakelabs.com\/blog\/#website","url":"https:\/\/cheesecakelabs.com\/blog\/","name":"Cheesecake Labs","description":"Nearshore outsourcing company for Web and Mobile design and engineering services, and staff augmentation for startups and enterprises..","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cheesecakelabs.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","name":"Natam Oliveira","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cheesecakelabs.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/1665394374251.jpeg","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/1665394374251.jpeg","caption":"Natam Oliveira"},"description":"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.","url":"https:\/\/cheesecakelabs.com\/blog\/autor\/natam-2\/"}]}},"_links":{"self":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/6573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/comments?post=6573"}],"version-history":[{"count":1,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/6573\/revisions"}],"predecessor-version":[{"id":10181,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/6573\/revisions\/10181"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/media\/6576"}],"wp:attachment":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/media?parent=6573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/categories?post=6573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/tags?post=6573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}