Rebuilt portfolio site driven by structured data sourced from studio PDFs (Artist Deck, Work + Titles, Exhibition releases). Each page pulls copy and imagery from src/data/ so updates only require editing JSON.
npm install— install dependencies.npm start— run the development server athttp://localhost:3000.npm run build— create a production build inbuild/.npm run deploy— push the compiled site to GitHub Pages (gh-pagesbranch).
public/files/— original PDFs used for copy, downloadable from the site.src/data/artworks.json— artwork catalogue (title, medium, image path, palette, statements).src/data/profile.json— statement, bio, contact, education, and awards.src/data/exhibitions.ts— exhibitions and residencies.src/data/posters.json— poster editions available for Stripe checkout.src/data/archiveWorks.ts— legacy BFA works showcased on the About page.
All artwork imagery lives in public/images/artworks/ and is referenced relatively, so deployments work cleanly from any origin.
- Fonts: Fraunces (display) and Sora (body) via Google Fonts.
- Palette: punchy blush gradients with deep plum charcoal, animated slightly via scroll-reactive CSS variables (see
src/components/Layout/Layout.tsx). - Components use CSS modules for scoping; add new styles alongside each component.
Ensure the repository name matches the homepage value in package.json. Run npm run deploy; the script builds the app and publishes build/ to the gh-pages branch. All routes use process.env.PUBLIC_URL to keep assets working from any base URL.
Create a .env.local file with stripe publishiable key and api base url
-
Create
server/.envwith your secrets -
Install dependencies and start both apps:
npm install
npm run server # in one terminal, starts http://localhost:4242npm start # in another terminal, frontend reads REACT_APP_API_BASE_URL for API callsThe build uses Stripe Checkout (cards, wallets) on /posters, supports poster detail pages (/posters/:posterId), surfaces a cart drawer + mobile cart prompt, and routes Stripe redirects to /posters/checkout/result for success/cancel summaries.
- The GitHub Pages build remains static. Deploy the payment server separately (Render, Railway, Fly.io, etc.) and set
APP_URLto the public site origin. - Update
REACT_APP_API_BASE_URL(or overrideapiBaseUrlinsrc/services/payments.ts) if the payments API lives on a different host (e.g.https://payments.example.com).