A modern, responsive portfolio website built with React, TypeScript, and Tailwind CSS featuring a dynamic roadmap, project showcase, and honors & awards gallery.
- 🌟 Modern Design: Clean, responsive design with light/dark theme toggle
- 📱 Mobile-First: Fully responsive across all device sizes
- 🛣️ Interactive Roadmap: Timeline view of career milestones with filtering and modal details
- 💼 Project Showcase: Sortable project gallery with detailed descriptions and skills
- 🏆 Honors & Awards: Gallery with image lightbox and sorting capabilities
- 🎨 Smooth Animations: Page transitions and loading skeletons for better UX
- ♿ Accessible: Keyboard navigation and screen reader friendly
- 🚀 Performance: Optimized loading with lazy images and efficient rendering
- Framework: React 19 with TypeScript
- Styling: Tailwind CSS 4.1
- Build Tool: Vite
- Animations: Framer Motion
- Routing: React Router DOM
- Modals: React Modal
- Icons: Heroicons (via SVG)
- Node.js (version 18 or higher)
- npm or yarn
- Clone the repository:
git clone https://github.com/TheUnknown550/PortfolioWebsite.git
cd PortfolioWebsite- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run lint- Run ESLint
All content is stored in public/data.json. Update this file to customize:
- Personal information and bio
- Education details
- Skills (hard, soft, languages)
- Projects and experiences
- Honors and awards
- Roadmap events
{
"profile": {
"name": "Your Name",
"bio": "Your bio description",
"education": [...],
"skills": {
"hard": [...],
"soft": [...],
"languages": [...]
},
"projects": [...],
"honors": [...]
},
"roadmap": [...]
}- Build the project:
npm run build- The build output will be in the
dist/directory.
After building, deploy the updated files with rsync (safer and removes stale files):
# Deploy to mattcosh.com
sudo rsync -av --delete dist/ /var/www/mattcosh/
# Deploy to mcxstudios24.com (if applicable)
sudo rsync -av --delete dist/ /var/www/mcxstudios24/
# Reload Nginx if configs changed (usually not required for static updates)
sudo systemctl reload nginx- rsync ensures files removed from the build are also removed on the server (
--delete). - Adjust the target paths if your document roots differ.
- Netlify: Connect your GitHub repo for automatic deployments
- Vercel: Push to deploy with zero configuration
- GitHub Pages: Use GitHub Actions for automated deployment
The website uses a sky blue color scheme. To customize colors, update the Tailwind classes in components:
- Primary:
sky-400,sky-500,sky-700 - Dark mode:
sky-200,sky-300,sky-900
- Create a new component in
src/ - Add routing in
src/App.tsx - Update navigation in the header
- Add data structure to
public/data.json
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Portfolio: [Your Website URL]
- GitHub: @TheUnknown550
- Email: [Your Email]
Built with ❤️ using React and TypeScript { files: ['**/*.{ts,tsx}'], extends: [ // Other configs... // Enable lint rules for React reactX.configs['recommended-typescript'], // Enable lint rules for React DOM reactDom.configs.recommended, ], languageOptions: { parserOptions: { project: ['./tsconfig.node.json', './tsconfig.app.json'], tsconfigRootDir: import.meta.dirname, }, // other options... }, }, ])