Docs · DevCatz

A site’s tabs

Every tab a DevCatz site can have, in order — when each one appears, what it does, and where its full page is.

Open a site in Projects and its page has a row of tabs under the header. Some are always there; others only appear when the project needs them — a site that sends no mail gets no Mail tab. Tabs that do not fit in the window move into More N at the end of the row. Every tab is there on macOS and on Windows.

The tabs at a glance

# Tab Appears
1 Overview Always
2 Env Always
3 Database Always
4 Storage When an S3 library is found
5 API Always
6 WebSocket With real-time libraries or Laravel Reverb
7 Search Engine With Laravel Scout or a search client
8 Git Always, with a status chip
9 Mail When .env has mailer keys
10 Gateways With WhatsApp or gateway keys
11 Docker Always
12 Logs Always
13 Settings Always

The header

Above the tabs: the site’s name, its URL chip (click opens the site), Start / Stop, Open ▾ (the site in a browser, the editor, FinderFile Explorer, a terminal) and Share, which puts the site on a public URL through Expose.

A desktop app — an Electron or Tauri project — has no web address, so its header reads Desktop app · opens in its own window instead of a URL chip, with the framework’s mark, and has no Share and no browser entry in Open. See Desktop apps.

Overview

The site at a glance:

  • A runtime banner when something is missing — PHP / Node.js / Go / Bun is needed, or the project asks for Node 20 — with Install <runtime> <version>. Rust sites list the missing tools instead.
  • A preview screenshot of the running site. A desktop app shows the card A desktop app in its place: Start opens its window, the way npm start does in a terminal. It has no web address, so there is nothing to preview or share here; its output is in Logs.
  • The detected Framework(s) and Stack (with tags such as monorepo, Prisma or redis) — see Detected stacks.
  • The Runtimes card, and how the site is run: Served by, Started as, Dev command.
  • The Apps table for sites with several apps: App, Stack, Command, Port, URL, and ↻ to restart one app. An app that opens its own window shows — (its own window) instead of a URL; a Tauri frontend keeps its port.
  • The Dependencies card: install or update per stack (an update asks first).
  • When the site crashed: a crash banner with ✦ Explain with AI (see AI in DevCatz).

Why Start would fail

Rather than letting the dev command stop with “command not found”, the Overview says what is missing before you press Start, and Start itself refuses with the same reason in the Logs:

Notice Means Button
Dependencies are not installed node_modules is empty, vendor/ is missing, or there is no .venv yet Install dependencies (npm install, composer install, uv sync …)
The virtualenv is broken .venv was made with a Python that is no longer installed, so nothing in it runs Install dependencies — the old venv goes to the TrashRecycle Bin and is made again (see A broken virtualenv)
Some packages are not installed package.json lists packages that node_modules does not have yet — added since the last install? Install dependencies
Electron is not fully installed The electron package is there, but its own download (the Electron app itself) is missing: the install step failed or was skipped (a proxy, no network, --ignore-scripts) Repair Electron

In a folder of apps, the notice names the folder (in api).

Install dependencies always answers. While it runs, the button shows the step; afterwards a notification reads Dependencies installed, or The install finished, but … See Logs when something is still missing. When there is nothing to install from, it says so instead of doing nothing — No package.json here to install from: use Re-detect stack (Settings) if the project changed, or No package.json, composer.json, go.mod, Cargo.toml or pyproject.toml in the site’s folders to install from — and when the runtime it needs is missing, it points at its page (Bun is not installed. Install it on the Bun page (sidebar) first.). A second press while one is running answers Busy.

Env

The site’s .env and its template files, in an editor.

  • Lock / Unlock — values are hidden while the file is locked.
  • Save (mod+S), Revert, and Reload (discard mine) to read the file from disk again.
  • No .env yet? Start it as a copy of .env.example.
  • ✦ Check with AI explains empty or odd keys against .env.example and suggests values that point at DevCatz services. It sends key names, never your values.

Database

Link the site to a database service (it then starts with the site), see its SQLite file or external database, and run its commands: migrations, seeds, the Artisan and Prisma cards, GORM and goose for Go, the Data access card, and the Redis card with its database index. All of it is on Databases.

Storage

Appears when the project uses an S3 library (Flysystem S3, the AWS SDKs, boto3 / django-storages, MinIO clients). It shows where the site’s storage points now, lets you pick or create a bucket, and writes the .env lines. See Object storage.

API

The site’s API description:

  • The OpenAPI card lists the spec files in the project and the URLs its running apps serve, with Open, Reveal in FinderShow in File Explorer and Look again.
  • No spec yet? Create openapi.yaml or Create swagger.json, or Add OpenAPI, which installs Scramble for Laravel or @nestjs/swagger for NestJS, with hints for FastAPI, swag and Express.
  • Open in DialCatz opens the site in DialCatz as an environment with its routes, ready for requests. If DialCatz is not installed, DevCatz offers to download and install it. See What the cats share.

WebSocket

Appears with real-time libraries (Socket.IO, Laravel Reverb, Ratchet, Channels, gorilla and more). Test the connection, run Reverb with the site, pick a server, write the .env lines and send a test broadcast. See WebSocket. Sockudo publishes no Windows build, so there it runs in DoCatz from its official image, with the same .env lines.

Search Engine

Appears with Laravel Scout or a search client. Pick an engine, write the .env lines, and run Scout’s import, flush and index settings per model. See Search engines. Typesense and Sonic publish no Windows build, so there they run in DoCatz from their official images, with the same .env lines.

Git

The full Git workflow for the site: changes, history, branches and tags, stashes, rebase with conflict help, worktrees and pull requests. The tab’s chip shows changed files and commits ahead or behind. See Git.

Mail

Appears when .env has mailer keys. Shows whether the mail catcher runs, writes the .env lines for the site’s stack, and lists recent mail from this site. See Mail.

Gateways

Appears with WhatsApp or gateway keys in .env (or a WhatsApp client library). Shows which gateway the site uses, its webhook, and Use another gateway. See Gateways.

Docker

Three steps: pick the engine (DoCatz recommended), write the Dockerfiles and the docker-compose.yml Dokploy and Coolify deploy (or use the project’s own), then test them in containers with Build & Up. Development services in Docker are optional. See Docker.

Logs

The output of the dev servers, or laravel.log:

  • a chip per app (All, then each app — also split from turbo prefixes like web:dev:),
  • follow to stay at the bottom, Clear,
  • ✦ Explain with AI for the lines you are looking at.

Git tasks (fetch, pull, push) write their output here too, and so does the reason when Start refuses.

Settings

The site’s own settings: name, domain and protocol (a desktop app has neither); dev command, package manager and runtime versions; managed ports and per-app addresses; what runs with Start (queue worker, scheduler, Celery); Free up space; Save (mod+S), Re-detect stack and Unlink…. Every option is on Sites, domains and HTTPS.

Last updated 2026-11-03