Explore photographs with 14 creative electromagnetic spectrum simulations, from radio and microwave through infrared, visible light, ultraviolet, X-rays, and gamma rays.
Created and designed by David B. Stevens
BUILT BY GPT6 ASTRA
Contact: info@spectrumsimulations.com
Live app: spectrumsimulations.com
- Six stock photographs: landscape, cityscape, people, animals, flowers, and coast.
- Local JPG, PNG, and WebP uploads up to 20 MB (40 megapixels maximum).
- Fourteen simulated bands, plus the original image and an all-bands gallery.
- Adjustable opacity and strength, and blending between two effects.
- Split comparison with a draggable divider, smooth cursor-centered wheel zoom, and panning.
- Automatic spectrum playback, saved favorite settings, and an RGB pixel inspector.
- PNG image/comparison downloads and animated GIF spectrum exports.
- Modeled and Classic rendering, with older favorites retaining their Classic appearance.
- Linear-light visible spectrum approximation with wavelength and bandwidth controls.
- Material-aware infrared, UV, thermal, and radar illustrations; editable circular material regions and a material map.
- X-ray transmission using NIST attenuation data, assumed thickness, energy, and display polarity.
- Movable hypothetical radio/gamma sources, gamma exposure and noise controls, and separate display palettes.
- Local comparison with an already aligned sensor reference image supplied by the user.
These are educational and artistic simulations using ordinary RGB photos and editable assumptions. Some stages use physical equations; other material responses are qualitative. They do not recover invisible wavelengths or detect heat, radiation, internal anatomy, or radio signals. Color hints are simple rules, not AI recognition. See Rendering notes and research sources for the equations, limitations, and validation scope.
Install Node.js 24 or later and pnpm 11.19.0. From the repository folder:
npm install --global pnpm@11.19.0
pnpm install --frozen-lockfile
pnpm build
pnpm startOpen http://127.0.0.1:4173. Stop the server with Ctrl+C. After editing source files, run pnpm build again and refresh the page. pnpm dev builds and starts the same local preview; it does not watch for changes.
No API keys, accounts, database, Codex installation, or proprietary hosting services are required to build or run the app. The build downloads dependencies during installation; the resulting app keeps its images, font, scripts, and styles local.
pnpm build creates:
outputs/public_html/: optimized, pre-rendered static website, with local assets, SEO metadata, sitemap, robots.txt, and optional Apache caching rules.outputs/Spectrum.html: self-contained offline app with embedded images. Open it directly in a browser.
Upload the contents of outputs/public_html/ to your domain's document root. Apache can use the included .htaccess; other static hosts can serve the HTML and assets without it. For a GitHub Pages project, publish those same contents. Relative asset links support subfolders; change siteUrl in lib/site-seo.ts to your deployment URL, including any subfolder and a trailing slash, before building a fork. The supplied canonical URL is https://spectrumsimulations.com/.
The GitHub workflow runs checks on pushes and pull requests and provides downloadable build artifacts. A tag such as v1.0.0 also creates a GitHub Release with the website ZIP and offline HTML. Website hosting is separate; the workflow does not change the live domain.
pnpm checkChecks cover TypeScript, all 84 stock-photo/band combinations, opacity and mixing, transparent pixels, zoom geometry and animation, favorites validation, GIF decoding and cancellation, NIST reference transmission, temperature and thickness behavior, spectral selectivity, material regions, hypothetical source independence, and generated website content/assets. These are software and equation checks, not validation against calibrated sensor captures. Test images stay local. .build/ and outputs/ are generated and excluded from Git.
app/page.tsx,app/globals.css: application interface and styles.components/: viewer, controls, guide, and UI primitives.lib/: spectrum effects, zoom, exports, favorites, and site metadata.public/photos/: sample photographs and original credits.scripts/: portable static/offline build and local preview server.tests/: processing, interaction, and export checks.
Uploaded photos are processed in the browser and are not sent to a server by this app. Favorite settings are stored in the current browser's local storage; image data is not stored with them. Exports are saved when requested. The app includes no analytics or tracking code. Your hosting provider may keep normal web access logs.
Original application code is released under the MIT license, copyright 2026 David B. Stevens. The sample photos, Geist font, and third-party software retain their own licenses; see THIRD_PARTY_NOTICES.md. The MIT license requires preservation of copyright/license notices; it does not require visible UI attribution in forks.
Bug reports and pull requests are welcome. See CONTRIBUTING.md. For a security issue, see SECURITY.md.