limegreentangerine / lgt-concrete
A fully featured skeleton for a composer managed Concrete site
Package info
github.com/limegreentangerine/lgt-concrete
Type:project
pkg:composer/limegreentangerine/lgt-concrete
Requires
- composer/installers: ^2.2
- concrete5/core: ^9.5.7
- concretecms/dependency-patches: ^1.9.0
- limegreentangerine/class_kit: ^2.0
- limegreentangerine/lgt_toolkit: ^1.0
- limegreentangerine/theme_kit: ^1.0
- symfony/dotenv: ^5|^6|^7
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.95
- mockery/mockery: ^1
- pestphp/pest: ^1.23
- phpstan/phpstan: ^2.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-21 15:17:24 UTC
README
This is a customised version for use by Limegreentangerine for quick project setup. Forked from concretecms/composer.
Contents
- Creating a new project
- Known issue with patcher hanging on
concretecms/dependency-patches - Installing Concrete
- Preinstalled LGT Packages
- Install a Concrete package using Composer
- packages.limegreentangerine.net
- Compiling JS / CSS assets
- Scripts
- Testing
- Code Formatting
Creating a new project
First choose a name for your project. In this example, our project is called "new_site"
$ composer create-project -n limegreentangerine/lgt-concrete new_site
Now you have the latest version of Concrete and you're ready to install!
Note: This is a skeleton project. So once you create a project, you can install your own VCS and change the README and all that.
Known Issue with patcher hanging on concretecms/dependency-patches
There is an issue on Mac when composer runs concrete dependency patches.
If the concretecms/dependency-patches hangs on install, run the following:
$ brew install gpatch $ brew link gpatch --force --overwrite $ composer install
If you've already done this before and it still hangs, the issue can also be solved by agreeing to the xcodebuild terms and conditions, run:
$ sudo xcodebuild -license $ composer install
Installing Concrete
Navigate into your new Concrete project
$ cd new_site
and use the interactive install commmand that comes with Concrete's CLI tool
$ ./vendor/bin/concrete c5:install -i
Follow directions and your site will begin installing!
Note: You can also run the CLI tool directly with PHP
$ ./public/concrete/bin/concrete
Preinstalled LGT Packages
Comes with three packages installed as standard, limegreentangerine/class_kit, limegreentangerine/lgt_toolkit and limegreentangerine/theme_kit.
Other LGT packages are available from the LGT Packagist or our private package repository.
Install a Concrete package using composer
Find the package you'd like to install on packagist.org (in this case concretecms/sample_composer_package)
Note: You can also use composer's repository functionality to manage private packages using composer
$ composer require concretecms/sample_composer_package $ ./vendor/bin/concrete c5:package-install sample_composer_package
PLEASE NOTE: If you are installing packages through composer you may want to add their folder to packages folders .gitignore to keep repo size down, these will get installed on deployment anyway.
packages.limegreentangerine.net
Private pacakges can be found at the LGT private composer package website (a limegreentangerine email address is required for web access). These can be installed in the normal way after some authentication headers are added to your global composer configuration.
To authenticate with the private registry, configure Composer to send the Cloudflare Access service token headers for packages.limegreentangerine.net, you should only have to do this setup once to make it available for all future projects.
After obtaining the correct ID and Secret, run the following in terminal:
composer config --global custom-headers.packages.limegreentangerine.net \ "CF-Access-Client-Id: YOUR_CLIENT_ID" \ "CF-Access-Client-Secret: YOUR_CLIENT_SECRET"
Compiling JS / CSS assets
This library uses Laravel Mix. See webpack.mix.js. To build assets:
npm install npm run dev # Build for development npm run hot # Build with hot reloading enabled (See hot reloading section) npm run watch # Build with a watcher that rebuilds when files change npm run prod # Build for production
Hot Module Replacement
Hot module replacement (hot reloading) allows you to write code and instantly see the changes in your browser, without reloading the page.
In order to use hot reloading with Concrete, you'll want to use the mix and mixAsset helper functions to wrap your
js and css urls. These functions make it so that your assets automatically detect hot reloading mode and output the
appropriate urls, they are safe to use in production:
In a page theme:
<?php use function Concrete5\Composer\mixAsset; ... class PageTheme extends Theme { public function registerAssets() { $this->requireAsset(mixAsset('/path/to/file.js')); } }
<?php use function Concrete5\Composer\mixAsset; ... class Controller extends BlockController { public function registerViewAssets() { $this->requireAsset(mixAsset('/path/to/js/file.js')); $this->requireAsset(mixAsset('/path/to/css/file.css')); } }
or in a theme template:
<?php use function Concrete5\Composer\mix; ?> <script src='<?= mix('/path/to/your/asset.js') ?>'></script> <link href='<?= mix('/path/to/your/asset.css') ?>' />
Scripts
Creating a new theme
To create a new theme layout, run the following:
$ ./vendor/bin/create-new-theme
This will add source ts and scss files into /src/themes/THEME_NAME and a theme skeleton into /public/application/themes/THEME_NAME. Laravel mix is preconfigured for this so running any of these commands will compile it.
Custom System Pages
After creating a theme you may want custom 404, 403 and Maintenance pages. Run this command:
$ ./vendor/bin/install-system-pages
They will be added to /public/application/views and the site config will be updated.
Svelte Components
Svelte components can be created for UI elements in blocks, elements and pages. Run:
$ ./vendor/bin/create-svelte-component
Laravel mix is preconfigured for this so running any of these commands will compile it.
Testing
Testing can be run using:
$ composer test
Code Formatting
Typechecking
You can check PHP types are correct by running:
$ composer typecheck
Formatting
Formatting for PHP and TS/JS is included, to check run:
$ composer format:check
To format run:
$ composer format