Loading video...

Video Failed to Load

Go Home

Introducing Platforms Starter Kit v2 → It's an open-source Next.js template for you to build multi-tenant apps with custom domains in days, not months. Built with Next.js App Router and the @Vercel Domains API.

305,191 views • 2 years ago •via X (Twitter)

60 Comments

Steven Tey's profile picture
Steven Tey2 years ago

Features: ◆ Assign unlimited domains/SSL certs ◆ On-demand ISR via `revalidateTag` ◆ AI text editor via ◆ Custom styles for each site ◆ Image uploads w/ Vercel Blob ◆ Dynamic OG images ◆ Dark mode Code is fully open-source:

Steven Tey's profile picture
Steven Tey2 years ago

A year ago, we launched the first version of this starter kit. Since then, we've seen many platforms scale to tens of thousands of custom domains on Vercel: ◆ @Hashnode ◆ @Super_ ◆ @incident_io ◆ @beyondmenu ◆ @mintlify ◆ @momentworld ◆ @dubdotsh

Steven Tey's profile picture
Steven Tey2 years ago

This template is jam-packed with lots of useful features for building platforms on Vercel. 1. Programmatically managing custom domains Forget manually setting up custom server rewrite rules with NGINX. Vercel's Domains API makes things simple:

Steven Tey's profile picture
Steven Tey2 years ago

2. On-demand cache invalidation By using @nextjs' new `revalidateTag` API + Vercel's ISR feature ( we are able to cache content pages + revalidate them when users make changes to them. Best part? Changes get propagated in <500ms, globally ⚡

Steven Tey's profile picture
Steven Tey2 years ago

3. AI-powered Markdown-based WYSIWYG editor The new Platforms Starter Kit now comes built-in with intelligent AI autocompletion – powered by ✨ Watch it in action 👇

Steven Tey's profile picture
Steven Tey2 years ago

4. Custom fonts, 404 pages, favicons, sitemaps for each site Thanks to @nextjs file-based Metadata API, we are able to customize the look and feel of each site. Best part? `revalidateTag` allows us to perform cache invalidations faster and more efficiently when changes happen.

Steven Tey's profile picture
Steven Tey2 years ago

5. Image Uploads with Vercel Blob This works for both inline Markdown images and thumbnail images 👇 Note: Blob is still in private beta – but feel free to DM me for access!

Steven Tey's profile picture
Steven Tey2 years ago

6. Dynamic OG images for blog posts This template also uses @nextjs's `ImageResponse` constructor ( to craft dynamic OG images at the edge. Here's an example (layout & style inspired by @calcom):

Steven Tey's profile picture
Steven Tey2 years ago

7. Dark mode No @vercel / @nextjs template is complete without dark mode support 😁 The Platforms Starter Kit comes with dark mode out of the box for a better user experience at night 🌃

Steven Tey's profile picture
Steven Tey2 years ago

This has been a WIP for the last couple of months, so we're incredibly excited to finally ship this! Can't wait to see what you guys build with this 🤩

Steven Tey's profile picture
Steven Tey2 years ago

Update: We're live on @ProductHunt 🤩 Would appreciate an upvote/comment/review – thank you! 🖤

chronark — oss/acc's profile picture
chronark — oss/acc2 years ago

@nextjs @vercel This guy ships! amazing work as always, steven!

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel Thanks man!! Appreciate the support as always 😁

Ian Hunter's profile picture
Ian Hunter2 years ago

@nextjs @vercel Defacto @stripe integration would be 🔑

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel @stripe 👀 cc: @angjiang

swyx 🇸🇬's profile picture
swyx 🇸🇬2 years ago

@nextjs @vercel yesssss pls keep investing in this @jaredpalmer its strategically superimpt

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel @jaredpalmer 🖤 appreciate you swyx!!

Amos's profile picture
Amos2 years ago

@nextjs @vercel I'll be yoinking this for my next project 👀

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel

Karan Ganesan's profile picture
Karan Ganesan2 years ago

@nextjs @vercel the text colours are not super readable on dark mode (no browser extensions affect it)

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel oh crap, will fix, thank you!

Steven Tey's profile picture
Steven Tey2 years ago

@vercel @nextjs @leeerob Incredible work 🤯🤩

Maximilian Kaske 🏓's profile picture
Maximilian Kaske 🏓2 years ago

@nextjs @vercel Sooo good 🤩

Paul Vu's profile picture
Paul Vu2 years ago

@nextjs @vercel I got a black screen after created a site. I use on mobile.

Steven Tey's profile picture
Steven Tey2 years ago

@SagoLabCom @nextjs @vercel Did the site get created? What's the URL for the site?

h4ck☆'s profile picture
h4ck☆2 years ago

@nextjs @vercel huge!!! great work as usual steven. 🔥🙏

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel Thank you!! :)

Piotr Obidowski's profile picture
Piotr Obidowski2 years ago

@nextjs @vercel Wow! Amazing job 🔥

Elie Steinbock's profile picture
Elie Steinbock2 years ago

@nextjs @vercel Great stuff. Posted a video tutorial on it just now 😄

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel Damn you're fast!! Your video actually helped me find a bug in the dark mode styles, so double thank you for that! 🙏

Raphael Amponsah's profile picture
Raphael Amponsah2 years ago

@nextjs @vercel This is a game changer

Ahmad Awais's profile picture
Ahmad Awais2 years ago

@nextjs @vercel Lots of work went into this. Excellent! 👌

Raphael Amponsah's profile picture
Raphael Amponsah2 years ago

@nextjs @vercel So it is open source to run on vercel? That would be cool

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel it's fully open-source!!

Jon Kurtis ⚡'s profile picture
Jon Kurtis ⚡2 years ago

@nextjs @vercel Dibs on this.

wei-wei's profile picture
wei-wei2 years ago

@nextjs @vercel @thisissukh_ 🔥

Jo Santana 's profile picture
Jo Santana 2 years ago

@nextjs @vercel Exactly what I've been asking for. Thanks!

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel LFG glad to hear that! 🤩

Josue Monteiro's profile picture
Josue Monteiro2 years ago

@nextjs @vercel This is why @vercel is going to be a major player in the BaaS business competing with AWS, GCP and Azure. The commitment that they have made to the developer experience is beyond amazing.

Usama Khaled ✪'s profile picture
Usama Khaled ✪2 years ago

@nextjs @vercel This is cool. :) I might build a simple blogging tool on top of it.

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel Can't wait to see what you build 👀

Gonçalo Margalho's profile picture
Gonçalo Margalho2 years ago

@nextjs @vercel @steventey I was testing it, in the custom domain, using cname says is that correct?

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel oh no, that's not correct, sorry about that – will fix it! It should be ` :)

🟢 gaurang.tsx's profile picture
🟢 gaurang.tsx2 years ago

@nextjs @vercel Thanks for the blueprint @steventey I'm working on an app currently that will def. need multi-tenancy

Diogo Ribeiro's profile picture
Diogo Ribeiro2 years ago

@nextjs @vercel can't wait to make my own blogging platform

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel Can't wait to see what you build! 👀

Probably Human's profile picture
Probably Human2 years ago

@nextjs @vercel Awesome. Is there a directory with all starter kits available?

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel Yessir!!

Dave Yen's profile picture
Dave Yen2 years ago

@nextjs @vercel thx for this! can you hook me up w/ access to Blob Storage? [email protected]

Niaz Morshed's profile picture
Niaz Morshed2 years ago

@nextjs @vercel Great!! 👏🚀 btw, music is very similar to my product intro 😂

Raphael Amponsah's profile picture
Raphael Amponsah2 years ago

@nextjs @vercel Hopefully we get cli command for it like create-next-app

Daan's profile picture
Daan2 years ago

@nextjs @vercel @SimonBlok

Wesley— oss/acc's profile picture
Wesley— oss/acc2 years ago

@nextjs @vercel This is awesome Steven 👏 cc @voorvaart 👀

0xRealDev's profile picture
0xRealDev2 years ago

@nextjs @vercel @steventey What do you think about wildcard domain approach for the sub domain part? I have tried the wildcard subdomain and for me it looks bit slow. thinking about migrating to domains api.

James Singleton's profile picture
James Singleton2 years ago

@nextjs @vercel Oh no the tweet can't be found 🥲

Steven Tey's profile picture
Steven Tey2 years ago

@nextjs @vercel 👀 looking into it!

lucas's profile picture
lucas2 years ago

@nextjs @vercel do you have any suggestions on how to handle separate database for each tenant?

Daniel Still's profile picture
Daniel Still2 years ago

@nextjs @vercel This is so awesome for freelance work as well as for creating saas apps!

Raphael Amponsah's profile picture
Raphael Amponsah2 years ago

@nextjs @vercel So please can it only be run on vercel or other platforms

Christian Esmann's profile picture
Christian Esmann1 year ago

I just launched an all-in-one template for cross-platform development, based on the stack I use myself everyday. Expo, NextJS, TypeScript, Tailwind, Firebase, AppsFlyer, Authentication, Analytics, In-App Purchases, Stripe and a lot more, setup by default.

Related Videos