Skip to content

datpham0412/my-portfolio

Repository files navigation

Portfolio Component Structure

This portfolio has been refactored into a clean, modular structure for better maintainability and organization.

📁 File Structure

src/
├── app/
│   └── page.tsx                 # Main page (now clean and minimal)
├── components/
│   ├── layout/
│   │   ├── Navigation.tsx       # Navigation bar component
│   │   └── Footer.tsx           # Footer component
│   ├── sections/
│   │   ├── HeroSection.tsx      # Hero/landing section
│   │   ├── AboutSection.tsx     # About me section
│   │   ├── ProjectsSection.tsx  # Projects showcase
│   │   ├── ExperienceSection.tsx # Work experience timeline
│   │   └── ContactSection.tsx   # Contact information
│   └── ui/                      # Reusable UI components (existing)
└── data/
    ├── constants.ts             # Shared constants and personal info
    ├── projects.ts              # Projects data and types
    └── experience.ts            # Experience data and types

🎯 Benefits of This Structure

  1. Modularity: Each section is a separate component, making it easy to modify individual parts
  2. Reusability: Components can be easily reused or moved around
  3. Maintainability: Data is separated from presentation logic
  4. Scalability: Easy to add new sections or modify existing ones
  5. Type Safety: TypeScript interfaces for all data structures

📝 How to Update Content

Personal Information

Edit src/data/constants.ts to update:

  • Name, title, location
  • Social media links
  • Quick stats

Projects

Edit src/data/projects.ts to:

  • Add new projects
  • Update existing project details
  • Modify project structure

Experience

Edit src/data/experience.ts to:

  • Add new work experience
  • Update job details and achievements
  • Modify experience structure

Styling

Each component can be styled independently:

  • HeroSection.tsx - Landing page styling
  • AboutSection.tsx - About section styling
  • ProjectsSection.tsx - Project cards styling
  • ExperienceSection.tsx - Timeline styling
  • ContactSection.tsx - Contact form styling

🔧 Adding New Sections

  1. Create a new component in src/components/sections/
  2. Add it to the main page in src/app/page.tsx
  3. Update navigation if needed in src/components/layout/Navigation.tsx

🎨 Customization

Colors and Themes

  • Update Tailwind classes in individual components
  • Modify the gradient backgrounds in AboutSection.tsx
  • Adjust hover effects and animations

Layout

  • Each section is self-contained and can be reordered
  • Responsive design is handled within each component
  • Grid layouts can be modified independently

📱 Responsive Design

All components are built with responsive design in mind:

  • Mobile-first approach
  • Breakpoint-specific layouts
  • Touch-friendly interactions

🚀 Performance

  • Components are lazy-loaded by default
  • Images are optimized with Next.js Image component
  • Minimal bundle size with efficient imports

🔄 State Management

  • Local state is managed within components (e.g., expanded jobs in ExperienceSection)
  • No external state management needed for current features
  • Easy to add global state if needed in the future

About

This repo contains the full source for my personal portfolio site—built with Next.js, React, and Tailwind CSS—showcasing my background, skills, projects, and client testimonials in a modular, responsive design and deployed on Vercel.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors