This is my personal portfolio website where I showcase my background, projects, certifications, experiences, and interests.
The site also highlights my journey as an Informatics student @ University of Washington and includes personal touches like my love for tennis πΎ and coffee β.
π Live Site: joechamdani.com
- βοΈ React (TypeScript) β Frontend framework
- π¨ TailwindCSS β Styling
- π¬ Framer Motion β Animations
- πΌοΈ Lucide React Icons β Icons
- π Vite β Build tool
- π React Router β Client-side routing for blog pages
- πͺ React Helmet β SEO meta tags management
- βοΈ EmailJS β Contact form email integration
- βοΈ Hostinger β Hosting
src/
βββ components/ # Reusable React components
β βββ sections/ # Main page sections
β β βββ Hero.tsx
β β βββ About.tsx
β β βββ Portfolio.tsx
β β βββ Blog.tsx
β β βββ Certifications.tsx
β β βββ Milestones.tsx
β β βββ Talks.tsx
β β βββ TennisCoffeeSection.tsx
β β βββ Contact.tsx
β βββ shared/ # Shared components
β βββ Navbar.tsx
β βββ Footer.tsx
β βββ ContactForm.tsx
β βββ RacketCard.tsx
β
βββ data/ # JSON data for content
β βββ milestones.json
β βββ credentials.json
β βββ articles.json
β
βββ hooks/ # Custom React hooks
βββ lib/ # Utilities
βββ pages/ # Page-level components
β βββ Index.tsx # Homepage
β βββ ArticlePage.tsx # Blog article pages
βββ App.tsx # Main app entry with routing
βββ main.tsx # Vite bootstrap
public/
βββ article_media/ # Blog article images
β βββ bc-hacks-2024/
βββ images/ # Portfolio images
βββ logos/ # Logos
βββ media/ # Media files (screenshots, certs, etc.)
scripts/
βββ generate-blog-meta.js # Generates static HTML for SEO
- π Hero, About, Portfolio, Blog & Articles, Certifications, Milestones, Talks
- π Blog Section with full article pages and SEO meta tags for social media sharing
- πΎ Lifestyle Section (Tennis & Coffee)
- βοΈ Contact Form with EmailJS integration and auto-reply confirmation
- π¨ Dark theme + glassmorphism design
- π± Responsive layout for all devices
- π Live links to projects, certificates, and experiences
- π SEO optimized with Open Graph tags for LinkedIn, Facebook, Twitter, WhatsApp
Clone the repo and install dependencies:
git clone https://github.com/JosephDavisC/Portfolio-Website.git
cd Portfolio-Website
npm installFor the contact form to work, create a .env file in the root directory:
VITE_EMAILJS_SERVICE_ID=your_service_id
VITE_EMAILJS_TEMPLATE_ID=your_template_id
VITE_EMAILJS_AUTOREPLY_TEMPLATE_ID=your_autoreply_template_id
VITE_EMAILJS_PUBLIC_KEY=your_public_keyRun locally:
npm run devBuild for production:
npm run buildThis site is deployed on Hostinger with a custom domain: joechamdani.com.
You can also easily deploy it on either Vercel or Netlify.
For the best experience, please view with extensions disabled or whitelist this site.
