[{"title":"Release of Tailwind Nextjs Starter Blog v2.0","date":"2023-08-05T00:00:00.000Z","tags":["next-js","tailwind","guide","feature"],"lastmod":"2023-08-05T00:00:00.000Z","draft":false,"summary":"Release of Tailwind Nextjs Starter Blog template v2.0, refactored with Nextjs App directory and React Server Components setup.Discover the new features and how to migrate from V1.","images":["/static/images/twitter-card.png"],"type":"Blog","readingTime":{"text":"10 min read","minutes":9.055,"time":543300,"words":1811},"slug":"release-of-tailwind-nextjs-starter-blog-v2.0","path":"blog/release-of-tailwind-nextjs-starter-blog-v2.0","filePath":"blog/release-of-tailwind-nextjs-starter-blog-v2.0.mdx","toc":[{"value":"Introduction","url":"#introduction","depth":2},{"value":"V1 to V2","url":"#v1-to-v2","depth":2},{"value":"Next.js App Directory and React Server Components","url":"#nextjs-app-directory-and-react-server-components","depth":2},{"value":"Typescript First","url":"#typescript-first","depth":2},{"value":"Contentlayer","url":"#contentlayer","depth":2},{"value":"Pliny","url":"#pliny","depth":2},{"value":"New Search Component","url":"#new-search-component","depth":2},{"value":"Algolia","url":"#algolia","depth":3},{"value":"Kbar","url":"#kbar","depth":3},{"value":"Styling and Layout Updates","url":"#styling-and-layout-updates","depth":2},{"value":"Theming","url":"#theming","depth":3},{"value":"New Layouts","url":"#new-layouts","depth":3},{"value":"Migration Recommendations","url":"#migration-recommendations","depth":2},{"value":"Conclusion","url":"#conclusion","depth":2},{"value":"Support","url":"#support","depth":2},{"value":"Licence","url":"#licence","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Release of Tailwind Nextjs Starter Blog v2.0","datePublished":"2023-08-05T00:00:00.000Z","dateModified":"2023-08-05T00:00:00.000Z","description":"Release of Tailwind Nextjs Starter Blog template v2.0, refactored with Nextjs App directory and React Server Components setup.Discover the new features and how to migrate from V1.","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/release-of-tailwind-nextjs-starter-blog-v2.0"}},{"title":"New features in v1","date":"2021-08-07T15:32:14.000Z","tags":["next-js","tailwind","guide"],"lastmod":"2021-02-01T00:00:00.000Z","draft":false,"summary":"An overview of the new features released in v1 - code block copy, multiple authors, frontmatter layout and more","layout":"PostSimple","bibliography":"references-data.bib","type":"Blog","readingTime":{"text":"12 min read","minutes":11.92,"time":715200,"words":2384},"slug":"new-features-in-v1","path":"blog/new-features-in-v1","filePath":"blog/new-features-in-v1.mdx","toc":[{"value":"Overview","url":"#overview","depth":2},{"value":"Theme colors","url":"#theme-colors","depth":2},{"value":"Xdm MDX compiler","url":"#xdm-mdx-compiler","depth":2},{"value":"Table of contents component","url":"#table-of-contents-component","depth":2},{"value":"Layouts","url":"#layouts","depth":2},{"value":"Adding new templates","url":"#adding-new-templates","depth":3},{"value":"Configuring a blog post frontmatter","url":"#configuring-a-blog-post-frontmatter","depth":3},{"value":"Extend","url":"#extend","depth":3},{"value":"Analytics","url":"#analytics","depth":2},{"value":"Blog comments system","url":"#blog-comments-system","depth":2},{"value":"Multiple authors","url":"#multiple-authors","depth":2},{"value":"Multiple authors in blog post","url":"#multiple-authors-in-blog-post","depth":3},{"value":"Copy button for code blocks","url":"#copy-button-for-code-blocks","depth":2},{"value":"Line highlighting and line numbers","url":"#line-highlighting-and-line-numbers","depth":2},{"value":"Newletter component (v1.1.3)","url":"#newletter-component-v113","depth":2},{"value":"Bibliography and Citations (v1.2.1)","url":"#bibliography-and-citations-v121","depth":2},{"value":"Self-hosted font (v1.5.0)","url":"#self-hosted-font-v150","depth":2},{"value":"Upgrade guide","url":"#upgrade-guide","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"New features in v1","datePublished":"2021-08-07T15:32:14.000Z","dateModified":"2021-02-01T00:00:00.000Z","description":"An overview of the new features released in v1 - code block copy, multiple authors, frontmatter layout and more","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/new-features-in-v1"}},{"title":"Introducing Multi-part Posts with Nested Routing","date":"2021-05-02T00:00:00.000Z","tags":["multi-author","next-js","feature"],"draft":false,"summary":"The blog template supports posts in nested sub-folders. This can be used to group posts of similar content e.g. a multi-part course. This post is itself an example of a nested route!","type":"Blog","readingTime":{"text":"1 min read","minutes":0.845,"time":50700,"words":169},"slug":"nested-route/introducing-multi-part-posts-with-nested-routing","path":"blog/nested-route/introducing-multi-part-posts-with-nested-routing","filePath":"blog/nested-route/introducing-multi-part-posts-with-nested-routing.mdx","toc":[{"value":"Nested Routes","url":"#nested-routes","depth":1},{"value":"How","url":"#how","depth":2},{"value":"Use Cases","url":"#use-cases","depth":2},{"value":"Note","url":"#note","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Introducing Multi-part Posts with Nested Routing","datePublished":"2021-05-02T00:00:00.000Z","dateModified":"2021-05-02T00:00:00.000Z","description":"The blog template supports posts in nested sub-folders. This can be used to group posts of similar content e.g. a multi-part course. This post is itself an example of a nested route!","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/nested-route/introducing-multi-part-posts-with-nested-routing"}},{"title":"Introducing Tailwind Nextjs Starter Blog","date":"2021-01-12T00:00:00.000Z","tags":["next-js","tailwind","guide"],"lastmod":"2024-08-16T00:00:00.000Z","draft":false,"summary":"Looking for a performant, out of the box template, with all the best in web technology to support your blogging needs? Checkout the Tailwind Nextjs Starter Blog template.","images":["/static/images/canada/mountains.jpg","/static/images/canada/toronto.jpg"],"authors":["default","sparrowhawk"],"type":"Blog","readingTime":{"text":"7 min read","minutes":6.055,"time":363300,"words":1211},"slug":"introducing-tailwind-nextjs-starter-blog","path":"blog/introducing-tailwind-nextjs-starter-blog","filePath":"blog/introducing-tailwind-nextjs-starter-blog.mdx","toc":[{"value":"Tailwind Nextjs Starter Blog","url":"#tailwind-nextjs-starter-blog","depth":1},{"value":"Examples","url":"#examples","depth":2},{"value":"Motivation","url":"#motivation","depth":2},{"value":"Features","url":"#features","depth":2},{"value":"Sample posts","url":"#sample-posts","depth":2},{"value":"Quick Start Guide","url":"#quick-start-guide","depth":2},{"value":"Development","url":"#development","depth":2},{"value":"Extend / Customize","url":"#extend--customize","depth":2},{"value":"Post","url":"#post","depth":2},{"value":"Frontmatter","url":"#frontmatter","depth":3},{"value":"Compose","url":"#compose","depth":3},{"value":"Deploy","url":"#deploy","depth":2},{"value":"Support","url":"#support","depth":2},{"value":"Licence","url":"#licence","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Introducing Tailwind Nextjs Starter Blog","datePublished":"2021-01-12T00:00:00.000Z","dateModified":"2024-08-16T00:00:00.000Z","description":"Looking for a performant, out of the box template, with all the best in web technology to support your blogging needs? Checkout the Tailwind Nextjs Starter Blog template.","image":"/static/images/canada/mountains.jpg","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/introducing-tailwind-nextjs-starter-blog"}},{"title":"Deriving the OLS Estimator","date":"2020-12-21T00:00:00.000Z","tags":["next js","math","ols"],"draft":false,"summary":"How to derive the OLS Estimator with matrix notation and a tour of math typesetting using markdown with the help of KaTeX.","type":"Blog","readingTime":{"text":"3 min read","minutes":2.81,"time":168600,"words":562},"slug":"deriving-ols-estimator","path":"blog/deriving-ols-estimator","filePath":"blog/deriving-ols-estimator.mdx","toc":[{"value":"Introduction","url":"#introduction","depth":1},{"value":"Deriving the OLS Estimator","url":"#deriving-the-ols-estimator","depth":1},{"value":"Least Squares","url":"#least-squares","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Deriving the OLS Estimator","datePublished":"2020-12-21T00:00:00.000Z","dateModified":"2020-12-21T00:00:00.000Z","description":"How to derive the OLS Estimator with matrix notation and a tour of math typesetting using markdown with the help of KaTeX.","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/deriving-ols-estimator"}},{"title":"Images in Next.js","date":"2020-11-11T00:00:00.000Z","tags":["next js","guide"],"draft":false,"summary":"In this article we introduce adding images in the tailwind starter blog and the benefits and limitations of the next/image component.","authors":["sparrowhawk"],"type":"Blog","readingTime":{"text":"2 min read","minutes":1.95,"time":117000,"words":390},"slug":"guide-to-using-images-in-nextjs","path":"blog/guide-to-using-images-in-nextjs","filePath":"blog/guide-to-using-images-in-nextjs.mdx","toc":[{"value":"Introduction","url":"#introduction","depth":1},{"value":"Usage","url":"#usage","depth":1},{"value":"Benefits","url":"#benefits","depth":1},{"value":"Limitations","url":"#limitations","depth":1}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Images in Next.js","datePublished":"2020-11-11T00:00:00.000Z","dateModified":"2020-11-11T00:00:00.000Z","description":"In this article we introduce adding images in the tailwind starter blog and the benefits and limitations of the next/image component.","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/guide-to-using-images-in-nextjs"}},{"title":"Markdown Guide","date":"2019-10-11T00:00:00.000Z","tags":["github","guide"],"draft":false,"summary":"Markdown cheatsheet for all your blogging needs - headers, lists, images, tables and more! An illustrated guide based on GitHub Flavored Markdown.","type":"Blog","readingTime":{"text":"4 min read","minutes":3.155,"time":189300,"words":631},"slug":"github-markdown-guide","path":"blog/github-markdown-guide","filePath":"blog/github-markdown-guide.mdx","toc":[{"value":"Introduction","url":"#introduction","depth":1},{"value":"What is Markdown?","url":"#what-is-markdown","depth":1},{"value":"Syntax guide","url":"#syntax-guide","depth":1},{"value":"Headers","url":"#headers","depth":2},{"value":"This is a h1 tag","url":"#this-is-a-h1-tag","depth":1},{"value":"This is a h2 tag","url":"#this-is-a-h2-tag","depth":2},{"value":"This is a h4 tag","url":"#this-is-a-h4-tag","depth":4},{"value":"Emphasis","url":"#emphasis","depth":2},{"value":"Lists","url":"#lists","depth":2},{"value":"Unordered","url":"#unordered","depth":3},{"value":"Ordered","url":"#ordered","depth":3},{"value":"Images","url":"#images","depth":2},{"value":"Links","url":"#links","depth":2},{"value":"Blockquotes","url":"#blockquotes","depth":2},{"value":"Inline code","url":"#inline-code","depth":2},{"value":"Syntax highlighting","url":"#syntax-highlighting","depth":2},{"value":"Footnotes","url":"#footnotes","depth":2},{"value":"Task Lists","url":"#task-lists","depth":2},{"value":"Tables","url":"#tables","depth":2},{"value":"Strikethrough","url":"#strikethrough","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Markdown Guide","datePublished":"2019-10-11T00:00:00.000Z","dateModified":"2019-10-11T00:00:00.000Z","description":"Markdown cheatsheet for all your blogging needs - headers, lists, images, tables and more! An illustrated guide based on GitHub Flavored Markdown.","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/github-markdown-guide"}},{"title":"The Time Machine","date":"2018-08-15T00:00:00.000Z","tags":["writings","book","reflection"],"draft":false,"summary":"The Time Traveller (for so it will be convenient to speak of him) was expounding a recondite matter to us. His pale grey eyes shone and twinkled, and his usually pale face was flushed and animated...","type":"Blog","readingTime":{"text":"9 min read","minutes":8.53,"time":511800,"words":1706},"slug":"the-time-machine","path":"blog/the-time-machine","filePath":"blog/the-time-machine.mdx","toc":[{"value":"The Time Machine by H. G. Wells","url":"#the-time-machine-by-h-g-wells","depth":1},{"value":"Introduction","url":"#introduction","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"The Time Machine","datePublished":"2018-08-15T00:00:00.000Z","dateModified":"2018-08-15T00:00:00.000Z","description":"The Time Traveller (for so it will be convenient to speak of him) was expounding a recondite matter to us. His pale grey eyes shone and twinkled, and his usually pale face was flushed and animated...","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/the-time-machine"}},{"title":"O Canada","date":"2017-07-15T00:00:00.000Z","tags":["holiday","canada","images"],"draft":false,"summary":"The scenic lands of Canada featuring maple leaves, snow-capped mountains, turquoise lakes and Toronto. Take in the sights in this photo gallery exhibition and see how easy it is to replicate with some MDX magic and tailwind classes.","images":["/static/images/canada/mountains.jpg"],"layout":"PostBanner","type":"Blog","readingTime":{"text":"2 min read","minutes":1.18,"time":70800,"words":236},"slug":"pictures-of-canada","path":"blog/pictures-of-canada","filePath":"blog/pictures-of-canada.mdx","toc":[{"value":"Gallery","url":"#gallery","depth":1},{"value":"Implementation","url":"#implementation","depth":1},{"value":"Photo Credits","url":"#photo-credits","depth":3}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"O Canada","datePublished":"2017-07-15T00:00:00.000Z","dateModified":"2017-07-15T00:00:00.000Z","description":"The scenic lands of Canada featuring maple leaves, snow-capped mountains, turquoise lakes and Toronto. Take in the sights in this photo gallery exhibition and see how easy it is to replicate with some MDX magic and tailwind classes.","image":"/static/images/canada/mountains.jpg","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/pictures-of-canada"}},{"title":"Sample .md file","date":"2016-03-08T00:00:00.000Z","tags":["markdown","code","features"],"draft":false,"summary":"Example of a markdown file with code blocks and syntax highlighting","type":"Blog","readingTime":{"text":"1 min read","minutes":0.595,"time":35700,"words":119},"slug":"code-sample","path":"blog/code-sample","filePath":"blog/code-sample.mdx","toc":[{"value":"Inline Highlighting","url":"#inline-highlighting","depth":2},{"value":"Code Blocks","url":"#code-blocks","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Sample .md file","datePublished":"2016-03-08T00:00:00.000Z","dateModified":"2016-03-08T00:00:00.000Z","description":"Example of a markdown file with code blocks and syntax highlighting","image":"/static/images/twitter-card.png","url":"https://tailwind-nextjs-starter-blog.vercel.app/blog/code-sample"}}]