A modern, responsive portfolio website built with React, TypeScript, and Tailwind CSS, featuring advanced animations and professional content showcasing skills, projects, and experience.
- Dynamic Hero Section: Animated typing effect with floating particles
- Interactive Skills Showcase: Technical and soft skills with hover animations
- Project Portfolio: Detailed project cards with status indicators and technology tags
- Experience Timeline: Professional journey with interactive timeline
- Testimonials: Client feedback with smooth marquee animation
- Contact Integration: Direct links to LinkedIn, GitHub, and email
- Modern React: Built with React 18+ and TypeScript for type safety
- Responsive Design: Mobile-first approach with Tailwind CSS
- Smooth Animations: Framer Motion for professional interactions
- Optimized Performance: Vite for fast development and building
- Clean Architecture: Scalable file structure with separation of concerns
src/
├── components/
│ ├── sections/ # Main page sections
│ │ ├── Hero.tsx
│ │ ├── ContentCards.tsx
│ │ ├── Projects.tsx
│ │ ├── Timeline.tsx
│ │ ├── Marquee.tsx
│ │ ├── CallToAction.tsx
│ │ └── Footer.tsx
│ └── ui/ # Reusable UI components
│ ├── ProfileSimple.tsx
│ └── ScrollToTop.tsx
├── data/ # Static data and content
│ ├── projects.ts
│ └── skills.ts
├── types/ # TypeScript type definitions
│ └── index.ts
├── utils/ # Utility functions
│ └── colors.ts
└── App.tsx # Main application component
- Frontend: React 18, TypeScript, Tailwind CSS
- Animations: Framer Motion
- Build Tool: Vite
- Icons: Lucide React
- Deployment: GitHub Pages
- Code Quality: ESLint, TypeScript strict mode
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone https://github.com/dominichubble/Personal-Website.git cd my-react-app -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open browser Navigate to
http://localhost:5173
npm run buildnpm run deploy- Edit
src/data/projects.ts - Add project object with required fields
- Projects automatically appear in the portfolio section
- Edit
src/data/skills.ts - Add skills to
technicalSkillsorsoftSkillsarrays - Skills display with interactive animations
- Personal Info: Update
src/components/ui/ProfileSimple.tsx - Experience: Update
src/components/sections/Timeline.tsx - Contact Links: Update profile component and footer
- Primary: Slate tones for professional appearance
- Accents: Blue for links and highlights
- Status Colors: Green (completed), Blue (in progress), Yellow (planning)
- Type Colors: Purple (professional), Orange (academic), Indigo (personal)
- Page Load: Staggered entrance animations
- Scroll: Reveal animations on scroll into view
- Interactions: Hover effects and micro-interactions
- Performance: Optimized with
once: truefor scroll animations
- Mobile First: Designed for mobile with progressive enhancement
- Breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px)
- Typography: Responsive text scaling
- Layout: Flexible grid systems
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm run deploy- Deploy to GitHub Pages
- Create component in appropriate folder (
sections/orui/) - Add TypeScript interfaces in
types/index.tsif needed - Import and use in
App.tsx - Update this README if significant
This is a personal portfolio project, but suggestions and feedback are welcome!
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open source and available under the MIT License.
Dominic Hubble
Built with ❤️ using React, TypeScript, and modern web technologies