Modulify

Files and code

Read the source of your site and export it as a zip.

On this page

Every Modulify site is a real codebase, and the File Explorer tab lets you read it. It is a reader, not a code editor: files open read only, and changes go through chat.

Open the File Explorer

The tab lives behind More in the tab strip. Click More, then File Explorer. It has two sub-tabs, Files and Settings.

Browse the tree

The tree sits on the left under a Files heading. Click a folder to open it and a file to open it in a tab.

Three buttons sit at the top of the tree: Collapse all, Expand all and Search. Search opens a filter box under the heading, placeholded Filter files, which narrows the tree as you type. Cmd or Ctrl with Shift and F swaps the tree for a search panel where you type at least two characters to match file names and paths, with results capped at 100. A search with no hits reads No matches with Try a different word or file name.

When the filter matches nothing the tree reads No matches with Clear the filter to see all files., and on a site with no files yet it reads No files with Files appear here once the site generates.

Cmd or Ctrl with B hides and shows the tree. When the panel is too narrow to hold the tree beside the file, it collapses into a Files button that opens it as a drawer.

If your code cannot be reached, the tree never pretends the site is empty. It reads Could not load files with Your site code is unreachable right now. and a Retry button, which puts the tree back into its loading state and asks again. The search panel shows the same message. It does not mean your files are gone, and nothing is saved over them while the code is unreachable.

Work with open files

Open files stack as tabs across the top. Right click a tab for Close, Close Others, Close to the Left, Close to the Right and Close All. Options that have nothing to act on are greyed out.

With no file open the panel reads No file open and Choose a file from the tree. If the file you had open has since gone, it reads The file may have been deleted. A file that cannot be opened reads Could not load file with This file could not be read now., and a file that is no longer in the saved code reads No saved file with This file is missing from saved code., each with its own Retry. When the whole tree could not be loaded, an open file reads Could not load file with Your site code is unreachable right now.

The tree and open files follow your saved code. When a chat message, a text edit, a preview sync or a restore saves new code, files it changed reload, files it removed close, and new files appear, for everyone with the editor open.

Read a file

Code opens with line numbers, syntax highlighting, bracket matching and folding. It is read only, so to change something, describe the change in chat.

The toolbar above the file opens with the file's icon and name, so you can tell what you are reading without looking back at the tabs.

On the right sit Reference and a three dots menu holding Copy, which copies the whole file and flips to Copied!, and Download, which saves that single file.

Reference drops a chip for the open file into the chat box, the same chip the @ picker places, so you can write "tidy up [File #1]" without typing the path. It is greyed out once that file is already in your message, with the tooltip This file is already referenced in your message. Attachments and context covers what you can then do with the chip.

Images open as a preview rather than as text. An SVG gets a Code and View switch so you can flip between its markup and the rendered image.

Export the whole site

The Settings sub-tab has one section, Export, described as downloading your whole site as source code you can run anywhere. Moving the code into your own GitHub is a separate thing, on the project's Settings tab, covered in Move your code to GitHub.

Export .zip downloads the full source of your site. It requires a paid plan. On a free plan the button carries a Paid badge and is disabled, with the tooltip Exporting your code requires a paid plan.

The file is named after your project slug, for example my-site-code.zip. Inside, the source sits in a single folder carrying that same slug, so unzipping it gives you one my-site directory holding the whole site.

The export reflects the current preview of your site, which is the same source the editor shows. Publish state does not change what you get.

If the download fails, the message says why rather than handing you a partial archive. A site too big to package in one file answers Your site is too large to export as a single zip. Clone it from GitHub instead!, and a temporary problem reading the source answers Could not read your code from GitHub. Please try again in a moment!. An export never completes with files missing.

From an AI client over MCP

list_files and read_file read the source, and write_file replaces files directly in the running preview. When the source cannot be read from GitHub at that moment, list_files and read_file fail with Could not read your code from GitHub. Please try again in a moment! rather than answering with an empty list or an empty file.

write_file bypasses the AI entirely, so nothing about the change is explained or reviewed, and no code backup is taken when it is written. It only reaches Backups, as a Preview sync entry, once the preview is next saved: when the editor opens, just before a publish, or after a chat run is stopped or fails. Take a backup first for anything substantial. It needs the preview to be running, replaces the whole file rather than patching it, and needs the code:write scope, which is unticked by default.

When you want a change described rather than dictated, send_message is the better tool, because the AI reads the surrounding code first.

See MCP tools.

Next

  • Logs shows what the code is doing when it runs.
  • Site chat is how you change any of these files.