[{"_path":"/blog","_draft":false,"_partial":false,"_empty":true,"title":"Recent Posts","description":"A collection of things I learnt using Nuxt 3, Tailwind and Firebase.","subtitle":"The Blog","button":"browse all posts","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:blog.md","_source":"content","_file":"blog.md","_extension":"md"},{"_path":"/cta","_draft":false,"_partial":false,"_empty":true,"title":"Cta","description":"","headline1":"ready to dive in?","headline2":"deploy your blog today.","button":"Get started","link":"/blog/deploy-a-blog-in-under-5-minutes","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:cta.md","_source":"content","_file":"cta.md","_extension":"md"},{"_path":"/editor","_draft":false,"_partial":false,"_empty":true,"title":"A Rich Text Editor To Write","description":"The Text Editor from TipTap comes with image uploads to Cloudinary and YouTube video embeds. Use Headings, Code, Code Block and Highlight to make your writing stand out. With built-in authentication, and a beautiful, responsive front-end, you can start building your blog right away.","excerpt":{"type":"root","children":[]},"subtitle":"BLOGGING MADE EASY","cta":"github","cta_link":"https://github.com/balsimpson/blogger","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:editor.md","_source":"content","_file":"editor.md","_extension":"md"},{"_path":"/help","_draft":false,"_partial":false,"_empty":false,"title":"help","description":"Some things to help you get started:","excerpt":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"help"},"children":[{"type":"text","value":"Help"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some things to help you get started:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#getting-started"},"children":[{"type":"text","value":"Getting Started"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#configuration"},"children":[{"type":"text","value":"Configuration"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#tags"},"children":[{"type":"text","value":"Tags"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#components"},"children":[{"type":"text","value":"Components"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#components"},"children":[{"type":"text","value":"Content"}]}]}]},{"type":"element","tag":"h2","props":{"id":"tags"},"children":[{"type":"text","value":"Tags"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suggestions for tags are in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/tags.md"}]},{"type":"text","value":". Add or delete items with a hyphen."}]},{"type":"element","tag":"h2","props":{"id":"website-content"},"children":[{"type":"text","value":"Website Content"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is a brief description of the content sections of the website. Edit the associated component or markdown file to edit."}]},{"type":"element","tag":"h3","props":{"id":"hero"},"children":[{"type":"text","value":"Hero"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Component: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./components/AppHero.vue"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/hero.md"}]}]}]},{"type":"element","tag":"h3","props":{"id":"cta"},"children":[{"type":"text","value":"CTA"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Component: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./components/AppCta.vue"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/cta.md"}]}]}]},{"type":"element","tag":"h3","props":{"id":"blog"},"children":[{"type":"text","value":"Blog"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Component: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./components/AppCta.vue"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/cta.md"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\ndolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\npossimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learn more about the line-clamp plugin →"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"p","props":{"className":["line-clamp-3","md:line-clamp-none"]},"children":[{"type":"text","value":"\n  Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\n  dolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\n  possimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit.\n"}]},{"type":"text","value":"\nLearn more about the line-clamp plugin →\n"},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"h2","props":{"id":"configuration"},"children":[{"type":"text","value":"Configuration"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To get started, you need to have two things:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://www.blogger.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Blogger"}]},{"type":"text","value":" account"}]}]},{"type":"element","tag":"p","props":{"className":["line-clamp-3","md:line-clamp-none"]},"children":[{"type":"text","value":"\n  Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\n  dolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\n  possimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit.\n"}]},{"type":"text","value":"\nLearn more about the line-clamp plugin →\n"},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"p","props":{"className":["line-clamp-3","md:line-clamp-none"]},"children":[{"type":"text","value":"\n  Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\n  dolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\n  possimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit.\n"}]},{"type":"text","value":"\nLearn more about the line-clamp plugin →\n"},{"type":"element","tag":"h2","props":{"id":"getting-started"},"children":[{"type":"text","value":"Getting Started"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To get started, you need to have two things:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://www.blogger.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Blogger"}]},{"type":"text","value":" account"}]}]}]},"name":"help","body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"help"},"children":[{"type":"text","value":"Help"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some things to help you get started:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#getting-started"},"children":[{"type":"text","value":"Getting Started"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#configuration"},"children":[{"type":"text","value":"Configuration"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#tags"},"children":[{"type":"text","value":"Tags"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#components"},"children":[{"type":"text","value":"Components"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#components"},"children":[{"type":"text","value":"Content"}]}]}]},{"type":"element","tag":"h2","props":{"id":"tags"},"children":[{"type":"text","value":"Tags"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suggestions for tags are in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/tags.md"}]},{"type":"text","value":". Add or delete items with a hyphen."}]},{"type":"element","tag":"h2","props":{"id":"website-content"},"children":[{"type":"text","value":"Website Content"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is a brief description of the content sections of the website. Edit the associated component or markdown file to edit."}]},{"type":"element","tag":"h3","props":{"id":"hero"},"children":[{"type":"text","value":"Hero"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Component: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./components/AppHero.vue"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/hero.md"}]}]}]},{"type":"element","tag":"h3","props":{"id":"cta"},"children":[{"type":"text","value":"CTA"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Component: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./components/AppCta.vue"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/cta.md"}]}]}]},{"type":"element","tag":"h3","props":{"id":"blog"},"children":[{"type":"text","value":"Blog"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Component: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./components/AppCta.vue"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content: "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./content/cta.md"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\ndolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\npossimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learn more about the line-clamp plugin →"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"p","props":{"className":["line-clamp-3","md:line-clamp-none"]},"children":[{"type":"text","value":"\n  Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\n  dolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\n  possimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit.\n"}]},{"type":"text","value":"\nLearn more about the line-clamp plugin →\n"},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"h2","props":{"id":"configuration"},"children":[{"type":"text","value":"Configuration"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To get started, you need to have two things:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://www.blogger.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Blogger"}]},{"type":"text","value":" account"}]}]},{"type":"element","tag":"p","props":{"className":["line-clamp-3","md:line-clamp-none"]},"children":[{"type":"text","value":"\n  Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\n  dolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\n  possimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit.\n"}]},{"type":"text","value":"\nLearn more about the line-clamp plugin →\n"},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Line-clamp\nThe @tailwindcss/line-clamp plugin adds line-clamp-{lines} classes you can use to truncate text to a fixed number of lines."}]},{"type":"element","tag":"p","props":{"className":["line-clamp-3","md:line-clamp-none"]},"children":[{"type":"text","value":"\n  Et molestiae hic earum repellat aliquid est doloribus delectus. Enim illum odio porro ut omnis\n  dolor debitis natus. Voluptas possimus deserunt sit delectus est saepe nihil. Qui voluptate\n  possimus et quia. Eligendi voluptas voluptas dolor cum. Rerum est quos quos id ut molestiae fugit.\n"}]},{"type":"text","value":"\nLearn more about the line-clamp plugin →\n"},{"type":"element","tag":"h2","props":{"id":"getting-started"},"children":[{"type":"text","value":"Getting Started"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To get started, you need to have two things:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://www.blogger.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Blogger"}]},{"type":"text","value":" account"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"tags","depth":2,"text":"Tags"},{"id":"website-content","depth":2,"text":"Website Content","children":[{"id":"hero","depth":3,"text":"Hero"},{"id":"cta","depth":3,"text":"CTA"},{"id":"blog","depth":3,"text":"Blog"}]},{"id":"configuration","depth":2,"text":"Configuration"},{"id":"getting-started","depth":2,"text":"Getting Started"}]}},"_type":"markdown","_id":"content:help.md","_source":"content","_file":"help.md","_extension":"md"},{"_path":"/hero","_draft":false,"_partial":false,"_empty":true,"title":"Hero","description":"In just 5 minutes, have your own blog up and running. Built on <a href=\"https://v3.nuxtjs.org/\" target=\"_blank\" class=\"font-bold text-cyan-600\">Nuxt 3</a> and <a href=\"https://tailwindcss.com\" target=\"_blank\" class=\"font-bold text-teal-600\">Tailwind CSS</a>. With a rich text editor from <a href=\"https://tiptap.dev\" target=\"_blank\" class=\"font-bold text-red-500\">TipTap</a>. Comes with an admin panel with <a href=\"https://console.firebase.google.com\" target=\"_blank\" class=\"px-2 font-bold text-white bg-black rounded\">Firebase</a> authetication.","headline1":"Deploy your","headline2":"blog online","button":"<a href=\"https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fbalsimpson%2Fblogger&env=FIREBASE_API_KEY,FIREBASE_PROJECT_ID,CLOUDINARY_NAME,CLOUDINARY_UPLOAD_PRESET&envDescription=Create%20a%20project%20on%20Firebase%20and%20add%20a%20web%20app%20to%20get%20the%20Firebase%20Project%20ID%20and%20API%20key.%20Create%20an%20unsigned%20upload%20preset%20on%20Cloudinary%20for%20the%20name%20and%20upload%20preset..&project-name=my-blog&repo-name=my-blog&redirect-url=https%3A%2F%2Ftinkr.in%2Fdeploy%2Fsuccess&developer-id=LRBwkQtNyDUMfg7ZBCsanhDp\" target=\"_blank\" class=\"bg-[#1174ef] transition px-4 py-3 rounded text-white hover:bg-[#003270] dark:hover:bg-[#003270]\">Deploy on Vercel</a>","image":"/demo_editor_image.png","image_dark":"/demo_editor_image_dark.png","editor_description":"The Text Editor from TipTap comes with image uploads to <span class=\"font-bold\">Cloudinary</span> and <span class=\"font-bold\">YouTube</span> video embeds. Use Headings, Code Block and Highlight to make your writing stand out. With built-in authentication, you can start blogging right away.","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:hero.md","_source":"content","_file":"hero.md","_extension":"md"},{"_path":"/tags","_draft":false,"_partial":false,"_empty":true,"title":"Tags","description":"","items":["meta tags","composable","nuxt 3","firebase","tailwindcss"],"body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:tags.md","_source":"content","_file":"tags.md","_extension":"md"}]