{"id":22928193,"url":"https://github.com/cdoremus/todos-deno-saaskit","last_synced_at":"2026-05-18T06:39:40.103Z","repository":{"id":265587808,"uuid":"627043972","full_name":"cdoremus/todos-deno-saaskit","owner":"cdoremus","description":"Demos deno-saaskit","archived":false,"fork":false,"pushed_at":"2023-04-18T19:59:04.000Z","size":863,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-05T14:47:08.694Z","etag":null,"topics":["deno","denofresh"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdoremus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-04-12T17:06:03.000Z","updated_at":"2025-04-24T13:19:47.000Z","dependencies_parsed_at":"2024-11-30T03:15:37.760Z","dependency_job_id":null,"html_url":"https://github.com/cdoremus/todos-deno-saaskit","commit_stats":null,"previous_names":["cdoremus/todos-deno-saaskit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cdoremus/todos-deno-saaskit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdoremus%2Ftodos-deno-saaskit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdoremus%2Ftodos-deno-saaskit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdoremus%2Ftodos-deno-saaskit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdoremus%2Ftodos-deno-saaskit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdoremus","download_url":"https://codeload.github.com/cdoremus/todos-deno-saaskit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdoremus%2Ftodos-deno-saaskit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33167931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["deno","denofresh"],"created_at":"2024-12-14T09:17:49.840Z","updated_at":"2026-05-18T06:39:40.087Z","avatar_url":"https://github.com/cdoremus.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deno SaaSKit\n\n\u003e Warning: this project is in beta. Design, workflows, and user accounts are\n\u003e subject to change.\n\n[![Discord Chat](https://img.shields.io/discord/684898665143206084?logo=discord\u0026style=social)](https://discord.gg/deno)\n\n[Deno SaaSKit](https://deno.com/saaskit) is an open-sourced, highly performant\ntemplate for building your SaaS quickly and easily.\n\n## Features\n\n- [No build step](https://deno.com/blog/you-dont-need-a-build-step#non-building-with-deno-and-fresh)\n- Deno's built-in [formatter](https://deno.land/manual/tools/formatter),\n  [linter](https://deno.land/manual/tools/linter) and\n  [test runner](https://deno.land/manual/basics/testing) and TypeScript support.\n- User authentication with [Supabase Auth](https://supabase.com/auth), including\n  email/password and OAuth flows.\n- Session management\n- Database management with [Supabase Database](https://supabase.com/database)\n  and Row-Level Security (RLS).\n- Billing management with [Stripe](https://stripe.com/).\n- [Fresh](https://fresh.deno.dev/) as the web framework and\n  [Tailwind CSS](https://tailwindcss.com/) as the CSS framework.\n\nWant to know where Deno SaaSKit is headed? Check out\n**[our roadmap](https://github.com/denoland/saaskit/issues/60)**.\n\n## Getting Started Locally\n\n### Prerequisites\n\n- [Deno](https://deno.com/manual/getting_started/installation)\n- [Docker](https://docs.docker.com/engine/install/)\n- [Git](https://github.com/git-guides/install-git)\n- [A free Stripe account](https://stripe.com)\n- [Stripe CLI](https://stripe.com/docs/stripe-cli#install)\n- [A free Supabase account](https://supabase.com)\n- [Supabase CLI](https://supabase.com/docs/guides/cli)\n\n### Setup the repo\n\n1. Clone the repo:\n\n```\ngit clone https://github.com/denoland/saaskit.git\ncd saaskit\n```\n\n2. Create a `.env` file to store environmental variables:\n\n```\ncp .example.env .env\n```\n\n### Auth and Database (Supabase)\n\nThe values of these environmental variables will be gathered in the following\nsteps.\n\n1. While Docker is running, start the Supabase services:\n\n```\nsupabase start\n```\n\nThis will automatically configure the database tables and their settings for us.\n\n2. Copy the values of the printed Supabase `API URL`, `anon key`, and\n   `service_role key` variables into the environmental variables in your `.env`\n   file as `SUPABASE_URL`, `SUPABASE_ANON_KEY`, and `SUPABASE_SERVICE_KEY`,\n   respectively.\n\n### Payments and Subscriptions (Stripe)\n\n1. Copy your Stripe secret key as `STRIPE_SECRET_KEY` into your `.env` file. We\n   recommend using the test key for your development environment.\n2. Run `deno task init:stripe` and follow the instructions. This automatically\n   creates your \"Premium tier\" product and configures the Stripe customer\n   portal.\n\n\u003e Note: go to [tools/init_stripe.ts](tools/init_stripe.ts) if you'd like to\n\u003e learn more about how the `init:stripe` task works.\n\n3. Listen locally to Stripe events:\n\n```\nstripe listen --forward-to localhost:8000/api/subscription\n```\n\n4. Copy the webhook signing secret to [.env](.env) as `STRIPE_WEBHOOK_SECRET`.\n\n### Running the Server\n\nFinally, start the server by running:\n\n```\ndeno task start\n```\n\nGo to [http://localhost:8000](http://localhost:8000) to begin playing with your\nnew SaaS app.\n\n\u003e Note: You can use\n\u003e [Stripe's test credit cards](https://stripe.com/docs/testing) to make test\n\u003e payments while in Stripe's test mode.\n\n## Deploying to Production\n\nThis section shows how to get your SaaS ready for production and deploy it.\n\n### Authentication\n\nTODO\n\n### Payments\n\n[Set up your branding on Stripe](https://dashboard.stripe.com/settings/branding),\nas a user will be taken to Stripe's checkout page when they upgrade.\n\nKeep your `customers` database up to date with billing changes by\n[registering a webhook endpoint in Stripe](https://stripe.com/docs/development/dashboard/register-webhook).\n\n- Endpoint URL: `https://{{ YOUR DOMAIN }}/api/subscription`\n- Listen to `Events on your account`\n- Select: `customer.subscription.created` and `customer.subscription.deleted`\n\n### Deno Deploy\n\nTODO\n\n### Any VPS via Docker\n\nTODO\n\n## Extending Deno SaaSKit\n\n### Global Constants\n\nThe [utils/constants.ts](utils/constants.ts) file includes global values used\nacross various aspects of the codebase. Update these values according to your\nneeds.\n\n### Blog\n\nTo create a new blog post, create a Markdown (`.md`) file within\n[`/data/posts/`](data/posts) with the filename as the slug. E.g.\n`/data/blog/hello-there.md` will correspond to the `/blog/hello-there` route.\nSee [`/data/posts/`](data/posts) for examples.\n\nPost properties are to be added to the starting Front Matter section of the\nMarkdown file. See the `Post` interface in [`/utils/posts.ts`](utils/posts.ts)\nfor a full list of properties and their types.\n\n### Themes\n\nYou can customize theme options such as spacing, color, etc. By default, Deno\nSaaSKit comes with `primary` and `secondary` colors predefined within\n`twind.config.ts`. Change these values to match your desired color scheme.\n\n## Architecture\n\n### Authentication\n\nTODO:\n\n- Blog\n- Database\n- Formatting\n- Fresh\n- Linting\n- Payments\n- Testing\n\n## Contributing\n\nWhen submitting a pull request, please:\n\n1. Follow the\n   [Deno Style Guide](https://deno.land/manual/references/contributing/style_guide).\n2. Include tests for any added functionality.\n3. Ensure `deno task test` passes successfully.\n\n## Goals and Philosophy\n\nFor the user, the website should be fast, secure and have a design with clear\nintent. Additionally, the HTML should be well-structured and indexable by search\nengines. The defining metrics for these goals are:\n\n- A perfect [PageSpeed Insights](https://pagespeed.web.dev/) score.\n- Fully valid HTML, as measured by\n  [W3C's Markup Validation Service](https://validator.w3.org/).\n\nFor the developer, the codebase should minimize the steps and amount of time\nrequired to get up and running. From there, customization and extension of the\nweb app should be simple. The characteristics of a well-written codebase also\napply, such as:\n\n- Easy to understand\n- Modular functionality\n- Clearly defined behavior with validation through tests\n\n## Community and Resources\n\nJoin\n[the `#saaskit` channel in Deno's Discord](https://discord.com/channels/684898665143206084/1085986084653109438)\nto meet other SaaSKit developers, ask questions, and get unblocked.\n\nHere's a list of articles, how to guides, and videos about SaaSKit:\n\n- [Announcing Deno SaaSKit](https://deno.com/blog/announcing-deno-saaskit)\n- [Getting Started with SaaSKit (video walkthrough)](https://www.youtube.com/watch?v=1GYs3NbVCfE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdoremus%2Ftodos-deno-saaskit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdoremus%2Ftodos-deno-saaskit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdoremus%2Ftodos-deno-saaskit/lists"}