A modern, dark-themed personal portfolio website built with React, designed for GitHub Pages deployment.
- Dark Mode Theme: Professional dark aesthetic with teal accent colors
- Responsive Design: Works seamlessly on desktop, tablet, and mobile
- Tab-Based Navigation: Clean single-page application with URL hash routing
- Four Main Sections:
- CV/About: Profile, education, work experience, skills, and achievements
- Projects: Project showcase with tech stacks and links
- Research: Academic publications and research work
- Blog: Personal blog with modal-based post viewing
-
Create a GitHub Repository
- Go to GitHub and create a new repository
- Name it
<your-username>.github.iofor a user site, or any name for a project site
-
Initialize Git and Push
cd /path/to/this/folder git init git add . git commit -m "Initial commit - Personal portfolio website" git branch -M main git remote add origin https://github.com/<your-username>/<repository-name>.git git push -u origin main
-
Enable GitHub Pages
- Go to your repository's Settings → Pages
- Under "Source", select main branch
- Select / (root) folder
- Click Save
-
Access Your Site
- Your site will be available at:
- User site:
https://<your-username>.github.io - Project site:
https://<your-username>.github.io/<repository-name>
- User site:
- Your site will be available at:
- Create a new repository on GitHub
- Click "uploading an existing file"
- Drag and drop all files from this folder
- Commit the changes
- Enable GitHub Pages in Settings
├── index.html # Main HTML file
├── styles.css # All styles (dark theme, responsive)
├── app.js # React application (components, data, routing)
└── README.md # This file
All personal data is stored in the app.js file. Edit the following objects:
profileData- Your name, title, contact infoeducationData- Your educational backgroundexperienceData- Work experienceskillsData- Technical skills by categoryprojectsData- Your projectsresearchData- Research publicationsblogData- Blog postsachievementsData- Achievements and awards
Replace the user icon with an actual image:
- Add your image to the repository (e.g.,
profile.jpg) - In
styles.css, update the.profile-imageclass - In
app.js, update theAboutSectioncomponent to use an<img>tag
Edit the CSS variables in styles.css:
:root {
--accent-primary: #2dd4bf; /* Main accent color */
--accent-secondary: #14b8a6; /* Hover states */
--accent-dark: #0d9488; /* Darker accent */
}Add new entries to blogData in app.js:
{
id: 5,
title: "Your New Post Title",
date: "January 7, 2025",
excerpt: "A brief description...",
content: "Full blog post content..."
}- React 18 - UI components
- CSS3 - Custom styling with CSS variables
- Font Awesome - Icons
- Inter Font - Typography
- Babel - JSX transformation
- Desktop: > 900px
- Tablet: 600px - 900px
- Mobile: < 600px
To test locally, you can use any simple HTTP server:
# Using Python 3
python -m http.server 8000
# Using Node.js (npx)
npx serve .
# Using PHP
php -S localhost:8000Then open http://localhost:8000 in your browser.
This project is open source and available under the MIT License.
Created with ❤️ by Shekhar Mohanty Hemant