A look at denoland/saaskit: 1.3k stars on GitHub, written primarily in TypeScript, tracked under the Frontend category. A modern SaaS template built on Fresh.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Navigate to http://localhost:8000 to start playing with your new SaaS app
with Stripe enabled.
Note: You can use
Stripe's test credit cards to make test
payments while in Stripe's test mode.
Bootstrap the Database (Optional)
Use the following commands to work with your local Deno KV database:
deno task db:seed - Populate the database with data from the
Hacker News API.
deno task db:dump > backup.json - Write all database entries to
backup.json.
deno task db:restore backup.json - Restore the database from backup.json.
deno task db:reset - Reset the database. This is not recoverable.
Customize and Extend
Global Constants
The utils/constants.ts file includes global values used
across various aspects of the codebase. Update these values according to your
needs.
Create a Blog Post
Create a .md file in the /posts with the filename as the slug of
the blog post URL. E.g. a file with path /posts/hello-there.md will have
path /blog/hello-there.
Write the
Front Matter
then Markdown text to define
the properties and content of the blog post.
---
title: This is my first blog post!
publishedAt: 2022-11-04T15:00:00.000Z
summary: This is an excerpt of my first blog post.
---
# Heading 1
Hello, world!
```javascript
console.log("Hello World");
```
Start the server:
deno task start
Navigate to the URL of the newly created blog post. E.g.
http://localhost:8000/blog/hello-there.
See other examples of blog post files in /posts.
Themes
You can customize theme options such as spacing, color, etc. By default, Deno
SaaSKit comes with primary and secondary colors predefined within
tailwind.config.ts. Change these values to match your desired color scheme.
Cover Image
To replace the cover image, replace the /static/cover.png
file. If you'd like to change the filename, also be sure to change the
imageUrl property in the <Head /> component.
Deploy to Production
This section assumes that a
local development environment is already set up.
Navigate to your
GitHub OAuth application settings page.
Set the Homepage URL to your production URL. E.g.
https://hunt.deno.land.
Set the Authorization callback URL to your production URL with the
/callback path. E.g. https://hunt.deno.land/callback.
Copy all the environment variables in your .env file to your production
environment.
Deploy to Deno Deploy
Clone this repository for your SaaSKit project.
Update your .github/workflows/deploy.yml file as needed. Hints are in the
file.
Sign into Deno Deploy with your GitHub
account.
Click + New Project.
Select your GitHub organization or user, repository, and branch.
Click Edit mode and select Build step with GitHub Actions as the
build mode and main.ts as the entry point.
Click Add Build Step and wait until the GitHub Actions Workflow is
complete.
Once the deployment is complete, click on Settings and add the production
environmental variables, then hit Save.
You should now be able to visit your newly deployed SaaS website.
Deploy to any VPS with Docker
Docker makes it easy to deploy and run your Deno app to
any virtual private server (VPS). This section will show you how to do that with
AWS Lightsail and Digital Ocean.
Install Docker on your machine, which should also
install
the docker CLI.
Create an account on Docker Hub, a registry for
Docker container images.
Note: the Dockerfile, .dockerignore and
docker-compose.yml files come included with this
repo.
Grab the SHA1 commit hash by running the following command in the repo's root
folder:
# get the SHA1 commit hash of the current branch
git rev-parse HEAD
Copy the output of the above and paste it as DENO_DEPLOYMENT_ID in your
.env file. This value is needed to enable caching on Fresh in a Docker
deployment.
Finally, refer to these guides for using Docker to deploy Deno to specific
platforms:
Amazon Lightsail
Digital Ocean
Google Cloud Run
Set Up Stripe for Production (Optional)
Activate your Stripe account.
Navigate to the
API keys page on the
Developers dashboard.
In the Standard keys section, click Reveal test key on the Secret
key table row.
Click to copy the value and paste to your STRIPE_SECRET_KEY environment
variable in your production environment.
STRIPE_SECRET_KEY=<Stripe secret key>
Navigate to the Webhooks page to
register your webhook endpoint.
Click Add endpoint.
Set Endpoint URL to your production URL with the /api/stripe-webhooks
path. E.g. https://hunt.deno.land/api/stripe-webhooks.
Set Listen to to Events on your account.
Set customer.subscription.created and customer.subscription.deleted as
events to listen to.
Click Add endpoint.
Optionally,
set up your Stripe branding
to customize the look and feel of your Stripe checkout page.
Google Analytics (Optional)
Set GA4_MEASUREMENT_ID in your production environment to enable Google
Analytics.
Note: it is not recommended to set this locally, otherwise your tests and
debugging requests will be logged.
REST API Reference
GET /api/items
Get all items in chronological order. Add ?cursor=<cursor> URL parameter for
pagination. Limited to 10 items per page.
// https://hunt.deno.land/api/items/01H5379J1VZ7EB54KSCSQSCRJC
{
"id": "01H5379J1VZ7EB54KSCSQSCRJC",
"userLogin": "lambtron",
"url": "https://github.com/Savory/saaskit-danet",
"title": "saaskit-danet: a modern SaaS template built for Fresh for SSR and Danet for the API",
"score": 10
}
GET /api/users
Get all users in alphabetical order by GitHub login. Add ?cursor=<cursor> URL
parameter for pagination. Limited to 10 users per page.
For the user, the website should be fast, secure and have a design with clear
intent. Additionally, the HTML should be well-structured and indexable by search
engines. The defining metrics for these goals are:
A perfect PageSpeed Insights score.
Fully valid HTML, as measured by
W3C's Markup Validation Service.
For the developer, the codebase should minimize the steps and amount of time
required to get up and running. From there, customization and extension of the
web app should be simple. The characteristics of a well-written codebase also
apply, such as:
Easy to understand
Modular functionality
Clearly defined behavior with validation through tests
Community and Resources
Join the #saaskit channel in Deno's Discord to meet
other SaaSKit developers, ask questions, and get unblocked.
Here's a list of articles, how to guides, and videos about SaaSKit:
How does denoland/saaskit compare to other Frontend projects?
denoland/saaskit is tracked by TopGit in the Frontend category, with 1.3k GitHub stars and written in TypeScript. Browse the Frontend topic page on TopGit to compare it against similar projects by stars and activity.
Is denoland/saaskit open source?
Yes — denoland/saaskit ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/denoland/saaskit.
What else is in the Frontend space?
denoland/saaskit is tracked by TopGit under the Frontend category, alongside 5 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is denoland/saaskit?
denoland/saaskit (denoland/saaskit) is a TypeScript project on GitHub. From the project's own README: A modern SaaS template built on Fresh.
Where do I read more about denoland/saaskit?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/denoland/saaskit is the definitive source.
Why is denoland/saaskit categorized under Frontend?
TopGit places denoland/saaskit in the Frontend category based on its GitHub topics and description (tagged: "deno", "fresh", "saas"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Curious whether saaskit is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about saaskit.