{"id":24835843,"url":"https://github.com/CoodingPenguin/devlog-nextjs","last_synced_at":"2025-10-14T10:30:41.240Z","repository":{"id":224296891,"uuid":"761830023","full_name":"CoodingPenguin/devlog-nextjs","owner":"CoodingPenguin","description":"🐧 CoodingPenguin's devlog, built with Next.js","archived":false,"fork":false,"pushed_at":"2024-06-14T17:28:03.000Z","size":39328,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-26T13:38:12.742Z","etag":null,"topics":["devlog","nextjs","prism","tailwindcss"],"latest_commit_sha":null,"homepage":"https://coodingpenguin.xyz/","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/CoodingPenguin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"timlrx"}},"created_at":"2024-02-22T15:12:42.000Z","updated_at":"2025-03-05T13:20:11.000Z","dependencies_parsed_at":"2024-03-23T03:33:01.505Z","dependency_job_id":"395b0afd-6a63-4c22-9b2f-98009c96114f","html_url":"https://github.com/CoodingPenguin/devlog-nextjs","commit_stats":null,"previous_names":["coodingpenguin/devlog","coodingpenguin/devlog-nextjs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CoodingPenguin/devlog-nextjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoodingPenguin%2Fdevlog-nextjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoodingPenguin%2Fdevlog-nextjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoodingPenguin%2Fdevlog-nextjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoodingPenguin%2Fdevlog-nextjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoodingPenguin","download_url":"https://codeload.github.com/CoodingPenguin/devlog-nextjs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoodingPenguin%2Fdevlog-nextjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018780,"owners_count":26086452,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["devlog","nextjs","prism","tailwindcss"],"created_at":"2025-01-31T04:51:57.606Z","updated_at":"2025-10-14T10:30:39.564Z","avatar_url":"https://github.com/CoodingPenguin.png","language":"MDX","funding_links":["https://github.com/sponsors/timlrx"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg alt=\"logo\" src=\"./public/static/favicons/logo.png\" /\u003e\n    \u003ch1\u003e코딩하는펭귄의 저장소\u003c/h1\u003e\n    \u003cp\u003eBuilt with \u003ca href=\"https://github.com/timlrx/tailwind-nextjs-starter-blog\"\u003etailwind-nextjs-starter-blog\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## Quick Start Guide\n\n1. Clone the repo\n\n```bash\nnpx degit 'timlrx/tailwind-nextjs-starter-blog'\n```\n\n2. Personalize `siteMetadata.js` (site related information)\n3. Modify the content security policy in `next.config.js` if you want to use\n   other analytics provider or a commenting solution other than giscus.\n4. Personalize `authors/default.md` (main author)\n5. Modify `projectsData.ts`\n6. Modify `headerNavLinks.ts` to customize navigation links\n7. Add blog posts\n8. Deploy on Vercel\n\n## Installation\n\n```bash\nyarn\n```\n\nPlease note, that if you are using Windows, you may need to run:\n\n```bash\nset PWD=\"$(pwd)\"\n```\n\n## Development\n\nFirst, run the development server:\n\n```bash\nyarn 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## 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## Deploy\n\n**Vercel**  \nThe easiest way to deploy the template is to deploy on [Vercel](https://vercel.com). Check out the [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n\n**Netlify**\n[Netlify](https://www.netlify.com/)’s Next.js runtime configures enables key Next.js functionality on your website without the need for additional configurations. Netlify generates serverless functions that will handle Next.js functionalities such as server-side rendered (SSR) pages, incremental static regeneration (ISR), `next/images`, etc.\n\nSee [Next.js on Netlify](https://docs.netlify.com/integrations/frameworks/next-js/overview/#next-js-runtime) for suggested configuration values and more details.\n\n**Static hosting services / GitHub Pages / S3 / Firebase etc.**\n\n1. Add `output: 'export'` in `next.config.js`. See [static exports documentation](https://nextjs.org/docs/app/building-your-application/deploying/static-exports#configuration) for more information.\n2. Comment out `headers()` from `next.config.js`.\n3. Add `unoptimized: true` to the `images` key in `next.config.js`:\n\n   Alternatively, to continue using `next/image`, you can use an alternative image optimization provider such as Imgix, Cloudinary or Akamai. See [image optimization documentation](https://nextjs.org/docs/app/building-your-application/deploying/static-exports#image-optimization) for more details.\n\n4. Remove `api` folder and components which call the server-side function such as the Newsletter component. Not technically required and the site will build successfully, but the APIs cannot be used as they are server-side functions.\n5. Run `yarn build`. The generated static content is in the `out` folder.\n6. Deploy the `out` folder to your hosting service of choice or run `npx serve out` to view the website locally.\n\n**Note**: Deploying on Github pages require addition modifications to the base path. Please refer to the FAQ for more information.\n\n## Licence\n\n[MIT](https://github.com/timlrx/tailwind-nextjs-starter-blog/blob/main/LICENSE) © [Timothy Lin](https://www.timlrx.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoodingPenguin%2Fdevlog-nextjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCoodingPenguin%2Fdevlog-nextjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoodingPenguin%2Fdevlog-nextjs/lists"}