# SvelteKit Saas Boilerplate A SvelteKit boilerplate project for a Software As A Service (SaaS) application, to get you started quickly. [![Netlify Status](https://api.netlify.com/api/v1/badges/70e20d6a-2d2c-4a5b-b697-8053c1e8655b/deploy-status)](https://app.netlify.com/sites/sveltekitsaasboilerplate/deploys) ## Developing After you have cloned the repository you can install the dependencies with `npm install`, and start a development server: ```bash npm run dev # or start the server and open the app in a new browser tab npm run dev -- --open ``` An example `.env` file is provided in the repository. You will need to copy `.env.example` to `.env` and fill in the values with your own credentials. ### Local DB Development Ensure you have [Docker](https://docs.docker.com/get-docker/) installed on your development machine. You can start and stop the local DB environment with: ```bash npx supabase start npx supabase stop ``` #### Generate schema types (Typescript) `npx supabase gen types typescript --local > ./src/lib/db_schema.ts` The overarching `Database` type is used for a generic `SupabaseClient`. This is set globally in `src/app.d.ts` ```ts import { SupabaseClient } from '@supabase/supabase-js' import { Database } from '$lib/db_schema' declare global { namespace App { interface Locals { supabase: SupabaseClient ... } } } ``` #### Migrations There are two options to create a migration file: 1. [Writing the SQL manually](https://supabase.com/docs/guides/cli/local-development#database-migrations) - Create new blank migration file ```bash npx supabase migration new ``` - Add the SQL you want to deploy as part of the migration e.g. ```sql create table employees ( id bigint primary key generated always as identity, name text, email text, created_at timestamptz default now() ); ``` - Reset the DB and apply the latest migrations ```bash supabase db reset ``` 2. [Generate SQL based on differences to the schema](https://supabase.com/docs/guides/cli/local-development#diffing-changes) - With the local DB running, enter the studio and make your changes to the schema - Generate the migration file containing the SQL with the differences in the schema ```bash npx supabase db diff -f ``` ## Building To create a production version: ```bash npm run build ``` You can preview the production build with `npm run preview`. ## Hosting and Tech Stack This application is designed to run on [Netlify](https://www.netlify.com/) and uses [Supabase](https://supabase.io/) for database storage and user authentication ([Supabase Auth](https://supabase.com/auth)). The application is written in Typescript using the [SvelteKit](https://kit.svelte.dev/) framework. For styling, the application uses [Tailwind CSS](https://tailwindcss.com/) with the [DaisyUI](https://daisyui.com/) component library and [HyperUI](https://www.hyperui.dev/). For taking payments the Stripe Checkout is used. In its current configuration, the application can be easily linked to Netlify via git for CI/CD, enabling automatic deployments on push to the main branch. ## To Do Please see the Issues tab for `enhancement` tagged issues.