{"id":25880173,"url":"https://github.com/danielmackay/nextjs-personal-blog","last_synced_at":"2025-03-02T13:31:02.017Z","repository":{"id":71461425,"uuid":"583448441","full_name":"danielmackay/nextjs-personal-blog","owner":"danielmackay","description":"Personal blog","archived":false,"fork":false,"pushed_at":"2025-02-13T11:37:29.000Z","size":96470,"stargazers_count":6,"open_issues_count":15,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-13T12:33:11.626Z","etag":null,"topics":["blog","nextjs","tailwindcss"],"latest_commit_sha":null,"homepage":"https://www.dandoescode.com","language":"MDX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielmackay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-29T20:14:07.000Z","updated_at":"2025-02-13T11:37:31.000Z","dependencies_parsed_at":"2023-03-09T21:15:17.531Z","dependency_job_id":"bf8bb842-47c4-468c-acf5-1657c1f5236c","html_url":"https://github.com/danielmackay/nextjs-personal-blog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielmackay%2Fnextjs-personal-blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielmackay%2Fnextjs-personal-blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielmackay%2Fnextjs-personal-blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielmackay%2Fnextjs-personal-blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielmackay","download_url":"https://codeload.github.com/danielmackay/nextjs-personal-blog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241512986,"owners_count":19974669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","nextjs","tailwindcss"],"created_at":"2025-03-02T13:31:01.449Z","updated_at":"2025-03-02T13:31:01.994Z","avatar_url":"https://github.com/danielmackay.png","language":"MDX","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![DDC Icon](/public/static/branding/icon-dark.png)\n\n\u003c/div\u003e\n\n# [Dan Does Code Blog](https://www.dandoescode.com/)\n\n\u003e Based off [tailwind-nextjs-starter-blog](https://GitHub.com/timlrx/tailwind-nextjs-starter-blog)\n\nThis is a [Next.js](https://nextjs.org/), [Tailwind CSS](https://tailwindcss.com/) blogging starter template. Version 2 is based on Next App directory with [React Server Component](https://nextjs.org/docs/getting-started/react-essentials#server-components) and uses [Contentlayer](https://www.contentlayer.dev/) to manage markdown content.\n\nProbably the most feature-rich Next.js markdown blogging template out there. Easily configurable and customizable. Perfect as a replacement to existing Jekyll and Hugo individual blogs.\n\nCheck out the documentation below to get started.\n\n## Installation\n\n```bash\n yarn\n```\n\n## Development\n\nIf you're on windows you'll first need to run the following command in PowerShell:\n\n```bash\n $env:PWD = Get-Location\n```\n\nFirst, run the development server:\n\n```bash\n yarn dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nEdit the layout in `app` or content in `data`. With live reloading, the pages auto-updates as you edit them.\n\n## Features\n\n- Next.js with Typescript\n- [Contentlayer](https://www.contentlayer.dev/) to manage content logic\n- Easy styling customization with [Tailwind 3.0](https://tailwindcss.com/blog/tailwindcss-v3) and primary color attribute\n- [MDX - write JSX in markdown documents!](https://mdxjs.com/)\n- Near perfect lighthouse score - [Lighthouse report](https://www.webpagetest.org/result/230805_BiDcBQ_4H7)\n- Lightweight, 85kB first load JS\n- Mobile-friendly view\n- Light and dark theme\n- Font optimization with [next/font](https://nextjs.org/docs/app/api-reference/components/font)\n- Integration with [pliny](https://github.com/timlrx/pliny) that provides:\n  - Multiple analytics options including [Umami](https://umami.is/), [Plausible](https://plausible.io/), [Simple Analytics](https://simpleanalytics.com/), Posthog and Google Analytics\n  - Comments via [Giscus](https://github.com/laymonage/giscus), [Utterances](https://github.com/utterance/utterances) or Disqus\n  - Newsletter API and component with support for Mailchimp, Buttondown, Convertkit, Klaviyo, Revue, and Emailoctopus\n  - Command palette search with [Kbar](https://github.com/timc1/kbar) or Algolia\n- Server-side syntax highlighting with line numbers and line highlighting via [rehype-prism-plus](https://github.com/timlrx/rehype-prism-plus)\n- Math display supported via [KaTeX](https://katex.org/)\n- Citation and bibliography support via [rehype-citation](https://github.com/timlrx/rehype-citation)\n- Automatic image optimization via [next/image](https://nextjs.org/docs/basic-features/image-optimization)\n- Support for tags - each unique tag will be its own page\n- Support for multiple authors\n- 3 different blog layouts\n- 2 different blog listing layouts\n- Support for nested routing of blog posts\n- Projects page\n- Preconfigured security headers\n- SEO friendly with RSS feed, sitemaps and more!\n\n## Sample posts\n\n- [A markdown guide](https://tailwind-nextjs-starter-blog.vercel.app/blog/github-markdown-guide)\n- [Learn more about images in Next.js](https://tailwind-nextjs-starter-blog.vercel.app/blog/guide-to-using-images-in-nextjs)\n- [A tour of math typesetting](https://tailwind-nextjs-starter-blog.vercel.app/blog/deriving-ols-estimator)\n- [Simple MDX image grid](https://tailwind-nextjs-starter-blog.vercel.app/blog/pictures-of-canada)\n- [Example of long prose](https://tailwind-nextjs-starter-blog.vercel.app/blog/the-time-machine)\n- [Example of Nested Route Post](https://tailwind-nextjs-starter-blog.vercel.app/blog/nested-route/introducing-multi-part-posts-with-nested-routing)\n\n## Extend / Customize\n\n`data/siteMetadata.js` - contains most of the site related information which should be modified for a user's need.\n\n`data/authors/default.md` - default author information (required). Additional authors can be added as files in `data/authors`.\n\n`data/projectsData.js` - data used to generate styled card on the projects page.\n\n`data/headerNavLinks.js` - navigation links.\n\n`data/logo.svg` - replace with your own logo.\n\n`data/blog` - replace with your own blog posts.\n\n`public/static` - store assets such as images and favicons.\n\n`tailwind.config.js` and `css/tailwind.css` - tailwind configuration and stylesheet which can be modified to change the overall look and feel of the site.\n\n`css/prism.css` - controls the styles associated with the code blocks. Feel free to customize it and use your preferred prismjs theme e.g. [prism themes](https://github.com/PrismJS/prism-themes).\n\n`contentlayer.config.ts` - configuration for Contentlayer, including definition of content sources and MDX plugins used. See [Contentlayer documentation](https://www.contentlayer.dev/docs/getting-started) for more information.\n\n`components/MDXComponents.js` - pass your own JSX code or React component by specifying it over here. You can then use them directly in the `.mdx` or `.md` file. By default, a custom link, `next/image` component, table of contents component and Newsletter form are passed down. Note that the components should be default exported to avoid [existing issues with Next.js](https://github.com/vercel/next.js/issues/51593).\n\n`layouts` - main templates used in pages:\n\n- There are currently 3 post layouts available: `PostLayout`, `PostSimple` and `PostBanner`. `PostLayout` is the default 2 column layout with meta and author information. `PostSimple` is a simplified version of `PostLayout`, while `PostBanner` features a banner image.\n- There are 2 blog listing layouts: `ListLayout`, the layout used in version 1 of the template with a search bar and `ListLayoutWithTags`, currently used in version 2, which omits the search bar but includes a sidebar with information on the tags.\n\n`app` - pages to route to. Read the [Next.js documentation](https://nextjs.org/docs/app) for more information.\n\n`next.config.js` - configuration related to Next.js. You need to adapt the Content Security Policy if you want to load scripts, images etc. from other domains.\n\n## Post\n\nContent is modelled using [Contentlayer](https://www.contentlayer.dev/), which allows you to define your own content schema and use it to generate typed content objects. See [Contentlayer documentation](https://www.contentlayer.dev/docs/getting-started) for more information.\n\n### Frontmatter\n\nFrontmatter follows [Hugo's standards](https://gohugo.io/content-management/front-matter/).\n\nPlease refer to `contentlayer.config.ts` for an up to date list of supported fields. The following fields are supported:\n\n```\ntitle (required)\ndate (required)\ntags (optional)\nlastmod (optional)\ndraft (optional)\nsummary (optional)\nimages (optional)\nauthors (optional list which should correspond to the file names in `data/authors`. Uses `default` if none is specified)\nlayout (optional list which should correspond to the file names in `data/layouts`)\ncanonicalUrl (optional, canonical url for the post for SEO)\n```\n\nHere's an example of a post's frontmatter:\n\n```\n---\ntitle: 'Introducing Tailwind Nexjs Starter Blog'\ndate: '2021-01-12'\nlastmod: '2021-01-18'\ntags: ['next-js', 'tailwind', 'guide']\ndraft: false\nsummary: '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.'\nimages: ['/static/images/canada/mountains.jpg', '/static/images/canada/toronto.jpg']\nauthors: ['default', 'sparrowhawk']\nlayout: PostLayout\ncanonicalUrl: https://tailwind-nextjs-starter-blog.vercel.app/blog/introducing-tailwind-nextjs-starter-blog\n---\n```\n\n## License\n\n[MIT](https://github.com/danielmackay/nextjs-personal-blog/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielmackay%2Fnextjs-personal-blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielmackay%2Fnextjs-personal-blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielmackay%2Fnextjs-personal-blog/lists"}