A modern, responsive portfolio website built with React, Vite, and Tailwind CSS. Features a clean, maintainable component architecture that makes content management simple.
- Node.js (v14 or higher)
- npm or yarn
# Clone the repository
git clone https://github.com/yourgithub/portfolio.git
cd portfolio
# Install dependencies
npm install
# Start development server
npm run devnpm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
src/
├── components/
│ ├── layout/
│ │ ├── Navbar.jsx # Navigation bar
│ │ └── Layout.jsx # Main layout wrapper
│ ├── ui/
│ │ ├── Card.jsx # Reusable card component
│ │ ├── Section.jsx # Section wrapper with consistent styling
│ │ └── SkillBadge.jsx # Individual skill display
│ └── sections/
│ ├── Hero.jsx # Landing section
│ ├── About.jsx # About me section
│ ├── Projects.jsx # Projects showcase
│ ├── Research.jsx # Research work
│ ├── Skills.jsx # Skills grid
│ └── Contact.jsx # Contact information
├── data/
│ ├── config.js # Site configuration and personal info
│ ├── projects.js # Projects data
│ ├── research.js # Research items
│ └── skills.js # Skills list
├── pages/
│ └── Home.jsx # Home page assembling all sections
└── App.jsx # Main app with routing
Edit src/data/config.js:
export const siteConfig = {
name: "Your Name",
title: "Your Title",
socialLinks: {
github: "https://github.com/yourusername",
linkedin: "https://linkedin.com/in/yourusername",
email: "your.email@example.com"
}
// ... more configuration
};Edit src/data/projects.js:
export const projects = [
{
id: 1,
title: "Project Name",
description: "Project description...",
tags: ["React", "Node.js"],
links: {
github: "https://github.com/...",
live: "https://...",
demo: "https://..."
}
},
// Add more projects here
];Edit src/data/research.js:
export const research = [
{
id: 1,
title: "Research Title",
description: "Research description...",
type: "Research",
tags: ["ML", "AI"],
links: {
paper: "https://...",
github: "https://..."
}
},
// Add more research items here
];Edit src/data/skills.js:
export const skills = [
"JavaScript",
"React",
"Python",
// Add more skills here
];The project uses Tailwind CSS with a consistent color scheme:
- Primary color: Teal-600
- Text colors: Slate palette
- Backgrounds: White and Slate-50
- Borders: Rounded-2xl for cards
- Effects: Shadow on hover, smooth transitions
To change the color scheme, search and replace:
teal-600→ Your primary colorteal-700→ Your primary hover colorteal-100→ Your light accent colorteal-200→ Your border color
import Card from './components/ui/Card';
<Card
title="Card Title"
description="Card description"
badge="Optional Badge"
className="additional-classes"
>
{/* Optional children */}
</Card>import Section from './components/ui/Section';
<Section
id="section-id"
title="Section Title"
background="gray" // or "white"
maxWidth="max-w-5xl"
>
{/* Section content */}
</Section>- Create a new page component in
src/pages/ - Add a route in
src/App.jsx:
<Route path="/new-page" element={<NewPage />} />- Update navigation in
src/data/config.jsif needed
- React - UI framework
- Vite - Build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- React Router - Client-side routing
- PropTypes - Runtime type checking
Feel free to submit issues and pull requests.
MIT License - feel free to use this template for your own portfolio!