Personal portfolio and digital resume, positioned around Microsoft Power Platform development (Power Apps, Power Automate, Power BI, Dataverse) with pro-code React expertise.
Built with React 18 + Vite + Framer Motion. Mobile-first, animated, with a dark/light theme toggle (remembers the visitor's choice, defaults to their system preference).
All copy lives in one file — no component changes needed to update the site:
src/data/portfolio.js
profile— name, tagline, email, socialsstats— the hero numbersservices— the "What I do" cardscaseStudies— Power Platform case studies (Challenge → Solution → Impact). Update the metrics with your real project figures.reactProjects— personal React projectsskillGroups,experience,educationcertifications— empty by default; add entries (e.g. PL-900, PL-400) and the section appears automatically under Experience.
npm install # install dependencies
npm run dev # local dev server
npm run build # production build → ./build (Firebase Hosting expects this folder)
npm run preview # preview the production buildThe contact form uses EmailJS. It reads these env vars (same names as the existing GitHub Actions secrets):
REACT_APP_EMAIL_SERVICE_ID
REACT_APP_EMAIL_TEMPLATE_ID
REACT_APP_EMAIL_SERVICE_PUBLIC_KEY
If they're not set, the form falls back to a plain mailto: link.
index.html carries the full SEO head: canonical URL, Open Graph + Twitter cards with a branded
share image (public/og-image.png), JSON-LD Person structured data, and favicons generated from
public/favicon.svg. public/robots.txt and public/sitemap.xml are deployed as-is.
If you attach a custom domain, search for portfolio-d8a16.web.app in index.html,
public/robots.txt and public/sitemap.xml and replace it with your domain.
Deployed to Firebase Hosting via GitHub Actions — pushes to main deploy to the live
channel; pull requests get a preview channel automatically.