A production-ready starter template combining SvelteKit 5 with FastAPI, featuring JWT authentication, a dark theme, and Docker deployment.
Built and maintained by Quartalis.
| Feature | Free | Premium |
|---|---|---|
| SvelteKit 5 frontend | Yes | Yes |
| FastAPI backend | Yes | Yes |
| JWT login & registration | Yes | Yes |
| Dark theme (Tailwind v4) | Yes | Yes |
| Docker Compose deployment | Yes | Yes |
| Stripe billing integration | - | Yes |
| Admin dashboard | - | Yes |
| Transactional email system | - | Yes |
| Multi-tenancy | - | Yes |
| Role-based access control (RBAC) | - | Yes |
| Database migrations (Alembic) | - | Yes |
| Production Nginx config | - | Yes |
| Priority support | - | Yes |
The premium version includes everything in the free edition plus Stripe billing, an admin dashboard, email system, multi-tenancy, RBAC, and production deployment configs.
Get the Premium Starter at quartalis.co.uk/store
git clone https://github.com/Quartalis/sveltekit-fastapi-starter.git
cd sveltekit-fastapi-starter
cp .env.example .env
# Edit .env and set a real JWT_SECRET
docker compose up --build
Backend:
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reload
Frontend:
cd frontend
npm install
npm run dev
sveltekit-fastapi-starter/
├── backend/
│ ├── main.py # FastAPI app with auth endpoints
│ ├── config.py # Environment-based configuration
│ ├── requirements.txt # Python dependencies
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── lib/
│ │ │ ├── api.ts # API client
│ │ │ └── auth.ts # Auth store
│ │ └── routes/
│ │ ├── +layout.svelte
│ │ ├── +page.svelte
│ │ ├── login/
│ │ ├── register/
│ │ └── dashboard/
│ ├── package.json
│ └── Dockerfile
├── docker-compose.yml
├── .env.example
└── LICENSE
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /api/health |
Health check | No |
| POST | /api/auth/register |
Register new user | No |
| POST | /api/auth/login |
Login (returns JWT) | No |
| GET | /api/me |
Get current user | Yes |
All configuration is done via environment variables. See .env.example for available options.
| Variable | Default | Description |
|---|---|---|
JWT_SECRET |
change-me-in-production |
Secret key for JWT signing |
JWT_EXPIRY_HOURS |
24 |
Token expiry time |
CORS_ORIGINS |
http://localhost:5173,... |
Allowed CORS origins |
MIT License. See LICENSE for details.