A production-ready starter template for building modern, full-stack web applications. This repository provides a robust foundation featuring a clean architecture, type-safe database access with Drizzle, and a complete authentication system.
This project is designed to be a launchpad, saving you from the boilerplate and letting you focus on building features.
This starter template comes packed with a modern tech stack and tooling, all configured to work seamlessly together.
| Category | Technology / Tool | Purpose |
|---|---|---|
| Framework | SvelteKit | A full-stack framework for building high-performance web applications. |
| Language | TypeScript | For robust, type-safe code across the entire stack. |
| UI Components | shadcn-svelte | A collection of beautifully designed, accessible UI components. |
| Database ORM | Drizzle ORM | A next-generation TypeScript ORM for type-safe database access. |
| Database | PostgreSQL | A powerful, open-source object-relational database system. |
| Container | Docker | For consistent development and production environments. |
| Forms | SvelteKit Superforms | A comprehensive library for building robust, validated forms. |
| Validation | Zod | For schema declaration and validation on both client and server. |
| Testing | Vitest & Playwright | For unit, component, and end-to-end testing. |
| Code Quality | ESLint & Prettier | For maintaining a clean and consistent codebase. |
Follow these instructions to get the project up and running on your local machine for development and testing purposes.
v22.x or higherv10.x or higherClone the repository:
git clone https://github.com/shandysiswandi/sveltekit-app.git
cd sveltekit-app
Configure Environment Variables:
Copy the example .env file and update it with your local settings.
cp .env.example .env
Install Dependencies:
npm install
Start the Database: This command uses Docker Compose to start a PostgreSQL container in the background.
npm run db:start
Run Database Migrations: This command applies the Drizzle ORM schema to your new database.
npm run db:migrate
Run the Development Server:
npm run dev
The application will now be available at http://localhost:5173.
This project follows a feature-driven architecture designed for scalability and maintainability.
src/lib/components: Contains reusable Svelte components.ui/: Low-level, unstyled components from shadcn-svelte.custom/: Your own application-specific components.src/lib/server: Houses all backend logic, guaranteed to only run on the server.db/: Drizzle ORM setup and schema definitions.data/: The Data Access Layer (Repositories) for database interactions.usecase/: The Business Logic Layer (Services) that orchestrates actions.src/lib/model: Defines the core data models (classes or types) for the application.src/routes: Defines all pages and API endpoints, using SvelteKit's file-based routing. Route groups (auth) and (main) are used to apply different layouts.tests/: Contains all unit and end-to-end tests.This project includes a set of npm scripts to streamline common development tasks:
npm run dev: Starts the development server.npm run build: Compiles the application for production.npm run start: Runs the production-ready build.npm run lint: Lints the codebase for errors.npm run format: Formats all files with Prettier.npm run test:unit: Runs all unit tests.npm run db:migrate: Applies pending database migrations.npm run db:studio: Opens the Drizzle Studio to browse your database.This project is licensed under the MIT License - see the LICENSE file for details.