Files
SvelteKitSaasBoilerplate/README.md
T
2024-06-19 01:21:36 +01:00

117 lines
3.3 KiB
Markdown

# 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<Database>
...
}
}
}
```
#### 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 <migration_name>
```
- 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 <migration_name>
```
## 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.