Skip to content

drewpayment/stacks

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 KitForStartups

The Open Source SvelteKit SaaS boilerplate.

KitForStartups is a starter kit for building and shipping fast, secure, and scalable full stack SaaS applications with SvelteKit and TypeScript.

If you already found yourself in a situation where you were:

  • Trying to set up various authentication systems (email/password, social logins, OAuth, etc.)
  • Scratching your head over how to structure your app
  • Spending too much time setting up payments for your SvelteKit app either with Stripe or Lemon Squeezy
  • Fighting against your email provider for sending emails from your app, and testing them reliably on your local machine
  • Doing all the above again and again for every new project

Then KitForStartups is for you 🎉!

⚒️ Tech Stack

  • SvelteKit
  • TypeScript
  • Zod
  • Drizzle ORM
  • Drizzle Kit
  • Tailwind CSS
  • MySQL
  • SQLite
  • PostgreSQL
  • Stripe (coming soon)
  • Lemon Squeezy (coming soon)
  • Resend
  • Mailgun (coming soon)

📦 Getting Started

The default configuration for the project uses MySQL as a database.

Prerequisites

  • Node.js 18+
  • MySQL 8.1+
  • pnpm
  • Docker Compose (optional)

Installation

  1. Setup
  • Clone or fork the repository:
git clone https://github.com/okupter/kitforstartups my-project
  1. Install dependencies
cd my-project
pnpm install
  1. Setup the environment variables

Duplicate the .env.example file and rename it to .env. Then, fill in the values for the environment variables.

cp .env.example .env
  1. Setup the database

For easy local development, there is a ./docker/mysql.yml file that you can use to spin up a MySQL database in a Docker container. If you don't want to use Docker, you can install MySQL locally and skip this step.

docker-compose -f docker/mysql.yml up -d

Remember to update the MYSQL_* environment variables in the .env file with your database credentials.

  1. Run the migrations

We use Drizzle Kit for automatic SQL migrations and prototyping.

To run the migrations for MySQL, run the following command:

pnpm generate-migrations:mysql

This will generate the SQL migrations, as well as migrations metadata files in the ./src/lib/drizzle/mysql/migrations/data directory.

You can now run the following command to push the migrations to the database:

pnpm migrate:mysql

In early stage of development or when you're at the prototyping stage, you can use directly update the database schema and run the following command to directly push the schema changes to the database:

pnpm push:mysql
  1. Setup MailHog for local email testing

We use MailHog to send and test emails locally. The boilerplate is configured to automatically send emails to MailHog when running in development mode.

Check ./src/lib/emails/send.ts for more details about the implementation.

We also provide a Docker Compose file to quickly spin up a MailHog container.

docker-compose -f docker/mailhog.yml up -d

The MailHog server will be available at http://localhost:8025.

  1. Run the app
pnpm dev

Changing the database

Right now, there is no CLI or configuration file to change the database. You will have to do some search and replace in the codebase to change the database.

The default database is MySQL. If you want to use PostgreSQL, you will have to:

  • Change occurences of $lib/lucia/mysql to $lib/lucia/postgres in the ./src directory
  • Change occurences of $lib/drizzle/mysql/models to $lib/drizzle/postgres/models in the ./src directory

This should be enough to get you started with PostgreSQL.

PS: This won't be necessary in the future, as we plan to add a central configuration file for the app and a CLI to generate a starter project with the database of your choice.

🗺️ Roadmap

KitForStartups is still in the early stages of development. Here is a list of features that we plan to add in the very near future:

  • PostgreSQL support
  • Proper error handling on the client with toast notifications
  • A central configuration file for the app
  • Magic link authentication
  • Authorization logic with load functions and hooks
  • Stripe integration
  • Lemon Squeezy integration
  • Mailgun integration
  • CLI for generating a starter project

About

The Open Source SvelteKit SaaS boilerplate.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 54.9%
  • Svelte 42.8%
  • JavaScript 1.1%
  • CSS 1.0%
  • Dockerfile 0.1%
  • HTML 0.1%