StudyStack is an open-source starter kit for building customizable online learning platforms. Originally developed for a private project that was later dissolved, it's been repurposed and made public as a flexible, community-driven codebase. It's not a full SaaS — think of it as a demo, a proof of concept, and a foundation you can build on.
Built with SvelteKit and the latest features from Svelte 5, it integrates Prisma, Tailwind CSS, and Playwright for a modern developer experience.
- Engaging course and lesson interface
- Secure user authentication
- Type-safe DB layer using Prisma
- End-to-end testing with Playwright
- Clean, responsive UI powered by Tailwind CSS
StudyStack was built by a solo dev and is released for the community. Contributions are welcome! Feel free to open an issue or PR — especially for:
- Bug fixes
- Feature suggestions
- Docs improvements
Just please keep in mind that this is not a full product with active long-term support — it's more of a public template for others to learn from or fork into their own projects.
Follow the platform-specific setup instructions below to get your development environment up and running. Once set up, start your dev servers with:
pnpm dev # Standard SvelteKit dev server
pnpm vercel-dev # Simulates Vercel Edge config for closer production testing
You’ll need Node.js (via NVM), Git, PlanetScale CLI, and other common development tools.
- Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Install Node Version Manager: NVM Docs
- Install Git:
brew install git
- Install PlanetScaleCLI:
brew install planetscale/tap/pscale
- Install JQ:
brew install jq
- Install MySQL CLI:
brew install mysql-client
- Install GitHub CLI:
brew install gh
- Install Node.js:
nvm install --lts
- Confirm Node install:
node -v
- Enable PNPM via corepack:
corepack enable pnpm
- Install PNPM:
corepack use pnpm@latest
- Clone the repo:
git clone git@github.com:shawn636/study-stack.git
- Install dependencies:
pnpm install
- (Optional) Set Zsh as default terminal in VS Code
- Run dev servers using
pnpm dev
and/orpnpm vercel-dev
- Open PowerShell and install Scoop:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
- Install Git
- Install NVM for Windows
- Install PlanetScale CLI & MySQL:
scoop bucket add pscale https://github.com/planetscale/scoop-bucket.git
scoop install pscale mysql
- Install JQ:
scoop install main/jq
- Install GitHub CLI:
scoop install gh
- Install Node.js:
nvm install --lts
- Confirm install:
node -v
- Enable corepack:
corepack enable pnpm
- Install PNPM:
corepack use pnpm@latest
- Clone the repo:
git clone git@github.com:shawn636/study-stack.git
- Install dependencies:
pnpm install
- Start dev servers:
pnpm dev
and/orpnpm vercel-dev
- Install NVM:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- Install Git:
sudo apt install git-all
- Install PlanetScale CLI
- Install JQ:
sudo apt install jq
- Install GitHub CLI:
sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | \
sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | \
sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update && sudo apt install gh -y
- Install MySQL CLI:
sudo apt-get install mysql-client
- Install Node.js:
nvm install --lts
- Confirm install:
node -v
- Enable corepack:
corepack enable pnpm
- Install PNPM:
corepack use pnpm@latest
- Clone the repo:
git clone git@github.com:shawn636/study-stack.git
- Install dependencies:
pnpm install
- Run servers:
pnpm dev
and/orpnpm vercel-dev
pnpm run dev
– Local dev serverpnpm run build
– Build for productionpnpm run test
– Run Playwright testspnpm run lint
– Format and lint the codepnpm run check
– Type and syntax checking
End-to-end testing is handled via Playwright and Vitest.
pnpm run test
You can also run other test-related scripts as needed for development or CI.
This project is licensed under the MIT License.
If you end up using this project for something cool, let me know — I’d love to check it out!