A modern, responsive personal portfolio website built with React, TypeScript, and Vite — showcasing my projects, skills, and journey as a Software Engineering undergraduate.
🌐 Live Site: mihisara-portfolio.vercel.app
- Hero Section — Animated typewriter role text, stats counter, and tech badges
- About — Interactive code-window card with personal info
- Skills — Animated skill bars with tech logo carousel
- Projects — Filterable project grid with featured badge, live demo & GitHub links
- Education — Academic timeline
- Contact — Functional contact form powered by Web3Forms
- Scroll Animations — Reveal-on-scroll transitions throughout
- Fully Responsive — Mobile-first layout across all screen sizes
| Category | Technology |
|---|---|
| Framework | React 19 + TypeScript |
| Build Tool | Vite 8 |
| Styling | Vanilla CSS (custom design system) |
| Contact Form | Web3Forms API |
| Deployment | Vercel |
src/
├── components/
│ ├── Hero.tsx # Landing section with typewriter & stats
│ ├── About.tsx # About me with code-window card
│ ├── Skills.tsx # Skill bars & tech logo grid
│ ├── Projects.tsx # Filterable project showcase
│ ├── Education.tsx # Academic timeline
│ ├── Contact.tsx # Contact form (Web3Forms)
│ ├── Footer.tsx # Footer with social links
│ └── Shared.tsx # Reusable components (Reveal, Counter, Typewriter, SkillBar)
├── index.css # Global styles & design tokens
└── main.tsx # App entry point
- Node.js ≥ 18
- npm
# Clone the repository
git clone https://github.com/MihisaraNet/Mihisara-portfolio.git
cd Mihisara-portfolio
# Install dependencies
npm installCreate a .env file in the root directory (see .env.example):
VITE_WEB3FORMS_KEY=your_web3forms_access_keyGet a free key at web3forms.com.
npm run devnpm run buildnpm run preview- Email: Connect via the contact form on the site
- GitHub: @MihisaraNet
- LinkedIn: Isula Mihisara
© 2026 Isula Mihisara. All Rights Reserved.