Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌐 deshankoswatte.github.io

My personal portfolio website β€” a clean, minimal single-page site with a dark mode toggle and animated role text.

Live at deshankoswatte.github.io


✨ Features

  • πŸŒ™ Dark / Light mode β€” respects your system preference, with a toggle in the header
  • πŸ”„ Animated role text β€” cycles through titles like SW Engineer, Developer, Open Source Fan, and more using smooth CSS transitions
  • πŸ“± Responsive β€” works on mobile and desktop
  • ⚑ Static export β€” fully pre-rendered HTML, no server needed

πŸ› οΈ Tech Stack

Tool Version Purpose
Next.js 15.5.18 Framework
React 18 UI
next-themes 0.3 Dark mode
@heroicons/react 2.x Icons
TypeScript 5.x Type safety

πŸš€ Getting Started

Prerequisites: Node.js 18+

# 1. Clone the repo
git clone https://github.com/deshankoswatte/deshankoswatte.github.io.git
cd deshankoswatte.github.io

# 2. Install dependencies
npm install --legacy-peer-deps

# 3. Start the dev server
npm run dev

Then open http://localhost:3000.


πŸ“¦ Building & Deploying

# Build a production static export
npm run build

# The output is in the `out/` folder β€” ready to deploy anywhere

The site is automatically deployed to GitHub Pages via the workflow in .github/workflows/gh-pages-deploy.yml whenever you push to main.


πŸ”’ Security Notes

This site is deployed as a fully static export (no server, no middleware). Because of this:

  • Middleware-based CVEs (e.g. CVE-2025-29927) do not apply β€” no middleware is executed at runtime
  • Server Component CVEs do not apply β€” the site uses the Pages Router with static generation
  • Image cache CVEs do not apply β€” the built output is flat HTML/CSS/JS with no running Next.js server

Next.js is pinned to 15.5.18 (the latest fully-patched 14.x release). The only remaining npm audit flag is against the next package itself for server-mode features this site doesn't use.


πŸ“ Project Structure

β”œβ”€β”€ assets/             # Profile picture and screenshots
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ header.tsx      # Nav bar with dark mode toggle
β”‚   β”œβ”€β”€ footer.tsx      # Copyright + links
β”‚   β”œβ”€β”€ intro.tsx       # Main content + animated text
β”‚   └── layout.tsx      # Page wrapper
β”œβ”€β”€ pages/
β”‚   └── index.tsx       # Entry point
β”œβ”€β”€ styles/
β”‚   β”œβ”€β”€ index.css       # Global styles
β”‚   β”œβ”€β”€ theme.css       # CSS variables (light + dark)
β”‚   └── bootstrap-grid.css  # Minimal grid layout
└── public/             # Static assets (favicon, etc.)

πŸ™‹ Connect

Platform Link
Email dehami.deshan@gmail.com
Twitter @deshankoswatte
LinkedIn deshankoswatte
GitHub @deshankoswatte
Medium @deshankoswatte
Stack Overflow deshan-koswatte

Copyright Β© Dehami Koswatte 2021 – present
β˜• Buy me a coffee

About

Simple personal portfolio website built with Next.js 15 and TypeScript. Features dark mode, smooth animated role text, and deploys automatically to GitHub Pages via GitHub Actions. πŸš€

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages