Skip to content

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

0 stars

Watchers

1 watching

Forks

Latest commit

Β 

History

36 Commits

Folders and files

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

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages