0008: The application lives in its own folder

Why Laravel sits in wake/ and the site next to it.

  • Status: accepted
  • Date: 2026-10-18
  • Refined by: 0011, which splits site/ and storage/ into settings/, themes/, plugins/, data/ and temp/

Context

In a normal Laravel project, application code and site data are mixed. For a CMS that people update by uploading a ZIP, that is dangerous: one wrong folder and the content is gone.

Decision

The Laravel application, including vendor/, lives in wake/. Everything that belongs to the site owner sits next to it:

wake/      application, replaced on update
site/      configuration, blueprints, theme
content/   content
storage/   runtime data
public/    document root
.env       secrets (application key, mail)

wake/bootstrap/app.php points Laravel's public path, storage path and environment file to the parent folder.

Consequences

  • An update replaces exactly one folder.
  • Artisan is called as php wake/artisan … from the site root.
  • Laravel developers find a familiar application inside wake/.

Alternatives considered

  • A Composer package inside a normal Laravel app. Clean for developers, but updates would require Composer, which many hosts don't offer.

source: docs/decisions/0008-application-in-its-own-folder.md