getherbie / herbie
Herbie is a simple, modern, fast and highly customizable flat-file Content Management System (CMS) powered by PHP, Twig, Markdown, Textile, reStructuredText and other human-readable text files.
Installs: 2 165
Dependents: 21
Suggesters: 0
Security: 0
Stars: 84
Watchers: 7
Forks: 15
Open Issues: 6
Requires
- php: >=8.0
- composer-runtime-api: ^2.0
- ext-json: *
- ausi/slug-generator: ^1.1
- imagine/imagine: ^1.3
- psr/container: ^1.1
- psr/event-dispatcher: ^1.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.1
- psr/simple-cache: ^1.0
- symfony/console: ^5.0
- symfony/finder: 5.4
- symfony/yaml: ^5.4
- twig/twig: ^3.4
Requires (Dev)
- codeception/c3: ^2.7
- codeception/codeception: ^4.2
- codeception/module-asserts: ^1.0.0
- codeception/module-phpbrowser: ^1.0.0
- doctrine/rst-parser: ^0.5.2
- erusev/parsedown: ^1.7
- erusev/parsedown-extra: ^0.8.1
- friendsofphp/php-cs-fixer: ^3.11
- getherbie/plugin-simplecontact: dev-master
- getherbie/plugin-simplesearch: dev-master
- guzzlehttp/psr7: ^2.4
- laminas/laminas-diactoros: ^2.26 || ^3.5
- netcarver/textile: ^4.0
- nyholm/psr7: ^1.5
- nyholm/psr7-server: ^1.0
- phpstan/phpstan: ^1.8
- slim/psr7: ^1.6
- squizlabs/php_codesniffer: ^3.7
- symfony/process: ^5.4
- 2.x-dev
- v2.1.0
- v2.0.0
- v2.0.0-RC1
- 1.x-dev
- v1.1.0
- v1.0.1
- v1.0.0
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.0
- v0.6.1
- v0.6.0
- v0.5.1
- v0.5.0
- dev-2.x-develop
- dev-2.x-develop-ci-matrix
- dev-2.x-develop-matrix-ci
- dev-2.x-develop-adminpanel
- dev-2.x-develop-sorted-data
- dev-2.x-develop-snake-case
- dev-2.x-develop-camelize
- dev-2.x-develop-menu-items
- dev-2.x-develop-url-matcher-etc
- dev-2.x-develop-construct-options
- dev-2.x-develop-extendpaths
- dev-2.x-develop-prism
- dev-2.x-develop-request
- dev-1.2-back-on-track
- dev-master
- dev-1.x-develop
- dev-1.x-adminpanel
This package is auto-updated.
Last update: 2025-04-16 13:13:37 UTC
README
Herbie
Create small but fully functional websites or blogs in no time and with little effort 👌
Herbie is a simple, modern, fast and highly customizable flat-file Content Management System (CMS) powered by PHP, Twig, Markdown, Textile, reStructuredText and other human-readable text files.
Featuring
Herbie is powered by proven libraries:
- Markdown, reStructuredText and Textile for formatting page content
- Twig template engine for rendering layouts and extending the core
- Yaml and JSON for data structure files
- Composer and Packagist for Dependency and Plugin Management
Thanks to its plugin system Herbie is highly customizable and brings support for:
- Application and Route Middlewares
- Event Listeners
- Twig Filters, Twig Globals, Twig Functions and Twig Tests
- Symfony Console Commands
Herbie implements the following PHP standard recommendations:
- PSR-1 Basic Coding Standard
- PSR-3 Logger Interface
- PSR-4 Autoloading Standard
- PSR-7 HTTP Message Interface
- PSR-11 Container Interface
- PSR-12 Extended Coding Style
- PSR-14 Event Dispatcher
- PSR-15 HTTP Handlers
- PSR-16 Simple Cache
- PSR-17 HTTP Factories
Herbie is well tested:
- Unit, Integration and Acceptance Tests with Codeception
- Static Code Analysis with PHPStan
- Code Fixing with PHP Coding Standards Fixer
Supported PHP Versions
8.0 / 8.1 / 8.2 / 8.3
Installation
With PHP and Composer on your machine
The easiest way to install Herbie is through Composer. Run the following commands in your terminal to create a new project and install all dependent libraries.
composer create-project getherbie/start-website mywebsite
Change to the mywebsite/web
directory.
cd mywebsite/web
Start the built-in webserver.
php -S localhost:8888 index.php
Open http://localhost:8888 with your browser. You should see your first Herbie website.
With Docker and Docker Compose on your machine
Create website and install dependencies.
docker run --rm -v $PWD:/app composer create-project --ignore-platform-reqs getherbie/start-website mywebsite
Change to the mywebsite
directory and start website.
cd mywebsite
docker compose up website
Open http://localhost:8888 with your browser.
Development Environment
If you need a development environment, you can follow these steps.
With PHP and Composer on your machine
Clone the GitHub repository.
git clone https://github.com/getherbie/herbie.git
Change to the herbie
directory.
cd herbie
Install Composer dependencies.
composer install
Change to the website/web
directory.
cd website/web/
Start PHP's internal web server.
php -S localhost:8888 index.php
Open localhost:8888
with your favorite web browser.
If you want to have additional console output or logging information, set the debug environment variable.
HERBIE_DEBUG=1 php -S localhost:8888 index.php
If you want to use Xdebug (3.x), start the internal web server as follows. Hint: For this to work, Xdebug must of course be installed.
XDEBUG_MODE=debug php -S localhost:8888 index.php
With Docker and Docker Compose on your machine
Clone the GitHub repository.
git clone https://github.com/getherbie/herbie.git
Change to the herbie
directory.
cd herbie
Start PHP's built-in web server and launch website.
docker compose up website
Open localhost:8888
with your favorite web browser.
Other Docker Compose commands are
# install Composer dependencies
docker compose run install
# run test suite
docker compose run test
# start test suite website
docker compose up test-website
# run bash terminal
docker compose run bash
You can use different PHP versions.
PHP_VERSION=8.0 docker compose up website
PHP_VERSION=8.1 docker compose up website
PHP_VERSION=8.2 docker compose up website
PHP_VERSION=8.3 docker compose up website
Tests
With PHP on your machine
# run tests
php vendor/bin/codecept run
# run unit tests
php vendor/bin/codecept run unit
# run integration tests
php vendor/bin/codecept run integration
# run acceptance tests
php vendor/bin/codecept run acceptance
# run tests with Code Coverage
XDEBUG_MODE=coverage php vendor/bin/codecept run --coverage --coverage-xml --coverage-html
With Docker Compose on your machine
Open the container shell
docker compose run bash
Run tests within the container
# run tests
php vendor/bin/codecept run
# run unit tests
php vendor/bin/codecept run unit
# run integration tests
php vendor/bin/codecept run integration
# run acceptance tests
php vendor/bin/codecept run acceptance
# run tests with Code Coverage
XDEBUG_MODE=coverage php vendor/bin/codecept run --coverage --coverage-xml --coverage-html
More Information
For more information, see https://herbie.tebe.ch.