Appearance
Your first project
Two ways in: create one, or adopt one that already exists.
Create one
bash
dqx init ~/projects/my-app --scaffold laravel \
--client-name "My App" --domain my-app.test --php 8.4That writes the project, creates the application from a named recipe, installs it and starts it — one command, not a sequence you have to remember.
It tells you what it decided:
target ~/projects/my-app
site my-app.test
php 8.4
scaffold laravel:13 (`laravel` is the newest registered version dqx knows)
node 22 (the `laravel:13` scaffold sets it)
services db, mailpit (the `laravel:13` scaffold sets it)
clientKey my_app (derived from `My App`)Everything it assumed says why, and anything it will not guess it asks for instead. See creating projects for the whole surface, including several sites, aliases and your own recipes.
Adopt one that exists
A project with its own docker-compose.yml and a hand-written install script does not need rewriting. dqx adopt reads what the project already is and writes the declaration for it:
bash
cd ~/projects/existing
dqx adoptIt prints what it would write, what it read out of the project, and anything it could not place — and changes nothing. dqx adopt --write applies it.
It reads more than the old config: the schema each site's .env actually connects to, the image the stack actually runs, the repository each checkout actually came from. Where those disagree with what was declared, it says so rather than choosing quietly.
Then, every day
bash
dqx up # and dqx down
dqx shell # a shell in the site you are standing in
dqx composer | npm | artisan | test
dqx db --url # today's database URL, for a GUI client
dqx info # every URL this project serves
dqx doctor # what is and is not working hereThe daily commands page covers the rest.