{"id":15002314,"url":"https://github.com/farischt/blog","last_synced_at":"2026-02-04T04:08:38.271Z","repository":{"id":202768986,"uuid":"708087880","full_name":"farischt/blog","owner":"farischt","description":null,"archived":false,"fork":false,"pushed_at":"2023-11-01T20:12:35.000Z","size":1408,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-18T12:15:37.762Z","etag":null,"topics":["blog","jamstack","nextjs","vercel"],"latest_commit_sha":null,"homepage":"https://chtatou.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/farischt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-21T13:44:14.000Z","updated_at":"2023-11-01T20:13:02.000Z","dependencies_parsed_at":"2023-10-23T23:30:11.435Z","dependency_job_id":"1df3b540-c047-447e-896c-80f1ce009771","html_url":"https://github.com/farischt/blog","commit_stats":null,"previous_names":["farischt/blog"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farischt%2Fblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farischt%2Fblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farischt%2Fblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farischt%2Fblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/farischt","download_url":"https://codeload.github.com/farischt/blog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243146347,"owners_count":20243685,"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","jamstack","nextjs","vercel"],"created_at":"2024-09-24T18:49:33.055Z","updated_at":"2026-02-04T04:08:38.228Z","avatar_url":"https://github.com/farischt.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Next.js Blog with a Native Authoring Experience\u003c!-- omit in toc --\u003e\n\nThis starter is a statically generated blog that uses [Next.js][nextjs] for the frontend and [Sanity][sanity-homepage] to handle its content. It comes with a native Sanity Studio that offers features like real-time collaboration, instant side-by-side content previews, and intuitive editing.\n\nThe Studio connects to Sanity Content Lake, which gives you hosted content APIs with a flexible query language, on-demand image transformations, powerful patching, and more. You can use this starter to kick-start a blog or learn these technologies.\n\n[![Deploy with Vercel](https://vercel.com/button)][vercel-deploy]\n\n\u003e **Note**\n\u003e\n\u003e This starter uses the `/pages` directory for Next.js routing.\n\u003e\n\u003e The template will be migrated to the currently experimental [/app][app-dir] directory\n\u003e when Vercel announce that it is production ready.\n\n## Features\n\n- A performant, static blog with editable posts, authors, and site settings\n- A native and customizable authoring environment, accessible on `yourblog.com/studio`\n- Real-time and collaborative content editing with fine-grained revision history\n- Side-by-side instant content preview that works across your whole site\n- Support for block content and the most advanced custom fields capability in the industry\n- Webhook-triggered Incremental Static Revalidation; no need to wait for a rebuild to publish new content\n- Free and boosted Sanity project with unlimited admin users, free content updates, and pay-as-you-go for API overages\n- A project with starter-friendly and not too heavy-handed TypeScript and Tailwind.css\n\n## Table of Contents\n\n- [Features](#features)\n- [Table of Contents](#table-of-contents)\n- [Project Overview](#project-overview)\n  - [Important files and folders](#important-files-and-folders)\n- [Configuration](#configuration)\n  - [Step 1. Set up the environment](#step-1-set-up-the-environment)\n  - [Step 2. Set up the project locally](#step-2-set-up-the-project-locally)\n  - [Step 3. Run Next.js locally in development mode](#step-3-run-nextjs-locally-in-development-mode)\n  - [Step 4. Deploy to production](#step-4-deploy-to-production)\n- [Questions and Answers](#questions-and-answers)\n  - [It doesn't work! Where can I get help?](#it-doesnt-work-where-can-i-get-help)\n  - [How can I remove the \"Next steps\" block from my blog?](#how-can-i-remove-the-next-steps-block-from-my-blog)\n  - [How can I set up Incremental Static Revalidation?](#how-can-i-set-up-incremental-static-revalidation)\n- [Next steps](#next-steps)\n\n## Project Overview\n\n| [Blog](https://nextjs-blog.sanity.build)                                                                          | [Studio](https://nextjs-blog.sanity.build/studio)                                                                          |\n| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |\n| ![Blog](https://github.com/sanity-io/nextjs-blog-cms-sanity-v3/assets/81981/adc1a90e-644e-456a-b630-ac44e4636e24) | ![Sanity Studio](https://github.com/sanity-io/nextjs-blog-cms-sanity-v3/assets/81981/93a39af1-a806-45ca-8648-0cc7e2295eea) |\n\n### Important files and folders\n\n| File(s)                                     | Description                                              |\n| ------------------------------------------- | -------------------------------------------------------- |\n| `sanity.config.ts`                          |  Config file for Sanity Studio                           |\n| `sanity.cli.ts`                             |  Config file for Sanity CLI                              |\n| `/pages/studio/[[...index]].tsx`            |  Where Sanity Studio is mounted                          |\n| `/pages/api/revalidate.ts`                  |  Serverless route for triggering ISR                     |\n| `/pages/api/draft.ts`                       |  Serverless route for triggering Draft mode              |\n| `/schemas`                                  |  Where Sanity Studio gets its content types from         |\n| `/plugins`                                  |  Where the advanced Sanity Studio customization is setup |\n| `/lib/sanity.api.ts`,`/lib/sanity.image.ts` | Configuration for the Sanity Content Lake client         |\n| `/components/PreviewProvider.tsx`           | Configuration for the live Preview Mode                  |\n\n## Configuration\n\n### Step 1. Set up the environment\n\nUse the Deploy Button below. It will let you deploy the starter using [Vercel](https://vercel.com?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=next-sanity-example) as well as connect it to your Sanity Content Lake using [the Sanity Vercel Integration][integration].\n\n[![Deploy with Vercel](https://vercel.com/button)][vercel-deploy]\n\n### Step 2. Set up the project locally\n\n[Clone the repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) that was created for you on your GitHub account. Once cloned, run the following command from the project's root directory:\n\n```bash\nnpx vercel link\n```\n\nDownload the environment variables needed to connect Next.js and the Studio to your Sanity project:\n\n```bash\nnpx vercel env pull\n```\n\n### Step 3. Run Next.js locally in development mode\n\n```bash\nnpm install \u0026\u0026 npm run dev\n```\n\nWhen you run this development server, the changes you make in your frontend and studio configuration will be applied live using hot reloading.\n\nYour blog should be up and running on [http://localhost:3000][localhost-3000]! You can create and edit content on [http://localhost:3000/studio][localhost-3000-studio].\n\n### Step 4. Deploy to production\n\nTo deploy your changes to production you use `git`:\n\n```bash\ngit add .\ngit commit\ngit push\n```\n\nAlternatively, you can deploy without a `git` hosting provider using the Vercel CLI:\n\n```bash\nnpx vercel --prod\n```\n\n## Questions and Answers\n\n### It doesn't work! Where can I get help?\n\nIn case of any issues or questions, you can post:\n\n- [GitHub Discussions for Next.js][vercel-github]\n- [Sanity's GitHub Discussions][sanity-github]\n- [Sanity's Community Slack][sanity-community]\n\n### How can I remove the \"Next steps\" block from my blog?\n\nYou can remove it by deleting the `IntroTemplate` component in `/components/IndexPage.tsx`.\n\n### How can I set up Incremental Static Revalidation?\n\nGo to the serverless function code in `/pages/api/revalidate.ts`. In the code comments, you'll find instructions for how to set up [ISR][vercel-isr].\n\n## Next steps\n\n- [Join our Slack community to ask questions and get help][sanity-community]\n- [How to edit my content structure?][sanity-schema-types]\n- [How to query content?][sanity-groq]\n- [What is content modelling?][sanity-content-modelling]\n\n[vercel-deploy]: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fsanity-io%2Fnextjs-blog-cms-sanity-v3\u0026repository-name=blog-nextjs-sanity\u0026project-name=blog-nextjs-sanity\u0026demo-title=Blog%20with%20Built-in%20Content%20Editing\u0026demo-description=A%20Sanity-powered%20blog%20with%20built-in%20content%20editing%20%26%20instant%20previews\u0026demo-url=https%3A%2F%2Fnextjs-blog.sanity.build%2F%3Futm_source%3Dvercel%26utm_medium%3Dreferral\u0026demo-image=https%3A%2F%2Fuser-images.githubusercontent.com%2F81981%2F197501516-c7c8092d-0305-4abe-afb7-1e896ef7b90a.png\u0026integration-ids=oac_hb2LITYajhRQ0i4QznmKH7gx\u0026external-id=nextjs;template=nextjs-blog-cms-sanity-v3\n[integration]: https://www.sanity.io/docs/vercel-integration?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[`.env.local.example`]: .env.local.example\n[nextjs]: https://github.com/vercel/next.js\n[sanity-create]: https://www.sanity.io/get-started/create-project?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[sanity-deployment]: https://www.sanity.io/docs/deployment?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[sanity-homepage]: https://www.sanity.io?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[sanity-community]: https://slack.sanity.io/\n[sanity-schema-types]: https://www.sanity.io/docs/schema-types?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[sanity-github]: https://github.com/sanity-io/sanity/discussions\n[sanity-groq]: https://www.sanity.io/docs/groq?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[sanity-content-modelling]: https://www.sanity.io/docs/content-modelling?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[sanity-webhooks]: https://www.sanity.io/docs/webhooks?utm_source=github.com\u0026utm_medium=referral\u0026utm_campaign=nextjs-v3vercelstarter\n[localhost-3000]: http://localhost:3000\n[localhost-3000-studio]: http://localhost:3000/studio\n[vercel-isr]: https://nextjs.org/blog/next-12-1#on-demand-incremental-static-regeneration-beta\n[vercel]: https://vercel.com\n[vercel-github]: https://github.com/vercel/next.js/discussions\n[app-dir]: https://beta.nextjs.org/docs/routing/fundamentals#the-app-directory\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarischt%2Fblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffarischt%2Fblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarischt%2Fblog/lists"}