How to Build a Portfolio Website Using React and Tailwind (2025 Guide)

In the digital-first world of 2025, your online portfolio is more important than ever. Whether you’re a developer, designer, or freelancer, a well-designed portfolio helps showcase your skills, attract clients, and land job opportunities.
In this tutorial, weβll walk you through how to build a sleek portfolio website using React and Tailwind CSSβa powerful combination for fast and responsive UI development.
π οΈ Why React + Tailwind?
- React: Component-based, fast, and widely used in modern web development.
- Tailwind CSS: Utility-first CSS framework that allows rapid design without writing custom CSS.
Together, they offer speed, flexibility, and a clean developer experience.
π§± Step 1: Set Up the Project
First, make sure you have Node.js and npm/yarn installed.
1. Create React App with Vite:
npm create vite@latest my-portfolio --template react
cd my-portfolio
npm install
2. Install Tailwind CSS:
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
3. Configure tailwind.config.js
:
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4. Add Tailwind to src/index.css
:
@tailwind base;
@tailwind components;
@tailwind utilities;
π¨ Step 2: Build the Portfolio Layout
Folder Structure:
src/
βββ components/
β βββ Header.jsx
β βββ Hero.jsx
β βββ About.jsx
β βββ Projects.jsx
β βββ Contact.jsx
βββ App.jsx
βββ index.css
π§© Step 3: Create Key Components
β
Header.jsx
function Header() {
return (
<header className="p-4 flex justify-between items-center bg-white shadow">
<h1 className="text-xl font-bold">MyPortfolio</h1>
<nav className="space-x-4">
<a href="#about" className="hover:text-blue-500">About</a>
<a href="#projects" className="hover:text-blue-500">Projects</a>
<a href="#contact" className="hover:text-blue-500">Contact</a>
</nav>
</header>
);
}
export default Header;
β
Hero.jsx
function Hero() {
return (
<section className="h-screen flex flex-col justify-center items-center text-center bg-gradient-to-br from-blue-100 to-white">
<h2 className="text-4xl font-bold mb-2">Hi, Iβm Jane Doe π</h2>
<p className="text-xl text-gray-700">Frontend Developer | UI/UX Enthusiast</p>
</section>
);
}
export default Hero;
β
Projects.jsx
const projects = [
{ name: "Portfolio Website", link: "#", desc: "React + Tailwind portfolio." },
{ name: "Todo App", link: "#", desc: "Full-stack MERN app." },
];
function Projects() {
return (
<section id="projects" className="p-8 bg-gray-50">
<h3 className="text-3xl font-bold text-center mb-6">Projects</h3>
<div className="grid md:grid-cols-2 gap-6">
{projects.map((project, idx) => (
<div key={idx} className="p-4 border rounded shadow">
<h4 className="text-xl font-semibold">{project.name}</h4>
<p className="text-gray-600">{project.desc}</p>
<a href={project.link} className="text-blue-600 hover:underline">View Project β</a>
</div>
))}
</div>
</section>
);
}
export default Projects;
π¬ Step 4: Add Contact Form
β
Contact.jsx
function Contact() {
return (
<section id="contact" className="p-8 bg-white">
<h3 className="text-3xl font-bold text-center mb-6">Contact Me</h3>
<form className="max-w-md mx-auto space-y-4">
<input type="text" placeholder="Name" className="w-full p-2 border rounded" />
<input type="email" placeholder="Email" className="w-full p-2 border rounded" />
<textarea placeholder="Message" className="w-full p-2 border rounded h-32"></textarea>
<button type="submit" className="w-full p-2 bg-blue-600 text-white rounded">Send</button>
</form>
</section>
);
}
export default Contact;
π¦ Step 5: Combine in App.jsx
import Header from './components/Header'
import Hero from './components/Hero'
import Projects from './components/Projects'
import Contact from './components/Contact'
function App() {
return (
<div>
<Header />
<Hero />
<Projects />
<Contact />
</div>
)
}
export default App
π Bonus Tips for 2025
- β Deploy with Vercel or Netlify in seconds.
- π― Use React Helmet or Vite-plugin-ssr for SEO optimization.
- π Add dark mode support using Tailwindβs dark variant.
- π± Ensure full mobile responsiveness with Tailwind’s utility classes.
π§ Final Thoughts
With Reactβs flexibility and Tailwindβs rapid styling, building a portfolio in 2025 is faster and cleaner than ever. Whether youβre looking to impress recruiters or clients, a modern portfolio site is your personal brandβs digital storefront.
Featured Ad

π Calmixo β Your Personal Wellness Companion
Relax, Meditate, and Sleep Better with Calmixo. Explore soothing sounds, guided meditations, and calming playlists curated just for you.β¨ Start your wellness journey today β because peace of mind matters.
Download Now