A modern, responsive portfolio website built with React and Tailwind CSS, showcasing professional experience, education, certifications, and technical skills.
- Responsive design that works on all devices
- Dark/Light mode toggle with persistent theme preference
- Smooth scrolling navigation
- GitHub OAuth integration for authentication
- Interactive UI components
- Professional skill categorization
- Comprehensive certification display
- Detailed work experience timeline
- React - Frontend framework
- Tailwind CSS - Utility-first CSS framework
- Vite - Build tool
- React Icons - Icon library
- Modern JavaScript (ES6+)
-
Clone the repository:
git clone https://github.com/jmccumberio/portfolio.git cd portfolio -
Install dependencies:
pnpm install
-
Start the development server:
pnpm dev
-
Build for production:
pnpm build
The site is optimized for deployment on any static hosting platform. The build process creates a dist folder with all the necessary files.
-
Build the project:
pnpm build
-
Deploy the dist folder to the gh-pages branch:
pnpm deploy
-
Access the deployed site at:
https://.github.io/portfolio/
🐛 Troubleshooting Debugging Login Button
To run the project locally:
- Ensure you have Node.js installed (v16 or higher recommended)
- Install pnpm if not already installed:
npm install -g pnpm - Follow the installation steps above
🐛 Troubleshooting Debugging Login Button Ensure the LoginNav component is correctly imported and used in Navbar.jsx:
import LoginNav from './LoginNav';
<div className="hidden md:block">
<LoginNav />
</div>- Dark Mode Not Persisting: Ensure localStorage is enabled in your browser.
- Build Errors: Check that all dependencies are installed and up to date by running pnpm install.
To run unit tests:
pnpm test⚙️ Environment Variables Copy and fill in your values:
cp .env.example .envAfter applying these, run:
pnpm install
pnpm run lint
pnpm run lint:css
pnpm test
pnpm run clean && pnpm build
## 📝 License
MIT License - feel free to use this code for your own portfolio!
## 📫 Contact
Feel free to reach out through the contact form on the website or connect on LinkedIn.
---
Built with ❤️ by Jonathan McCumber