Install

From an empty folder to a running Phlo app in two minutes, and from there to a production setup with worker mode, realtime and central management.

Local development

With Docker (fastest)

$ docker run -it -v $(pwd)/app:/app ghcr.io/q-ainl/phlo php /phlo/install.php /app
$ docker run -p 80:80 -v $(pwd)/app:/app ghcr.io/q-ainl/phlo

Prefer HTTPS on localhost? Caddy provides a local certificate; then open https://localhost and accept the one-time browser warning

$ docker run -e SERVER_NAME="localhost" -p 80:80 -p 443:443 -v $(pwd)/app:/app ghcr.io/q-ainl/phlo

Or from the source code

$ git clone https://github.com/q-ainl/phlo.git /opt/phlo
$ php /opt/phlo/install.php /var/www/example.com/

What the installer does

  • Asks for a name, host and the resources your app needs
  • Resolves requirements between resources automatically
  • Generates the project structure: source, data, php and webroot
  • Only finishes after a clean build, so you always start green

Building happens automatically with every request, explicit is also possible

$ php www/app.php build::run

Packages

All components are also available as packages. The engine, the CMS, and the dashboard via Composer:

$ composer require phlo/tech
$ composer require phlo/cms
$ composer require phlo/dashboard

The daemon (warm workers, realtime and tasks) and the WhatsApp bridge via npm:

$ npm install phlo-daemon
$ npm install phlo-whatsapp

Assemble your app

Choose resources and configuration in the browser; get a ready-to-use app.phlo, app.json, and entry. Requirements between resources are automatically resolved.

Resources

DOM21
general33
security11

www/app.php

data/app.json

app.phlo

Start with a demo

Small, complete example projects. Download as a Docker package and run with one command, or view the source code.

Realtime poll

Realtime poll

A live poll where votes come in directly for each visitor via Phlo Realtime. Explained step by step in the Learn tutorial.

Presentation

Presentation

An audio timeline editor for narrative presentations and videos: Whisper transcription, AI dubbing, and an AI director that creates a storyboard from your media library.

CMS

CMS

A schema-driven blog with admin, media, and relationships, delivered with a filled dataset.

WhatsApp

WhatsApp

A WhatsApp bot that receives and responds to messages via webhooks.

Trade

Trade

A marketplace on MySQL: ads, categories, and search filters.

Production architecture

A Phlo app is not a standalone script but part of a server platform: FrankenPHP in worker mode, a vhost per app, the optional daemon for realtime and tasks, and the dashboard for fleet overview. The same setup that this site itself runs on.

And with growth, the same setup scales horizontally: the app tier is stateless and runs identically behind a load balancer, with sessions in Redis or the database and the actual scaling work in the data tier.

Setting up your own server? Assemble your configuration on the server setup page and get one script that transforms a bare Debian machine into this complete platform: FrankenPHP with your vhosts, database, daemon, firewall, and optionally a mail server.

Next steps

We use essential cookies to make this site work. With your permission we also use analytics to improve the site.