Personal portfolio site for Kamaludin Khoir, built with SvelteKit and deployed to Cloudflare Workers.
@sveltejs/adapter-cloudflare)src/lib/components/portfolio/ Portfolio page sections and UI components
src/lib/data/portfolio.js Portfolio content, links, projects, skills
src/routes/ SvelteKit routes
static/portfolio/ Images, icons, and static portfolio assets
Static assets are grouped by file type:
static/portfolio/avif/
static/portfolio/ico/
static/portfolio/png/
Install dependencies:
npm install
Start the dev server:
npm run dev
Open:
http://localhost:5173/
http://localhost:5173/portfolio/
npm run check # Svelte diagnostics
npm run lint # Prettier formatting check
npm run build # Production build for Cloudflare Workers
npm run preview # Preview production build locally
npm run deploy # Build and deploy to Cloudflare Workers
npm run deploy:cloudflare # Deploy existing Worker build output
This project is configured for Cloudflare Workers deployment through Wrangler.
Recommended Cloudflare build settings:
Production branch: master
Build command: npm run build
Deploy command: npm run deploy:cloudflare
@sveltejs/adapter-cloudflare writes Worker output to .svelte-kit/cloudflare/. wrangler deploy publishes the Worker and its static assets using wrangler.jsonc.
For local deployment:
npm run deploy
Wrangler deployment requires CLOUDFLARE_API_TOKEN to be set with permission to deploy Cloudflare Workers in the target account.
Most portfolio content is defined in:
src/lib/data/portfolio.js
Update this file for:
Update section layout or markup in:
src/lib/components/portfolio/
Run:
npm run check
npm run lint
npm run build
Confirm the build output contains:
.svelte-kit/cloudflare/_worker.js
.svelte-kit/cloudflare/portfolio/