Deploy your Vite single-page applications to AWS using Thunder. Vite apps are fully client-rendered at runtime, making static hosting on S3 and CloudFront the natural fit.
Available Patterns
Prerequisites
Getting Started
Create Project
Scaffold a new Vite project using your preferred package manager. This sets up the project structure, installs dependencies, and prepares you for development.
bun create vite my-vite-app --template vanilla-tscd my-vite-appbun installnpm create vite@latest my-vite-app -- --template vanilla-tscd my-vite-appnpm installpnpm create vite my-vite-app --template vanilla-tscd my-vite-apppnpm installInstall Thunder
Add Thunder as a development dependency. It provides the CDK constructs you’ll use to define your AWS infrastructure.
bun add @thunder-so/thunder --developmentnpm install @thunder-so/thunder --save-devpnpm add -D @thunder-so/thunderVite Static Site Deployment
Deploy your Vite SPA to S3 with CloudFront as the CDN. Vite outputs all compiled assets to dist/ by default — Thunder uploads these directly to S3 and provisions the CloudFront distribution in front of them.
Stack
The Static construct provisions an S3 bucket, a CloudFront distribution, and optionally a Route53 DNS record.
import { Cdk, Static, type StaticProps } from '@thunder-so/thunder';
const config: StaticProps = { env: { account: 'YOUR_ACCOUNT_ID', region: 'us-east-1' }, application: 'myapp', service: 'web', environment: 'prod', rootDir: '.', // e.g. 'frontend' for monorepos outputDir: 'dist',};
new Static(new Cdk.App(), `${config.application}-${config.service}-${config.environment}-stack`, config);Deploy
Build your Vite app first to compile and bundle all assets into dist/, then deploy with CDK. CDK uploads the files to S3 and provisions the CloudFront distribution.
bun run buildnpx cdk deploy --app "bunx tsx stack/prod.ts" --profile defaultnpm run buildnpx cdk deploy --app "npx tsx stack/prod.ts" --profile defaultpnpm run buildpnpm exec cdk deploy --app "pnpm exec tsx stack/prod.ts" --profile defaultAfter deployment, CDK outputs a CloudFront URL where your app is live.