- Terminal-inspired design with accessible colors (WCAG AA)
- Responsive split-screen layout (desktop) / single-column (mobile)
- Built with Deno + React, with on-the-fly TSX transpilation via esbuild in the dev server
# macOS/Linux
curl -fsSL https://deno.land/install.sh | sh
# Or via Homebrew
brew install deno# Start local dev server with hot reload
deno task dev
# Open http://localhost:8000 in your browserThe dev server watches for file changes and auto-reloads.
# Install dependencies (first time only)
npm install
# Run all linters (TypeScript/React + CSS)
npm run lint
# Auto-fix issues where possible
npm run lint:fixIndividual linters:
npm run lint:js- ESLint for TypeScript/Reactnpm run lint:css- Stylelint for CSS
ohEmily.github.io/
├── src/
│ ├── main.tsx # React entry point
│ ├── App.tsx # Main app component with routing
│ ├── components/ # React components (Sidebar, Timeline, PhotoSampler, etc.)
│ ├── pages/ # Page components (Home, Resume)
│ ├── data/ # Timeline data for experience/education
│ └── styles/ # Global CSS with terminal theme
├── scripts/
│ ├── build.js # esbuild production bundler
│ ├── deploy.sh # Deployment script
│ └── dev-server.ts # Deno development server
├── images/ # Photos and icons
├── index.html # HTML entry point
├── deno.json # Deno configuration and tasks
└── package.json # npm dependencies (linting, esbuild)
# Create optimized bundle.js using esbuild
deno task build# Build and deploy to gh-pages branch
deno task deployNote: The deploy script currently assumes macOS/BSD sed syntax.
This will:
- Build the production bundle with esbuild
- Copy deployment files (hashed
bundle.<timestamp>.js, hashedglobal.<timestamp>.css,images/,favicon.svg, and optionalCNAME) - Create a 404.html for client-side routing fallback
- Push to
gh-pagesbranch - Your site will be live at https://ohemily.github.io
Note: First-time config in GitHub Pages:
- Go to repository Settings → Pages
- Set source to "Deploy from a branch"
- Select
gh-pagesbranch and/ (root)directory - Save
- Timeline data: Edit
src/data/timeline.ts - About section: Edit
src/pages/Home.tsx - Resume link: Edit
src/pages/Resume.tsx - Social links: Edit
src/components/Sidebar.tsx - Photos: Replace images in
images/directory
- Colors/theme: Edit CSS variables in
src/styles/global.css - Layout: Modify grid columns in
.app-containermedia query - Typography: Change
--font-monoin:root
- Runtime: Deno 2.x (dev server), Node.js (build/linting)
- Framework: React 18
- Routing: React Router 6
- Bundler: esbuild
- Styling: Vanilla CSS with custom properties
- Linting: ESLint + Stylelint
- Deployment: GitHub Pages (gh-pages branch)