Laravel hosting that speaks artisan.
Push to GitHub. We read composer.json, install your packages, build your front end, run your migrations before going live, and keep your queue workers and scheduler running.
- PHP8.0 → 8.5
- DeploysWithout downtime
- ProcessesWeb, workers, scheduler
- Priced byWhat it uses
We read your code, so you don't write a build script.
Everything we need is already in your repository. Every build shows what we found and what we ran, line by line.
| File | What we do with it |
|---|---|
composer.json | Laravel, and the PHP version it asks for. We run composer install without your dev packages. |
package.json | Your front end: if it has a build script, like Vite's, we install its packages and run it. |
artisan | With laravel/framework, it tells us this is Laravel: storage is kept, and the Laravel commands appear on the app's page. |
storage/ | Kept between deploys, with your uploads and logs. bootstrap/cache is writable and fresh at each start. |
tanzahost.json | Optional: the PHP version, extensions, system packages and commands, if you need them. |
Workers and scheduled tasks, with nothing to babysit.
Add a worker for your queue, such as php artisan queue:work, and a task for Laravel's scheduler, php artisan schedule:run every minute. Each runs from your app's live version, with its variables, and its logs show live.
- Up to 5 workers per app, each with its own command, and limits of its own if you like.
- Up to 10 scheduled tasks, as often as every minute, in UTC, with the last 20 runs and their last lines kept.
- A task still running at its next time is skipped, and one running for over an hour is stopped.
- reading today's prices
Migrations run before visitors arrive.
Tick “Run migrations on each deploy”, and php artisan migrate --force runs once, in its own sandbox, after the build and before the switch.
If it fails, nothing changes
The deploy stops, and the version before it keeps serving your visitors.
Checked before the switch
The new version must answer its health address, like Laravel's /up, before it gets a single visitor.
Watched for five minutes
If the new version stops by itself within five minutes, visitors go back to the previous one, and we tell you.
Roll back in one click
The build before the live one, deployed again without downtime.
Uploads that survive every deploy.
Your code is fresh and read-only on every deploy, so a hacked app can't change itself. Laravel's storage folder is the exception: it's kept, with your uploads and logs.
Laravel commands on the app's page
Run migrations, Storage link, Clear cache, and Maintenance on and off. Each runs once with your live version, its variables and its storage, and its output streams as it happens.
Your storage, in the browser
Browse, upload and edit the files in storage with the file manager. Your code can be read there, never changed.
A terminal inside your app
Run any artisan command in the browser, inside your app's own sandbox.
Every PHP from 8.0 to 8.5.
We use the newest version that meets what composer.json asks for, or the one you pick in the app's settings. Change it any time, and the next build uses it. Tick the PHP extensions your app needs, and the next build includes them.
- PHP 8.5Supported
- PHP 8.4Recommended
- PHP 8.3Supported
- PHP 8.2Supported
- PHP 8.1End of life
- PHP 8.0End of life
End-of-life versions show a warning and the date they're removed: 31 December 2027 for PHP 8.0 and 8.1. PHP 7.4 is kept only for sites moved from cPanel.
A Laravel shop, priced in the open.
Say duka's web app and its queue worker together hold 0.85 GB of memory and use about a third of a processor, awake all month. You pay for that use, hour by hour, from your wallet. The limits you set cost nothing by themselves.
reading today's prices