Skip to main content
Deno with SaaSKit

SaaSKit v1 is here: start your next SaaS in less than 60 seconds


When we set out to build SaaSKit, our goal was to make it as easy as possible to launch and customize a SaaS app that also delivered a fast end user experience. Since its built with Deno and Fresh, you get a modern development experience (e.g. native TypeScript support, an all-in-one toolchain, web standards APIs, and npm) with a next generation web framework that sends zero JavaScript to the client by default.

Since our initial launch several months ago, we’ve made plenty of improvements. Now, with SaaSKit v1.0, you can start a SaaS in less than 60 seconds, and get access to:

To see how quickly you can start a SaaS, check out this setup video:

Setting up a SaaS in less than 60 seconds

For more details on getting started, check out the readme.

SaaSKit users love how easy it is to get started:

the simplicity of setup, the readability of code, everything that I need nicely packed — Roberto M.

Let’s take a look at the features.

Pre-built Oauth 2.0 and user session management

Every SaaS needs user login, logout, and session management. SaaSKit now includes Oauth 2.0 that comes pre-configured to support popular providers such as Google, GitHub, Twitter, Facebook, Slack, Discord, and more.

Gif of user logging in via GitHub

Not only that, but this Oauth 2.0 implementation is lightweight and does not require third party dependencies as it’s built on Deno KV.

Subscription billing and Pricing page

Subscription billing and a pricing page are table stakes for any SaaS app. Getting started is as simple as creating a Stripe account, grabbing your Stripe secret key, and running a script:

Gif of running deno task init:stripe

A screenshot of the pricing page from the demo and one that comes default with SaaSKit.

Not only is it easy to get setup, but the pricing page is dynamic: it pulls your pricing plans from Stripe, and, if your users are signed in, it’ll know which plan they’re currently on so you can tailor the call to action.

Gif of user seeing a different Call To Action based on pricing

All of your pricing details can be managed directly in your Stripe portal.

Admin dashboard and analytics

As the owner of your SaaS, you want a quick way to see users and engagement of your product. We’ve added a simple, customizable admin area with usage reports, as well as a table of your users.

Screenshot of analytics dashboard

Screenshot of users table

These charts and tables are easily extensible and customizeable.

Zero-config, global database and queues

All SaaS requires managing state of its users and usage across sessions. Since SaaSKit is built on Deno, you have access to Deno KV, which allows you to add state without configuring and provisioning a database:

const db = await Deno.openKv();

If you host your SaaSKit on Deno Deploy, then Deno KV becomes a globally replicated, strongly consistent database.

In addition to managing state, you also have access to a zero-config, scalable messaging solution to help manage background processing in your SaaS with Deno Queues. You can offload work from your app or schedule work for the future to run asynchronously, without any config or provisioning of a serverless queues solution.

Here’s an example of asynchronously sending a welcome email with Deno Queues:

const db = await Deno.openKv();

db.listenQueue(async (msg) => {
  if (msg.type === "welcome_email") {
    await sendWelcomeEmail(msg.user_id);
  } else if (msg.type === "survey_email") {
    await sendSurveyEmail(msg.user_id);
  }
});

await db.enqueue(
  { type: "welcome_email", customer_id: 123 },
);

await db.enqueue(
  { type: "survey_email", customer_id: 123 },
  { delay: 259200000 }, // deliver in 3 days
);

More examples can be found in our Deno Queues announcement blog post.

These commonly used cloud services built into the Deno runtime make it easier to focus on building your product.

SEO markdown-powered blog with RSS feed

This release of SaaSKit comes with a markdown blog so you can begin publishing content, building domain authority for SEO, and generating inbound traffic for your SaaS.

Screenshot of blog

Not only is it easily customizable by editing the frontmatter and using Tailwind for styling, but it automatically generates an RSS feed that your users can subscribe to to stay up to date.

Since SaaSKit is built on Fresh, which is server-side rendered and sends zero JavaScript to the client by default, your app and blog is indexable by search engines and can easily get a perfect PageSpeed score.

What’s next?

Building a SaaS app today can be filled with tedious configuration, setting things up, and other steps that prevent you from building out your product for your users. We hope SaaSKit helps reduce many of those steps so it’s as easy as possible to go from idea to launch.

We’ll continue to iterate and add features to SaaSKit. Since it’s built with Fresh, many of its latest features are added to SaaSKit days later. Stay tuned for awesome new features such as view transitions and more.

We also have a growing community of SaaSKit and Fresh developers in our Discord. Stop by to share what you’re working on or ask technical questions to help your projects.

Your feedback is valuable in shaping the future of SaaSKit. If you want a particular feature or found a bug, please let us know in the issues.