{"id":13495002,"url":"https://github.com/vercel/platforms","last_synced_at":"2025-05-13T15:11:12.888Z","repository":{"id":37046433,"uuid":"449942590","full_name":"vercel/platforms","owner":"vercel","description":"A full-stack Next.js app with multi-tenancy and custom domain support. Built with Next.js App Router and the Vercel Domains API.","archived":false,"fork":false,"pushed_at":"2025-05-08T13:30:29.000Z","size":7180,"stargazers_count":6059,"open_issues_count":64,"forks_count":839,"subscribers_count":127,"default_branch":"main","last_synced_at":"2025-05-08T14:38:36.727Z","etag":null,"topics":["custom-domains","multi-tenancy","multi-tenant-applications","nextjs","prisma","tailwindcss","vercel","vercel-ai","vercel-blob","vercel-postgres"],"latest_commit_sha":null,"homepage":"https://app.vercel.pub","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/vercel.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-20T03:35:39.000Z","updated_at":"2025-05-08T13:30:33.000Z","dependencies_parsed_at":"2023-02-19T02:46:02.361Z","dependency_job_id":"b22f2931-8a86-4781-aa9d-55dcc93fe83c","html_url":"https://github.com/vercel/platforms","commit_stats":{"total_commits":376,"total_committers":42,"mean_commits":8.952380952380953,"dds":"0.14095744680851063","last_synced_commit":"7e3355678a56d9368e49cd090d729701ba4eff57"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Fplatforms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Fplatforms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Fplatforms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Fplatforms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vercel","download_url":"https://codeload.github.com/vercel/platforms/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253969259,"owners_count":21992263,"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":["custom-domains","multi-tenancy","multi-tenant-applications","nextjs","prisma","tailwindcss","vercel","vercel-ai","vercel-blob","vercel-postgres"],"created_at":"2024-07-31T19:01:30.232Z","updated_at":"2025-05-13T15:11:07.877Z","avatar_url":"https://github.com/vercel.png","language":"TypeScript","readme":"\u003ca href=\"https://app.vercel.pub\"\u003e\n  \u003cimg alt=\"Platforms Starter Kit\" src=\"/public/thumbnail.png\"\u003e\n  \u003ch1 align=\"center\"\u003ePlatforms Starter Kit\u003c/h1\u003e\n\u003c/a\u003e\n\n\u003cp align=\"center\"\u003e\n  The \u003cem\u003eall-in-one\u003c/em\u003e starter kit \u003cbr/\u003e\n  for building multi-tenant applications.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#introduction\"\u003e\u003cstrong\u003eIntroduction\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://app.vercel.pub/\"\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#deploy-your-own\"\u003e\u003cstrong\u003eDeploy Your Own\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://vercel.com/guides/nextjs-multi-tenant-application\"\u003e\u003cstrong\u003eGuide\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://steven.vercel.pub/kitchen-sink\"\u003e\u003cstrong\u003eKitchen Sink\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#contributing\"\u003e\u003cstrong\u003eContributing\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n## Introduction\n\nThe [Platforms Starter Kit](https://app.vercel.pub/) is a full-stack Next.js app with multi-tenancy and custom domain support. Built with [Next.js App Router](https://nextjs.org/docs/app), [Vercel Postgres](https://vercel.com/storage/postgres) and the [Vercel Domains API](https://vercel.com/docs/rest-api/endpoints#domains).\n\nHere's a quick 30-second demo:\n\nhttps://github.com/vercel/platforms/assets/28986134/bd370257-0c27-4cf5-8a56-28589f36f0ef\n\n## Features\n\n1. **Multi-tenancy:** Programmatically assign unlimited custom domains, subdomains, and SSL certificates to your users using the [Vercel Domains API](https://vercel.com/docs/rest-api/endpoints#domains)\n2. **Performance**: Fast \u0026 beautiful blog posts cached via [Vercel's Edge Network](https://vercel.com/docs/concepts/edge-network/overview), with the ability to invalidate the cache on-demand (when users make changes) using [Incremental Static Regeneration](https://vercel.com/docs/concepts/next.js/incremental-static-regeneration) + Next.js' `revalidateTag` API\n3. **AI Editor**: AI-powered Markdown editor for a Notion-style writing experience powered by [Novel](https://novel.sh/)\n4. **Image Uploads**: Drag \u0026 drop / copy \u0026 paste image uploads, backed by [Vercel Blob](https://vercel.com/storage/blob)\n5. **Custom styles**: Custom fonts, 404 pages, favicons, sitemaps for each site via the [Next.js file-based Metadata API](https://nextjs.org/docs/app/api-reference/file-conventions/metadata)\n6. **Dynamic OG Cards**: Each blog post comes with a dynamic OG image powered by [@vercel/og](https://vercel.com/docs/concepts/functions/edge-functions/og-image-generation)\n7. **Dark Mode**: For a better user experience at night\n8. **Multi-tenant Preview URLs**: Preview changes to your client sites using [Vercel Preview URLs](https://vercel.com/docs/deployments/generated-urls). [Learn more](https://vercel.com/guides/nextjs-multi-tenant-application#3.-multi-tenant-preview-urls).\n\n\u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://images.ctfassets.net/e5382hct74si/k7XpXIE0rDsHCAYvkKhff/ff44c07588068d8fefa334cd6a318c8a/CleanShot_2023-07-05_at_08.39.02.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://images.ctfassets.net/e5382hct74si/7tiAitb8kdgUGktycr540c/d33f2834f9356bce25e0721c4ebe4f9a/CleanShot_2023-07-05_at_08.39.10.png\"\u003e\n    \u003cimg alt=\"Demo\" src=\"https://images.ctfassets.net/e5382hct74si/7tiAitb8kdgUGktycr540c/d33f2834f9356bce25e0721c4ebe4f9a/CleanShot_2023-07-05_at_08.39.10.png\"\u003e\n\u003c/picture\u003e\n\n## Deploy Your Own\n\nDeploy your own version of this starter kit with Vercel.\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?demo-title=Platforms+Starter+Kit\u0026demo-description=A+template+for+site+builders+and+low-code+tools.\u0026demo-url=https%3A%2F%2Fdemo.vercel.pub%2F\u0026demo-image=%2F%2Fimages.ctfassets.net%2Fe5382hct74si%2F40JwjdHlPr0Z575MPYbxUA%2Fd5903afc68cb34569a3886293414c37c%2FOG_Image.png\u0026project-name=Platforms+Starter+Kit\u0026repository-name=platforms-starter-kit\u0026repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fplatforms\u0026from=templates\u0026env=NEXT_PUBLIC_ROOT_DOMAIN%2CNEXTAUTH_SECRET%2CAUTH_GITHUB_ID%2CAUTH_GITHUB_SECRET%2CAUTH_BEARER_TOKEN%2CPROJECT_ID_VERCEL%2CTEAM_ID_VERCEL%2COPENAI_API_KEY\u0026envDescription=These%20environment%20variables%20are%20required%20to%20run%20this%20application.%20The%20link%20below%20describes%20how%20to%20get%20them.\u0026envLink=https%3A%2F%2Fvercel.com%2Fguides%2Fnextjs-multi-tenant-application%233.-add-environment-variables\u0026stores=%5B%7B%22type%22%3A%22postgres%22%7D%5D)\n\nYou can also [read the guide](https://vercel.com/guides/nextjs-multi-tenant-application) to learn how to develop your own version of this template.\n\n## What is a multi-tenant application?\n\nMulti-tenant applications serve multiple customers across different subdomains/custom domains with a single unified codebase.\n\nFor example, our demo is a multi-tenant application:\n\n- Subdomain: [demo.vercel.pub](http://demo.vercel.pub)\n- Custom domain: [platformize.co](http://platformize.co) (maps to [demo.vercel.pub](http://demo.vercel.pub))\n- Build your own: [app.vercel.pub](http://app.vercel.pub)\n\nAnother example is [Hashnode](https://vercel.com/customers/hashnode), a popular blogging platform. Each writer has their own unique `.hashnode.dev` subdomain for their blog:\n\n- [eda.hashnode.dev](https://eda.hashnode.dev/)\n- [katycodesstuff.hashnode.dev](https://katycodesstuff.hashnode.dev/)\n- [akoskm.hashnode.dev](https://akoskm.hashnode.dev/)\n\nUsers can also map custom domains to their `.hashnode.dev` subdomain:\n\n- [akoskm.com](https://akoskm.com/) → [akoskm.hashnode.dev](https://akoskm.hashnode.dev/)\n\nWith the Platforms Starter Kit, you can offer unlimited custom domains at no extra cost to your customers as a premium feature, without having to worry about custom nameservers or configuring SSL certificates.\n\n## Examples of platforms\n\nVercel customers like [Hashnode](https://vercel.com/customers/hashnode), [Super](https://super.so), and [Cal.com](https://cal.com) are building scalable platforms on top of Vercel and Next.js. There are multiple types of platforms you can build with this starter kit:\n\n### 1. Content creation platforms\n\nThese are content-heavy platforms (blogs) with simple, standardized page layouts and route structure.\n\n\u003e “With Vercel, we spend less time managing our infrastructure and more time delivering value to our users.” — Sandeep Panda, Co-founder, Hashnode\n\n1. [Hashnode](https://hashnode.com)\n2. [Mintlify](https://mintlify.com/)\n3. [Read.cv](https://read.cv/)\n\n### 2. Website \u0026 e-commerce store builders\n\nNo-code site builders with customizable pages.\n\nBy using Next.js and Vercel, [Super](https://super.so/) has fast, globally distributed websites with a no-code editor (Notion). Their customers get all the benefits of Next.js (like [Image Optimization](https://nextjs.org/docs/basic-features/image-optimization)) without touching any code.\n\n1. [Super.so](https://super.so)\n2. [Typedream](https://typedream.com)\n3. [Makeswift](https://www.makeswift.com/)\n\n### 3. B2B2C platforms\n\nMulti-tenant authentication, login, and access controls.\n\nWith Vercel and Next.js, platforms like [Instatus](https://instatus.com) are able to create status pages that are _10x faster_ than competitors.\n\n1. [Instatus](https://instatus.com/)\n2. [Cal.com](https://cal.com/)\n3. [Dub](https://dub.co/)\n\n## Built on open source\n\nThis working demo site was built using the Platforms Starter Kit and:\n\n- [Next.js](https://nextjs.org/) as the React framework\n- [Tailwind](https://tailwindcss.com/) for CSS styling\n- [Drizzle](https://orm.drizzle.team/) as the ORM for database access\n- [Novel](https://novel.sh/) for the WYSIWYG editor\n- [Vercel Postgres](https://vercel.com/storage/postgres) for the database\n- [Vercel Blob](https://vercel.com/storage/blob) for image uploads\n- [NextAuth.js](https://next-auth.js.org/) for authentication\n- [Tremor](https://tremor.so/) for charts\n- [Vercel](http://vercel.com/) for deployment\n\n## Contributing\n\n- [Start a discussion](https://github.com/vercel/platforms/discussions) with a question, piece of feedback, or idea you want to share with the team.\n- [Open an issue](https://github.com/vercel/platforms/issues) if you believe you've encountered a bug with the starter kit.\n\n## Author\n\n- Steven Tey ([@steventey](https://twitter.com/steventey))\n\n## License\n\nThe MIT License.\n\n---\n\n\u003ca aria-label=\"Vercel logo\" href=\"https://vercel.com\"\u003e\n  \u003cimg src=\"https://badgen.net/badge/icon/Made%20by%20Vercel?icon=zeit\u0026label\u0026color=black\u0026labelColor=black\"\u003e\n\u003c/a\u003e\n","funding_links":[],"categories":["TypeScript","Free Boilerplates","Uncategorized","Web Development","前端开发框架及项目","vercel","Starter"],"sub_categories":["Uncategorized","React \u0026 Next.js","React工具库"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvercel%2Fplatforms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvercel%2Fplatforms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvercel%2Fplatforms/lists"}