Skip to content
Docs

The file manager

Browse, upload, edit and restore any site's or app's files in the dashboard, even on a phone. An app's change becomes its next version and goes live by itself.

Updated 27 Oct 20265 min read

Every site and app has a file manager in the dashboard, made by us. Open your app's or site's page and choose Files. It works on a phone too, over a slow connection.

What you can open

WhereWhat you can do
A WordPress or PHP site's folderEverything: read, upload, edit, delete. A save changes the file at once
An app's code, from GitHub or a ZIPEverything too. Each change becomes the app's next version and goes live by itself, in about a minute
Kept folders inside an app's code, like Laravel's storageMarked kept. Changes are saved straight away, without a new version: these are its permanent folders, kept between versions
A ready-made app from the catalogIts kept folders only. Its code comes from its makers, and its updates come from us

An app's files open as one folder tree: its code, with its kept folders inside it. Folders the app only writes while it runs, like Laravel's bootstrap/cache, aren't shown.

Owners and developers of the account can change files. Viewers and billing people can look at the list, but change nothing. You only ever see your own folders. Paths that try to climb out, like ../, and links that point outside are refused.

Changing an app's code

Your app's running copy never changes itself: a hacked app can't rewrite its own code. So a change you make in Files is saved as the app's next version, and that version goes live the usual way, without downtime. Go back to version 12 on the app's page still works, and two copies of your app always run the same code.

  • Saving says "Saved. Going live in about a minute…" and its status moves until the version is live.

  • A small change goes live in about 15 to 30 seconds. A PHP view, a template, a picture or a static page needs no install, so we lay the changed files on the version before. A change to composer.json, package.json, a lock file or your front end's sources makes a full version, as a push does.

  • Several saves close together go live as one: ten quick edits make one deploy, not ten. Each save is still kept as its own version.

  • If a version is still going live, Files says so, and your change is added on top of it.

  • If the last version didn't go live, you can still open Files, fix the file, and save: each save tries again.

  • Uploads into the code can be up to 5 MB a file, and 200 files or 20 MB a save. A ZIP is extracted where you are, as one version.

An app from GitHub

Saving in Files changes your app at once and opens a pull request in your repository, on a branch called tanzahost/edit-…. Merge it, so your next push keeps the change. Until it's merged, a push that would replace your change says so on its deploy page.

The first time, Files asks you to allow Tanzahost to open pull requests in that repository. Nothing is saved until you do. If this isn't set up on Tanzahost yet, Files says "not set up": change the code on GitHub and push it instead.

Upload

Choose Upload, or Upload a folder, or drag files onto the list. Big files go in pieces, so a dropped connection carries on where it stopped. One file can be up to 2 GB.

On a site, upload a ZIP and choose Extract here on it to unpack it where it is. Compress makes a ZIP or a tar.gz of the files you choose.

Edit

Choose a text file, then Edit. The editor colours PHP, HTML, CSS, JavaScript, JSON and .htaccess, and has search and replace. Text files up to 5 MB open here.

  • Saving checks that nobody changed the file since you opened it. If someone did, you choose whether to load theirs or keep yours.

  • On a site, every save keeps the version before it for 7 days. Open Earlier versions to restore one in a click. An app's earlier versions are on its page.

Everyday actions

Choose one or several files, then: Rename, Copy to…, Move to…, Download (a folder downloads as a ZIP), or Delete. New file and New folder make them in the folder you're in. Search finds files by name and inside text files.

The trash

On a site, and in an app's kept folders, a deleted file or folder goes to the Trash tab for 7 days: Restore puts it back where it was, and after 7 days it's gone for good. In an app's code, a deleted file stays in the version before: Undo right after the delete brings it back as the next version, and going back to an earlier version on the app's page works too.

Who can change a file

Permissions are shown in words, not numbers:

ChoiceMeansLike
Only the site can change itThe standard choice644 for files, 755 for folders
Only the site can read itFor secrets such as wp-config.php600
Anyone can change itUnsafe777

Choosing Anyone can change it asks you to confirm, and is noted in the activity.

Example: Asha fixes a redirect

Asha's PHP site orders sends visitors in a loop after she moved it. On her phone, she opens the site's Files, chooses .htaccess, then Edit, and removes an old RewriteRule for her previous host's address. She saves; the site picks it up at once. A minute later she sees she removed one line too many, opens Earlier versions and restores the one before. The site is right again.

Example: Asha fixes her Laravel shop's welcome page

Asha uploaded her Laravel shop as a ZIP. She opens the app's Files, then resources/views/welcome.blade.php, changes the greeting and saves. Files says "Saved. Going live in about a minute…"; about 20 seconds later the deploy page says "Quick change: 1 file". She uploads a new logo into public/img, renames an old one and deletes another: each is one more version. A visitor's upload in storage, marked kept, she renames straight away.

What's recorded

Every change is in the activity log: uploads, saves, renames, moves, deletes, restores and permission changes, with who made them. Looking at files isn't recorded. A site's page also lists its Recently changed files.

The file manager or the terminal?

Use the file manager for files: uploads, edits, restoring. Use the terminal to run commands, like php artisan migrate:status.