This is the source code for the joint homepage of Spencer Imbleau and Sara Aslani, built with React,
TypeScript, and Vite. Profile blogs are built with Jekyll and served from each profile's /blog path.
Required Tools:
Installation:
pnpm install
BUNDLE_PATH=blogs/vendor/bundle bundle install --gemfile blogs/GemfileLocal Development:
pnpm devThis starts the joint homepage at / and includes Jekyll blog drafts, using the saved or browser-preferred language
without changing the URL. The explicit English, French, and Farsi selector routes are
/en, /fr, and /fa. Profile routes use the same prefixes, such as /en/spencer,
/fr/spencer, and /fa/sara. It also starts each configured Jekyll blog at its local profile path,
such as /spencer/blog/ and /sara/blog/.
To run the production-shaped Spencer site and its blog locally:
HOMEPAGE_SITE=spencer pnpm devProfiles without a configured blog run only the Vite development server.
Profile identity, hostnames, images, contact links, résumé and blog settings, SEO, and translation
keys are defined once in profiles.json. The UI, local routes, site builds, deployment
matrix, sitemaps, and Terraform all derive from that registry.
pnpm dev # Start Vite and the configured Jekyll blog
pnpm build # Build the selected profile and its configured blog
pnpm lint # Run ESLint
pnpm format # Format project files
pnpm check # Run formatting, lint, type, and build checks
pnpm preview # Preview production build locallyProduction builds default to the selector. To build and preview a profile site:
HOMEPAGE_SITE=spencer pnpm build
pnpm previewValid site values come from profiles.json, plus selector for the joint homepage.
Deployed dev and stg builds also include blog drafts; prod excludes them.
For blog authoring, shared media, and interactive embeds, see the profile blog documentation.
All three sites share the favicons, app icons, and Open Graph image generated
from public/logo.svg and public/og-banner.svg. Vite emits the appropriate
static metadata, robots.txt, and sitemap.xml for each independent site build.
To regenerate the shared assets after editing the SVGs:
./generate-assets.shLicensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option
See CONTRIBUTING.md for branch naming, PR title requirements, and validation.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.