Skip to content

About

Greenfield Symfony 8 CMS engine for PHP-first deployments. No Node.js / npm / node_modules in this repository — not for production and not for local PHP work. Composer + AssetMapper only.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

67 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebHemi.PHP

Greenfield Symfony 8 CMS engine for PHP-first deployments. No Node.js / npm / node_modules in this repository — not for production and not for local PHP work. Composer + AssetMapper only.

UI (TypeScript/React, including admin pages) is built in webhemi-ui and synced or pulled via NPM as @webhemi/ui. Controllers under assets/react/controllers/ are plain JS re-exports.

Minimum PHP Version Email Software License

Build Status PHPCS PHPStan Deptrac PHPUnit codecov

Requirements

  • PHP >= 8.4
  • Composer 2
  • MariaDB/MySQL (default local: webhemi_dev) or SQLite/PostgreSQL

Quick start

composer install
php bin/console importmap:install
composer run sync-ui          # copies ../webhemi-ui/dist → assets/webhemi-ui
php bin/console doctrine:migrations:migrate -n
# or on a fresh DB after dump-schema:
# php bin/console doctrine:schema:create -n
php bin/console app:seed -n
symfony server:start   # or php -S 127.0.0.1:8000 -t public

PHP upload limits (media library)

Default PHP often caps uploads at 2M. Media library video needs more.

Preferred (Symfony local server): project-root php.ini sets upload_max_filesize / post_max_size to 64M. Restart after changing it:

symfony server:stop
symfony serve -d --port=8000

Confirm via /_profiler/phpinfo (dev) or:

# should show 64M under the running server’s PHP, not only CLI
symfony php -r 'echo ini_get("upload_max_filesize"), PHP_EOL;'

Optional CLI / system conf.d copy: config/php/99-uploads.ini.

Default seed:

  • Admin: admin@webhemi.local / admin
  • Site: main / Main site
  • Hosts: admin.webhemi.local (admin surface), www.webhemi.local (site surface) — both already active and assigned to main (probe skipped for local fixtures)
  • If missing, writes var/config/webhemi.yaml with access.admin: domain (template: config/webhemi.yaml.dist)

Map those hosts to 127.0.0.1 in /etc/hosts (or Windows hosts file) for multi-domain smoke tests.

Install config (var/config/webhemi.yaml)

Gitignored runtime settings (defaults if the file is absent: access.admin: path). See hub Admin_API_Access_Mode.md. Copy from config/webhemi.yaml.dist or rely on app:seed.

Operator-created hosts in admin follow pending → verify → assign → active (hub plan); see probe mechanics.

Local UI workflow

Until @webhemi/ui is published to NPM:

  1. Develop components in ../webhemi-ui (npm run storybook)
  2. cd ../webhemi-ui && npm run build
  3. composer run sync-ui in this repo
  4. Refresh the PHP app — AssetMapper serves assets/webhemi-ui

Production path (after publish): php bin/console importmap:require @webhemi/ui against the registry/CDN, still with zero Node on the VPS.

Surfaces

Surface Purpose
admin Dedicated admin host (domain mode); UI at / → /admin
site Public site + /login (frontend auth); path-mode admin at /admin

Host → surface resolution: App\Routing\HostContextSubscriber.

QA

composer qa

Runs lint, PHPCS, PHP CS Fixer (dry-run), Rector (dry-run), PHPStan, PHPCPD, PHPLOC, Deptrac, and PHPUnit.

Optional: composer run qa:psalm

Git hooks

Enable the repository-managed Git hooks (CRLF check + composer run qa on pre-commit):

chmod +x .githooks/pre-commit
git config core.hooksPath .githooks

Docs

About

Greenfield Symfony 8 CMS engine for PHP-first deployments. No Node.js / npm / node_modules in this repository — not for production and not for local PHP work. Composer + AssetMapper only.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages