├── .dockerignore ├── .example.env ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── codecov.yml ├── dependabot.yml └── workflows │ ├── ci.yml │ └── deploy.yml ├── .gitignore ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── components ├── Footer.tsx ├── GitHubAvatarImg.tsx ├── Head.tsx ├── Header.tsx ├── Meta.tsx ├── PremiumBadge.tsx ├── Share.tsx └── TabsBar.tsx ├── deno.json ├── dev.ts ├── docker-compose.yml ├── e2e_test.ts ├── fresh.config.ts ├── fresh.gen.ts ├── islands ├── Chart.tsx ├── ItemsList.tsx └── UsersTable.tsx ├── main.ts ├── middlewares └── security_headers.ts ├── plugins ├── error_handling.ts ├── kv_oauth.ts ├── security_headers.ts └── session.ts ├── posts ├── first-post.md └── second-post.md ├── routes ├── _404.tsx ├── _500.tsx ├── _app.tsx ├── account │ ├── index.tsx │ ├── manage.ts │ └── upgrade.ts ├── api │ ├── items │ │ ├── [id].ts │ │ └── index.ts │ ├── me │ │ └── votes.ts │ ├── stripe-webhooks.ts │ ├── users │ │ ├── [login] │ │ │ ├── index.ts │ │ │ └── items.ts │ │ └── index.ts │ └── vote.ts ├── blog │ ├── [slug].tsx │ └── index.tsx ├── dashboard │ ├── index.tsx │ ├── stats.tsx │ └── users.tsx ├── feed.ts ├── index.tsx ├── pricing.tsx ├── submit.tsx ├── users │ └── [login].tsx └── welcome.tsx ├── static ├── cover.png ├── favicon.ico ├── logo.webp └── styles.css ├── tailwind.config.ts ├── tasks ├── check_license.ts ├── db_dump.ts ├── db_migrate.ts ├── db_reset.ts ├── db_restore.ts ├── db_seed.ts └── init_stripe.ts └── utils ├── constants.ts ├── db.ts ├── db_test.ts ├── display.ts ├── display_test.ts ├── github.ts ├── github_test.ts ├── http.ts ├── http_test.ts ├── posts.ts ├── posts_test.ts ├── stripe.ts └── stripe_test.ts /.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | .example.env 3 | .vscode/ 4 | .github/ -------------------------------------------------------------------------------- /.example.env: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.example.env -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.gitattributes -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/codecov.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.github/codecov.yml -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.github/workflows/deploy.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.gitignore -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/README.md -------------------------------------------------------------------------------- /components/Footer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/Footer.tsx -------------------------------------------------------------------------------- /components/GitHubAvatarImg.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/GitHubAvatarImg.tsx -------------------------------------------------------------------------------- /components/Head.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/Head.tsx -------------------------------------------------------------------------------- /components/Header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/Header.tsx -------------------------------------------------------------------------------- /components/Meta.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/Meta.tsx -------------------------------------------------------------------------------- /components/PremiumBadge.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/PremiumBadge.tsx -------------------------------------------------------------------------------- /components/Share.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/Share.tsx -------------------------------------------------------------------------------- /components/TabsBar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/components/TabsBar.tsx -------------------------------------------------------------------------------- /deno.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/deno.json -------------------------------------------------------------------------------- /dev.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/dev.ts -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /e2e_test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/e2e_test.ts -------------------------------------------------------------------------------- /fresh.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/fresh.config.ts -------------------------------------------------------------------------------- /fresh.gen.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/fresh.gen.ts -------------------------------------------------------------------------------- /islands/Chart.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/islands/Chart.tsx -------------------------------------------------------------------------------- /islands/ItemsList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/islands/ItemsList.tsx -------------------------------------------------------------------------------- /islands/UsersTable.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/islands/UsersTable.tsx -------------------------------------------------------------------------------- /main.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/main.ts -------------------------------------------------------------------------------- /middlewares/security_headers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/middlewares/security_headers.ts -------------------------------------------------------------------------------- /plugins/error_handling.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/plugins/error_handling.ts -------------------------------------------------------------------------------- /plugins/kv_oauth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/plugins/kv_oauth.ts -------------------------------------------------------------------------------- /plugins/security_headers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/plugins/security_headers.ts -------------------------------------------------------------------------------- /plugins/session.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/plugins/session.ts -------------------------------------------------------------------------------- /posts/first-post.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/posts/first-post.md -------------------------------------------------------------------------------- /posts/second-post.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/posts/second-post.md -------------------------------------------------------------------------------- /routes/_404.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/_404.tsx -------------------------------------------------------------------------------- /routes/_500.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/_500.tsx -------------------------------------------------------------------------------- /routes/_app.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/_app.tsx -------------------------------------------------------------------------------- /routes/account/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/account/index.tsx -------------------------------------------------------------------------------- /routes/account/manage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/account/manage.ts -------------------------------------------------------------------------------- /routes/account/upgrade.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/account/upgrade.ts -------------------------------------------------------------------------------- /routes/api/items/[id].ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/items/[id].ts -------------------------------------------------------------------------------- /routes/api/items/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/items/index.ts -------------------------------------------------------------------------------- /routes/api/me/votes.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/me/votes.ts -------------------------------------------------------------------------------- /routes/api/stripe-webhooks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/stripe-webhooks.ts -------------------------------------------------------------------------------- /routes/api/users/[login]/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/users/[login]/index.ts -------------------------------------------------------------------------------- /routes/api/users/[login]/items.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/users/[login]/items.ts -------------------------------------------------------------------------------- /routes/api/users/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/users/index.ts -------------------------------------------------------------------------------- /routes/api/vote.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/api/vote.ts -------------------------------------------------------------------------------- /routes/blog/[slug].tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/blog/[slug].tsx -------------------------------------------------------------------------------- /routes/blog/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/blog/index.tsx -------------------------------------------------------------------------------- /routes/dashboard/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/dashboard/index.tsx -------------------------------------------------------------------------------- /routes/dashboard/stats.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/dashboard/stats.tsx -------------------------------------------------------------------------------- /routes/dashboard/users.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/dashboard/users.tsx -------------------------------------------------------------------------------- /routes/feed.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/feed.ts -------------------------------------------------------------------------------- /routes/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/index.tsx -------------------------------------------------------------------------------- /routes/pricing.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/pricing.tsx -------------------------------------------------------------------------------- /routes/submit.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/submit.tsx -------------------------------------------------------------------------------- /routes/users/[login].tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/users/[login].tsx -------------------------------------------------------------------------------- /routes/welcome.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/routes/welcome.tsx -------------------------------------------------------------------------------- /static/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/static/cover.png -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /static/logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/static/logo.webp -------------------------------------------------------------------------------- /static/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/static/styles.css -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tailwind.config.ts -------------------------------------------------------------------------------- /tasks/check_license.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tasks/check_license.ts -------------------------------------------------------------------------------- /tasks/db_dump.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tasks/db_dump.ts -------------------------------------------------------------------------------- /tasks/db_migrate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tasks/db_migrate.ts -------------------------------------------------------------------------------- /tasks/db_reset.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tasks/db_reset.ts -------------------------------------------------------------------------------- /tasks/db_restore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tasks/db_restore.ts -------------------------------------------------------------------------------- /tasks/db_seed.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tasks/db_seed.ts -------------------------------------------------------------------------------- /tasks/init_stripe.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/tasks/init_stripe.ts -------------------------------------------------------------------------------- /utils/constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/constants.ts -------------------------------------------------------------------------------- /utils/db.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/db.ts -------------------------------------------------------------------------------- /utils/db_test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/db_test.ts -------------------------------------------------------------------------------- /utils/display.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/display.ts -------------------------------------------------------------------------------- /utils/display_test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/display_test.ts -------------------------------------------------------------------------------- /utils/github.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/github.ts -------------------------------------------------------------------------------- /utils/github_test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/github_test.ts -------------------------------------------------------------------------------- /utils/http.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/http.ts -------------------------------------------------------------------------------- /utils/http_test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/http_test.ts -------------------------------------------------------------------------------- /utils/posts.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/posts.ts -------------------------------------------------------------------------------- /utils/posts_test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/posts_test.ts -------------------------------------------------------------------------------- /utils/stripe.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/stripe.ts -------------------------------------------------------------------------------- /utils/stripe_test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/denoland/saaskit/HEAD/utils/stripe_test.ts --------------------------------------------------------------------------------