Jet Pham's Personal Website
https://jetpham.com
| api | ||
| cgol | ||
| public | ||
| secrets | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| check_cleanup.txt | ||
| eslint.config.js | ||
| flake.lock | ||
| flake.nix | ||
| index.html | ||
| module.nix | ||
| package-lock.json | ||
| package.json | ||
| prettier.config.js | ||
| README.md | ||
| secrets.nix | ||
| tor.har | ||
| tsconfig.json | ||
| vite-plugin-ansi.ts | ||
| vite.config.ts | ||
jetpham.com
Personal site for Jet Pham.
The site is a small Vite app with a terminal-style UI, ANSI-rendered text, and a Rust/WebAssembly Conway's Game of Life background.
Features
- ASCII/ANSI-inspired visual style with the IBM VGA font
- Conway's Game of Life running in the background via Rust + WebAssembly
- Q+A page backed by the site API
- Single-file oriented frontend build with Vite
- Reduced-motion aware background controls with a static fallback mode
Stack
- Vite
- TypeScript
- Tailwind CSS v4
- Rust + WebAssembly
- npm
Development
Prerequisites
- Node.js + npm
- Rust
wasm-packwasm-opt(used bybuild:wasm)
Install
npm install
Build the WASM package
npm run build:wasm
Start the dev server
npm run dev
Check the app
npm run check
Build for production
npm run build
Structure
src/ frontend app
cgol/ Rust + WASM Conway's Game of Life module
Notes
- The homepage and Q+A page are the intended public pages.
- If WebAssembly fails or motion is disabled, the site falls back to a static background treatment.