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... }, }, ])