A modern personal portfolio website showcasing work experience, skills, education, and projects.
Built with SvelteKit for optimal performance and modern web standards.
- 🚀 Static site generation with SvelteKit
- 📱 Fully responsive design
- ⚡ Fast loading and optimized performance
- 🎨 Clean, professional design
- 📄 Downloadable resume
- 🔗 Social media integration
- ♿ Accessible navigation and interactions
- Framework: SvelteKit
- Language: TypeScript
- Runtime: Deno (with npm compatibility) + Node.js
- Styling: CSS with custom properties
- Build Tool: Vite
- Task Runner: Deno tasks + just
- Deployment: GitHub Pages
- CI/CD: GitHub Actions
Choose one of the following setups:
Recommended: Deno + just
Alternative: Traditional Node.js
- Node.js 18+
- npm
- Clone the repository:
git clone https://github.com/keanuk/personal-site.git
cd personal-site- With Deno + just (Recommended):
# Install dependencies
just install
# Start development server
just devOr with npm directly:
# Install dependencies
npm install
# Start development server
npm run devThe site will be available at http://localhost:5173
With just (uses Deno tasks internally):
just dev- Start development serverjust build- Build for productionjust preview- Preview production build locallyjust check- Run type checkingjust lint- Run ESLint and lintingjust format- Format code with Prettierjust clean- Clean build artifactsjust verify- Run all checks (lint + type check)just serve- Serve built files with Deno's file server
Deno-specific commands:
just fmt-deno- Format with Deno's built-in formatterjust lint-deno- Lint with Deno's built-in linterjust typecheck-deno- Type check with Deno
Traditional npm scripts (still available):
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run check- Run type checkingnpm run lint- Run ESLintnpm run format- Format code with Prettier
The site automatically deploys to GitHub Pages when changes are pushed to the main branch via GitHub Actions.
For manual deployment:
With just:
just deployWith npm:
npm run build
./deploy-to-gh-pages.shpersonal-site/
├── src/
│ ├── lib/
│ │ ├── components/ # Reusable Svelte components
│ │ └── data.ts # Personal information and content
│ ├── routes/ # SvelteKit routes
│ ├── app.css # Global styles
│ └── app.html # HTML template
├── static/ # Static assets (images, icons, documents)
└── build/ # Production build output
To adapt this site for your own use:
- Update personal information in
src/lib/data.ts - Replace images and icons in
static/ - Modify styling in
src/app.cssand component styles - Update the CNAME file with your domain
- Configure GitHub Pages in your repository settings
This project uses a hybrid Deno + npm approach that combines the best of both ecosystems:
Deno advantages:
- Built-in tooling: Formatter, linter, and TypeScript support out of the box
- Modern runtime: Web standards API, secure by default
- Better development experience: No need for separate tools like Prettier or ESLint for basic formatting/linting
- Simplified dependency management: Direct imports from URLs and JSR
npm compatibility:
- Complex build toolchains (Vite, SvelteKit, esbuild) still work through npm
- Existing ecosystem packages remain available
- Gradual migration path without breaking existing workflows
The deno.json configuration provides tasks that use Deno where it excels (formatting, linting, type checking) while delegating complex builds to the proven npm toolchain.
This project is open source and available under the MIT License.
- Email: [email protected]
- LinkedIn: linkedin.com/in/keanukerr
- GitHub: github.com/keanuk
Built with ❤️ using SvelteKit