A modern, high-performance developer portfolio built with React, TypeScript, and Vite, styled with Tailwind CSS and enriched with Framer Motion animations.
The layout and content are fully data-driven, making it easy to maintain and customize without touching core UI logic.
-
Modern Interface
- Clean, minimal layout optimized for readability
- Clay / olive inspired light theme with a subtle paper texture
- Polished dark theme with smooth transitions
-
Rich Animations
- Animated hero section with floating profile avatar and circular frame
- Section entrances powered by
framer-motion - Micro-interactions on cards, timeline items, and buttons
-
Data‑Driven Portfolio
- Single source of truth in
src/data/portfolioData.ts - Sections: About, Skills, Projects, Experience, Education, Contact
- Easy to update text, links, tech stacks, and metrics
- Single source of truth in
-
Responsive by Design
- Mobile‑first layout
- Optimized for desktops, tablets, and phones
-
Developer Experience
- TypeScript throughout
- Vite dev server for instant feedback
- Reusable UI primitives under
src/components/ui
-
Framework & Language
- React
- TypeScript
-
Tooling
- Vite
- ESLint
-
Styling & UI
- Tailwind CSS
- Custom CSS utilities (
paper-texture,noise,grid-pattern,dot-pattern) - Shadcn-style UI components
-
Animations
- Framer Motion
src/
components/
portfolio/ # Portfolio sections (Hero, About, Projects, Experience, Contact, Footer, Navbar, ThemeToggle)
ui/ # Reusable UI components (buttons, cards, dialogs, etc.)
data/
portfolioData.ts # All portfolio content (profile, skills, projects, experience, education, nav)
hooks/
use-mobile.tsx
use-toast.ts
lib/
utils.ts
pages/
Index.tsx # Main portfolio page
NotFound.tsx
App.css
index.css # Global styles, CSS variables, custom utilities
main.tsx
- Node.js 18+
- npm, yarn, or bun
- Clone the repository
git clone <your-repo-url>.git
cd dynamic-portfolio-hub- Install dependencies
npm install
# or
yarn
# or
bun install- Start the development server
npm run devOpen the URL printed in the terminal (typically http://localhost:5173).
npm run dev– Start the development servernpm run build– Create a production buildnpm run preview– Preview the production build locallynpm run lint– Run ESLint checks
Most of the content is defined in src/data/portfolioData.ts:
personalInfo– name, roles, tagline, bio, email, location, availability, social linksaboutData– summary, detailed description, values, educationskillsData– technical skills and tools/platformsprojectsData– title, subtitle, description, tech stack, metrics, links, featured flagexperienceData– roles, companies, durations, descriptions, highlightsnavLinks– navigation items and anchors
Edit these objects to instantly update your portfolio without changing layout code.
Place a profile image in the public folder named profile-photo with any of the supported extensions:
public/profile-photo.jpgpublic/profile-photo.jpegpublic/profile-photo.pngpublic/profile-photo.webppublic/profile-photo.gifpublic/profile-photo.svg
The app automatically detects the first available file; no code changes are required.
For best results, use a square image (e.g. 500×500 or 800×800).
Theme tokens are defined in src/index.css using CSS variables:
- Light mode:
:root { --background, --foreground, --card, --accent, --border, ... } - Dark mode:
.dark { --background, --foreground, --card, --accent, --border, ... }
Adjust these values to fine‑tune:
- Background and surface colors
- Text and heading colors
- Accent / highlight color
- Card and border treatments
The components use Tailwind’s semantic classes (e.g. bg-background, text-foreground, bg-card, border-border), so theme changes propagate consistently.
Create a production build:
npm run buildThe output in the dist directory can be deployed to any static hosting provider, such as:
- Vercel
- Netlify
- GitHub Pages
- Cloudflare Pages
- AWS S3 + CloudFront
This project is licensed under the MIT License.
You are welcome to fork, adapt, and use it as the foundation for your own portfolio. A star or attribution is always appreciated. 🙂