svelte-kit-website-starter Svelte Themes

Svelte Kit Website Starter

Starter template for website with SvelteKit, Docker, PostgreSQL and Nginx.

SvelteKit Website Starter

Get started

NOTE: Before using this template, you need to install pnpm (only for development), docker and docker compose.

Create a new project based on this template using degit:

pnpx degit CitRUSprod/svelte-kit-website-starter my-website
cd my-website
pnpm i

The launch is done through docker compose, but with scripts scripts/dev and scripts/prod:

scripts/dev <docker compose command>
scripts/prod <docker compose command>

Run the project by entering these commands and open http://localhost:6700 in your browser:

# Development
scripts/dev up -d
pnpm dev # or "cd apps/<app>" and "pnpm dev"

# Production
scripts/start

Example of development mode commands

scripts/dev up -d # Start
scripts/dev down # Stop
scripts/dev logs <app> # View app logs
scripts/dev exec <app> sh # Enter the app container
scripts/dev <docker compose command> # Any docker compose command

Example of production mode commands

scripts/prod up -d # Start
scripts/prod down # Stop
scripts/prod logs <app> # View app logs
scripts/prod exec <app> sh # Enter the app container
scripts/prod <docker compose command> # Any docker compose command

# or shortcuts

scripts/start # Start
scripts/stop # Stop
scripts/restart # Restart

First run

Development mode
  1. Enter this command and edit the .env file:
scripts/clone-env
  1. Start required docker containers for development:
scripts/dev up -d
  1. Install project dependencies:
pnpm i
  1. Build packages:
pnpm build
  1. Run database migrations:
pnpm --filter api prisma:migrations:run
  1. Seed the database:
pnpm --filter api prisma:seeds:run
  1. Start web and api in development mode:
pnpm dev
Production mode
  1. Enter this command and edit the .env file:
scripts/clone-env
  1. Start required docker containers for production:
scripts/start
  1. Seed the database:
scripts/prod exec api sh
pnpm prisma:seeds:run

After completing all steps, the application will be available at http://localhost:<WEBSITE_PORT> (default is http://localhost:6700).

Project Structure

  • apps - Applications
  • packages - Local libraries
  • configs - Configuration files (docker, nginx, prettier, etc.)
  • scripts - Project management scripts (start, stop, restart, backup, etc.)
  • storage - Storage directory for backups and other data that should not be in the repository
  • tests - E2E tests with Playwright

Tools

Commit with commitizen:

pnpm commit

Check types with tsc:

pnpm check-types

Lint with linters:

pnpm lint

Format with formatters:

pnpm format

Environment variables

All environment variables are written to the .env file. If it doesn't exist, just enter this command:

scripts/clone-env

Migrations and seeds

The project uses prisma to work with the database.

Migrations and seeds are located in apps/api/src/prisma in the migrations folder and seeds.ts file. To work with them, you need to go to the api app directory:

# Development
cd apps/api

# Production
scripts/prod exec api sh

Then you can enter any of the following commands:

pnpm prisma:migrations:create # Create migrations
pnpm prisma:migrations:run # Run migrations
pnpm prisma:migrations:reset # Reset migrations
pnpm prisma:seeds:run # Run default seeds
pnpm prisma:seeds:run --seed test-users # Run test users seeds

Backups

Backups are placed in storage/backups folder.

For manual backup you can use this command:

scripts/create-backup

For automatic backups you can use these commands:

scripts/enable-automatic-backups # Enable automatic backups (using cron)
scripts/check-automatic-backups # Check if automatic backups are enabled
scripts/disable-automatic-backups # Disable automatic backups

The schedule for automatic backups can be configured in .env file using BACKUPS_SCHEDULE variable in cron format. Example: BACKUPS_SCHEDULE="0 3 * * *" for daily backup at 3 AM.

To restore a database from backup you can use this command:

scripts/restore-backup <YYYY-MM-DD_hh-mm-ss> # For example 2020-05-13_21-35-00

Top categories

Loading Svelte Themes