Skip to content

VertexHQ/dev-folio-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DevFolio React - Modern Portfolio Template

Important Note

This project is a modern React + Vite application. The file dev-folio-tamplate.html is provided only as a legacy reference to the original HTML version. All main development and features are implemented in React components under the src/ directory. Please use index.html and the React code for all deployment and customization.

A professional, minimal portfolio template refactored from a monolithic HTML file into a modern, scalable React + Vite application following SOLID principles and Atomic Design.


✨ What Changed From Original

Architecture Improvements

Original React Version
Single 500+ line HTML file Modular component architecture (25+ files)
Inline onclick="downloadSource()" Custom React hook useDownloadSource
Tailwind CDN (not tree-shakable) npm Tailwind with production optimization
Generic <div> elements Semantic HTML (<article>, <nav>, <main>)
No accessibility labels Full ARIA labels on all interactive elements
No image error handling Lazy loading + fallback UI for broken images

Approved Modernizations (Phase 2)

βœ… Issue #1: Extracted inline handlers to useDownloadSource hook
βœ… Issue #2: Added semantic HTML + ARIA labels for accessibility
βœ… Issue #3A: Implemented lazy loading + error boundaries for images
βœ… Issue #4: Migrated to npm Tailwind for production builds
βœ… Issue #5: Kept original design (no mobile menu per your request)
βœ… Issue #6: Optimized font loading with preconnect


πŸ“ Project Structure

src/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ common/
β”‚   β”‚   β”œβ”€β”€ MaterialIcon.jsx       # Reusable icon wrapper
β”‚   β”‚   └── Button.jsx             # Primary/Secondary button variants
β”‚   β”‚
β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   β”œβ”€β”€ BrowserChrome.jsx      # Traffic light dots for mockups
β”‚   β”‚   └── Badge.jsx              # Pill-shaped label component
β”‚   β”‚
β”‚   β”œβ”€β”€ layout/
β”‚   β”‚   β”œβ”€β”€ Navbar.jsx             # Fixed nav with glassmorphism
β”‚   β”‚   └── Footer.jsx             # Social links footer
β”‚   β”‚
β”‚   β”œβ”€β”€ cards/
β”‚   β”‚   └── ProjectCard.jsx        # Project card with hover effects
β”‚   β”‚
β”‚   └── sections/
β”‚       β”œβ”€β”€ HeroSection/
β”‚       β”‚   β”œβ”€β”€ HeroSection.jsx    # Main container
β”‚       β”‚   β”œβ”€β”€ HeroContent.jsx    # Left: Text + CTAs
β”‚       β”‚   └── IsometricMockup.jsx # Right: 3D cards (pure CSS)
β”‚       β”‚
β”‚       β”œβ”€β”€ ProjectsSection/
β”‚       β”‚   β”œβ”€β”€ ProjectsSection.jsx
β”‚       β”‚   └── SectionHeader.jsx
β”‚       β”‚
β”‚       └── CodeSection/
β”‚           β”œβ”€β”€ CodeSection.jsx
β”‚           β”œβ”€β”€ FeaturesList.jsx
β”‚           └── CodeTerminal.jsx
β”‚
β”œβ”€β”€ hooks/
β”‚   └── useDownloadSource.js       # Download functionality
β”‚
β”œβ”€β”€ data/
β”‚   └── projects.js                # Project data (easily editable)
β”‚
β”œβ”€β”€ utils/
β”‚   └── constants.js               # Site config & social links
β”‚
β”œβ”€β”€ styles/
β”‚   └── global.css                 # Tailwind + custom CSS
β”‚
β”œβ”€β”€ pages/
β”‚   └── Home.jsx                   # Main page composition
β”‚
β”œβ”€β”€ App.jsx                        # Root with Helmet provider
└── main.jsx                       # React 18 entry point

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm, yarn, or pnpm

Installation

# Navigate to project
cd dev-folio-react

# Install dependencies
npm install

# Start development server
npm run dev

The app will open at http://localhost:3000 πŸŽ‰

Build for Production

npm run build
npm run preview

🎨 Customization Guide

1. Update Personal Info

Edit src/utils/constants.js:

export const SITE_CONFIG = {
  name: 'DevFolio',
  tagline: 'Your Job Title Here',
  author: 'Your Name',
  description: 'Your bio...',
  socialLinks: [
    { name: 'GitHub', url: 'https://github.com/yourusername', label: '...' },
    // Add more...
  ]
};

2. Add/Edit Projects

Edit src/data/projects.js:

export const projectsData = [
  {
    id: 4,
    title: 'Your New Project',
    tech: 'Tech Stack',
    image: 'image-url',
    alt: 'Descriptive alt text'
  },
  // ...
];

3. Customize Colors

Edit tailwind.config.js:

colors: {
  accent: '#YOUR_BRAND_COLOR',
  navy: '#YOUR_DARK_COLOR',
  // ...
}

πŸ› οΈ Tech Stack

Technology Purpose
React 18 UI library with hooks
Vite Lightning-fast build tool
Tailwind CSS Utility-first CSS (tree-shakable)
React Helmet Async SEO meta tags
Material Symbols Icon library

πŸ“‹ Migration Notes (Original HTML β†’ React)

JavaScript β†’ React Hooks

// ❌ Original (inline handler)
<button onclick="downloadSource()">Download</button>

// βœ… React (custom hook)
const handleDownload = useDownloadSource();
<button onClick={handleDownload}>Download</button>

CSS Architecture

// ❌ Original (CDN)
<script src="https://cdn.tailwindcss.com"></script>

// βœ… React (npm + PostCSS)
// tailwind.config.js with tree-shaking

Image Handling

// ❌ Original
<img src="..." alt="..." />

// βœ… React (with error handling)
<img 
  src="..." 
  alt="..." 
  loading="lazy"
  onError={handleImageError}
/>

Accessibility

// ❌ Original
<a href="#">GitHub</a>

// βœ… React
<a href="#" aria-label="Visit my GitHub profile">GitHub</a>

🌐 Deployment

Vercel (Recommended)

npm install -g vercel
vercel

Netlify

npm run build
# Drag 'dist' folder to Netlify

GitHub Pages

Update vite.config.js:

export default defineConfig({
  base: '/your-repo-name/',
  // ...
})

πŸ“ Development Guidelines

Component Rules (SOLID Principles)

  • βœ… Single Responsibility: Each component does ONE thing
  • βœ… No Direct DOM: Use useRef or state, NEVER querySelector
  • βœ… Functional Only: No class components
  • βœ… Extract Logic: Complex logic goes in src/hooks/
  • βœ… Semantic HTML: Use <article>, <section>, <nav>, etc.

File Naming

  • Components: PascalCase (HeroSection.jsx)
  • Hooks: camelCase with use prefix (useDownloadSource.js)
  • Data: camelCase (projects.js)
  • Styles: kebab-case (global.css)

🀝 Contributing

This template was built following strict architectural standards. When contributing:

  1. Follow the Atomic Design structure (common β†’ ui β†’ sections)
  2. NO inline styles (use Tailwind or CSS modules)
  3. Add accessibility labels to all interactive elements
  4. Extract non-UI logic to custom hooks
  5. Use semantic HTML elements

πŸ“„ License

MIT License - feel free to use for personal or commercial projects.


Built with ❀️ following Principal Frontend Architect standards

Original monolithic HTML β†’ Modern React application with SOLID principles, Atomic Design, and production-ready architecture.

Releases

No releases published

Packages

 
 
 

Contributors