Skip to content

stevehanstudio/stevehan.dev-framer-motion

Repository files navigation

SteveHan.dev Portfolio website

This project uses Typescript, React.js, Framer Motion, and Tailwind CSS (v3.0), and is integrated with Google Analytics 4 and Google Tag Manager.

Live Site

🌐 www.stevehan.dev

Features

  • Dark / light Mode
    • Dark / light mode switch animation
    • Linear gradient background animation
  • Desktop/tablet (>= 768 pixels)
    • Skills
      • Expand/collapse to see all or less skills
      • Reorder and animate selected buttons to the front
    • Carousel to scroll through projects and certificates
      • Drag with momentum to scroll
      • Right/left buttons to go to next set
      • Fade out on left and/or right to show there's more
    • Navigation
      • Chevron button on bottom of page to go to next page
  • Mobile (< 768 pixels)
    • Setting
      • Drawer drag close
    • Skills
      • Carousel to select skills
      • Filter sidebar to see all skills
    • Navigation
  • Image Optimization
    • Cloudinary image transformation delivery URL
  • Miscellaneous
    • 404 Page not found
      • SVG Animation

Screenshots

Desktop

Desktop screenshot

Mobile (captured on iPhone X)

Mobile phone screenshot iPhone X

Technology Used

Typescript React Framer Motion Tailwind CSS Visual Studio Code JavaScript HTML5 CSS3 Sass Git GitHub Jira Google Analytics Google Tag Manager
Typescript React Framer Motion Tailwind CSS Visual Studio Code JavaScript HTML5 CSS3 SASS Git Github Jira Google Analytics Google Tag Manager

Project Folder Structure

├── .vscode
│   └── settings.json # VS Code settings
├── backend - AWS CDK, AWS Lambda, AWS DynamoDB, Amazon API Gateway.  Details coming soon...
├── public
│   ├── _redirects # Configures Netlify so that routing is handled on the client side by React Router
│   ├── manifest.json # Not modified.
│   └── index.html # Main HTML file, contains the code for Google Tag Manager and Hotjar.
├── src
│   ├── components
│   │   ├── AnimationPageTransition.tsx # .
│   │   ├── Buttons.tsx # Contains all the buttons used in the project.
│   │   ├── CardComponent.tsx #
│   │   ├── DarkModeSwitch.tsx # Dark/light mode switch
│   │   ├── Drawer.tsx #
│   │   ├── Header.tsx #
│   │   ├── LogoGlow.tsx #
│   │   ├── MainCarousel.tsx #
│   │   ├── MainComponent.tsx #
│   │   ├── Menu.tsx #
│   │   ├── MobileCardsComponent.tsx #
│   │   ├── MobileMenu.tsx #
│   │   ├── MobileSkillsComponent.tsx #
│   │   ├── MobileSkillsSideBar.tsx #
│   │   ├── ResumeIcon.tsx #
│   │   ├── Settings.tsx #
│   │   ├── SettingsDrawer.tsx #
│   │   └── SkillsComponent.tsx #
│   ├── constants
│   │   ├── MenuItems.ts
│   │   └── misc.ts #
│   ├── context
│   │   ├── AppContext.ts #
│   │   └── AppContextProvider.tsx # Contains the global states
│   ├── fonts
│   │   └──  global.scss # Global styles
│   ├── pages
│   │   ├── About.tsx # About me and about the website page
│   │   ├── Certificates.tsx # Certificates page
│   │   ├── Contact.tsx # Contact form page
│   │   ├── Home.tsx # Home / Hero page
│   │   ├── NotFound.tsx # 404 page not found
│   │   └── Projects.tsx # Projects page
│   ├── styles
│   │   └──  global.scss # Global styles
│   ├── App.test.tsx # .
│   ├── App.tsx # This is the root of the app.
│   ├── index.css # Global styles.
│   ├── index.tsx # Used for DOM rendering only.
│   ├── react-app-env.d.ts # .
│   ├── reportWebVitals.ts # .
│   ├── setupTests.ts # .
│   └── types.ts # Typescript types definitions for the project.
├── .gitignore # Files ignored by Git.
├── README.md # This file.
├── package.json # npm package manager file.
├── package-lock.json # Contains the dependencies used in the project.
├── postcss-config.json # .
├── tailwind.config.js # Tailwind CSS configuration file.
└── tsconfig.json # Typescript configuration file.

Known Issues

  • Make setting drawer menu's drag close only on a handle and make the setting drawer scrollable if there's vertical overflow
  • Main component cards does not animate unless 100% of the card container is in view. Change it to something like 40% in view.

Future Todos

  • Add integration with Mixpanel for user analytics
  • Add backend on AWS using CDK and AWS Lambda
  • Add set focus and keyboard accessibility
  • Improve 404 page animation
  • Add additional units tests with Jest and React Testing Library
  • Add PWA homescreen installation for mobile
  • Improve on the styling of main component's buttons

Resources

Javascript / React.js

Styling - Tailwind CSS / SASS / CSS

Animation - Framer Motion

SVG

Fonts

Testing - React Testing Library, Jest

Performance - React Profiler, Core Web Vitals, Lighthouse, Memo

Deployment / Build - Netlify, AWS

Traffic Analytics - Google Analytics, Google Tag Manager, Hotjar

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published