This is your Nim codebase — like a VS Code working folder, stored in
your browser (IndexedDB). Click a file to edit it. The whole folder is
mounted at /workspace on every compile, so
import sibling and import sub/mod work.
Run compiles the file open in the editor;
Build compiles every .nim file into
its own .wasm in the Site folder; the site boots the build entry (main.nim, or the example you picked — use a file's entry button to choose another).
Export ZIP downloads the whole folder.
This is the deployed static website — the working folder of the app
pane, which renders this folder's index.html. Press
Build to compile your project into it
(one .wasm per .nim file +
index.html with the JS runtime inlined, minified;
the entry's wasm is the one index.html boots).
Export ZIP downloads
the whole folder. You can add your own files (CSS, images, …) —
Build only writes generated .wasm files and a
generated index.html (a hand-edited
index.html is kept, and only then does Build
write nim-runtime/* next to it — legacy mode),
and it removes stale .wasm files that no longer match
a project .nim source — an uploaded .wasm
matching no project module is removed on Build; non-wasm uploads
are never touched. Built .wasm files are obfuscated
(Nim name/producers sections stripped, decoy GCC comment injected),
and calling bindDomain("example.com") in your Nim code
makes the deployed site refuse to boot on any other domain —
deterrence against casual theft, not cryptographic security.
Libraries are stored in your browser (IndexedDB) and mounted at
/libs/<name> before every compile — adding or
removing one takes effect on the next Run, no reload needed. After
adding nim-lang/checksums, for example, import checksums/md5 just works.