portfolio/works-source.json is the editable source of truth for works on the
website. Do not edit portfolio/works.json or portfolio/works-data.js
directly; both are generated for the browser.
assets/audio/ contains public MP3 excerpts encoded at constant 128 kbps.assets/images/ contains public WebP images, limited to a 1920 px long
edge and encoded at quality 80./Users/steviesutanto/Documents/PersonalWebsite-source-assets/ is outside
this repository and holds source-quality media. The first migration retained
originals in images/ and portfolio/works/; newly imported works are
archived in works/<work-slug>/.Keep source-quality media in the external archive. The GitHub Pages repository should contain only optimized site assets.
The maintenance scripts require:
ffmpeg and ffprobecwebpOn macOS with Homebrew, these tools are provided by:
brew install node ffmpeg webp
From the website project root, run:
npm run portfolio:add
The command asks for the work title, year, instrumentation, category, description, comma-separated tags, optional primary link, source audio path, and optional source image path. It then:
assets/audio/ at constant 128 kbps.assets/images/ when an image is supplied, or uses
the default site image.portfolio/works-source.json.The source audio should already be trimmed to the excerpt duration intended for the public website. The importer encodes it; it does not edit its length.
After importing, edit the new entry in portfolio/works-source.json as needed:
category, description, and tags control display metadata and similarity
connections.primaryLink can be a full URL or null.imageSrc selects an existing public WebP image.position controls the constellation location; set it to null for an
automatically selected initial position.audioRadius and audioCoreRadius tune spatial listening behavior.Regenerate browser data after any metadata edit:
npm run portfolio:build
The build command validates source entries and public assets, preserves chosen positions, assigns a position to new works, and recalculates similarity links. Adding a web work no longer requires updating or parsing the CV PDF.
Preview the site over HTTP:
npx --yes serve .
Open the printed local URL and check the work label, image transition, audio playback, and outbound link. Once confirmed, publish the content update:
git add portfolio assets
git commit -m "Add <work title>"
git push