Bootstrap CMS
This Code Is Licensed Under The GNU AGPLv3
screenshots!
I'd appreciate it if you'd leave my name in the footer unless you have changed my source significantly. If you do feel you have changed it significantly, I'd still appreciate some kind of link back, and remember that attribution is still required as stated in the license. Feel free to checkout theWhat Is Bootstrap CMS?
Bootstrap CMS is a PHP CMS powered by Laravel 4.1 and Sentry 2.1.
- Bootstrap CMS was created by, and is maintained by Graham Campbell.
- Bootstrap CMS relies on many of my packages including Laravel Core and Laravel Queuing.
- Bootstrap CMS uses Travis CI with Coveralls to check everything is working.
- Bootstrap CMS uses Scrutinizer CI and SensioLabsInsight to run additional checks.
- Bootstrap CMS uses Composer to load and manage dependencies.
- Bootstrap CMS provides a change log, releases, and api docs.
- Bootstrap CMS is licensed under the GNU AGPLv3, available here.
- Licenses for included components are available here, excluding Composer installed components.
System Requirements
Bootstrap CMS was designed to run on a Linux machine with PHP 5.5 and MySQL 5.5.
- PHP 5.4.7+ or HHVM 3.0+.
- You will need Composer installed to load the dependencies of Bootstrap CMS.
- You will need to configure the site in the app/config folder before production.
- Some features require a cache server like Redis and a queuing server like Beanstalkd.
Installation
Please check the system requirements before installing Bootstrap CMS.
- You may install by cloning from github, or via composer.
- Github:
git clone git@github.com:GrahamCampbell/Bootstrap-CMS.git
- Composer:
composer create-project graham-campbell/bootstrap-cms --prefer-dist -s dev
- See the Laravel Queuing readme for extra requirements before continuing.
- From a command line open in the folder, run
composer install
. - Enter your database details into
app/config/databse.php
. - Run
php artisan app:install
to setup and seed your database. - You will need to enter your mail server details into
app/config/mail.php
.
- You can disable verification emails in
app/config/packages/graham-campbell/navigation/config.php
- Mail is still required for other functions like password resets and the contact form
- You must set the contact email in
app/config/packages/graham-campbell/contact/config.php
- I'd recommend queuing email sending for greater performance (see below)
- Finally, setup an Apache VirtualHost to point to the "public" folder.
- For development, you can simply run
php artisan serve
- Additionally, you may to setup some of Bootstrap CMS's other features (see below).
- Some things, like caching and queuing, are disabled out of the box
- This is to allow Bootstrap CMS to work with minimal setup
- Please note that queuing is required in order to use the cron functionality which can do things like notify users of upcoming events, or send out weekly activity digests
- Also note, without caching asset generation will cause page load delay - to reduce this, I have turned off minification in
app/config/packages/lightgear/asset/config.php
by default
Setting Up Queuing
Bootstrap CMS provides queuing functionality, and when enabled, requires 3 separate queues.
- One queue (the mail queue) will be used for sending emails
- One queue (the cron queue) will be used for all cron jobs
- One queue (the default queue) will be used for all other jobs
- These queues must be separate to avoid unexpected functionality
Note that beanstalkd
requires a local server, while sqs
and iron
are cloud based.
Also note that sqs
and redis
support is not 100% complete and is mainly untested.
For most uses, sync queuing will actually by sufficient because the queuing package will execute the jobs after the response has been sent (on application shutdown), so the end user will see no slowdown, we just won't be able to re-entry failed jobs.
- Choose your poison - I'd recommend IronMQ.
- Enter your queuing server details into
app/config/queue.php
. - You can also set a separate mail queue in
app/config/mail.php
. - For IronMQ, you can run the command
php artisan queue:iron
, and thephp artisan cron:start
. - You can find out more about queuing by heading over to the Laravel Docs.
Setting Up Caching
Bootstrap CMS provides caching functionality, and when enabled, requires a caching server.
Note that caching will not work with Laravel's file
or database
cache drivers.
- Choose your poison - I'd recommend Redis.
- Enter your cache server details into
app/config/cache.php
. - You will probably want to enabled minification in
app/config/packages/lightgear/asset/config.php
. - Setting the driver to array will effectively disable caching if you don't want the overhead.
Setting Up Themes
Bootstrap CMS also ships with 17 themes, 15 from Bootswatch.
- You can set your theme in
app/config/theme.php
. - You can also set your nav bar style in
app/config/theme.php
. - After making theme changes, you will have to run
php artisan app:update
.
Setting Up Google Analytics
Bootstrap CMS natively supports Google Analytics.
- Setup a web property on Google Analytics.
- Enter your tracking id into
app/config/analytics.php
. - Enable Google Analytics in
app/config/analytics.php
.
Setting Up CloudFlare Analytics
Bootstrap CMS can read CloudFlare analytic data through a package.
- Follow the install instructions for my Laravel CloudFlare package.
- Remember to add your credentials to
app/config/packages/graham-campbell/cloudflare-api/config.php
. - Bootstrap CMS will auto-detect the package, only allow admin access, and add links to the navigation bar.
Usage
There is currently no usage documentation besides the API Documentation for Bootstrap CMS.
Updating Your Fork
Before submitting a pull request, you should ensure that your fork is up to date.
You may fork Bootstrap CMS:
git remote add upstream git://github.com/GrahamCampbell/Bootstrap-CMS.git
The first command is only necessary the first time. If you have issues merging, you will need to get a merge tool such as P4Merge.
You can then update the branch:
git pull --rebase upstream master
git push --force origin <branch_name>
Once it is set up, run git mergetool
. Once all conflicts are fixed, run git rebase --continue
, and git push --force origin <branch_name>
.
Pull Requests
Please review these guidelines before submitting any pull requests.
- When submitting bug fixes, check if a maintenance branch exists for an older series, then pull against that older branch if the bug is present in it.
- Before sending a pull request for a new feature, you should first create an issue with [Proposal] in the title.
- Please follow the PSR-2 Coding Style and PHP-FIG Naming Conventions.
License
GNU AFFERO GENERAL PUBLIC LICENSE
Bootstrap CMS Is A PHP CMS Powered By Laravel And Sentry 2.1 Copyright (C) 2013-2014 Graham Campbell
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.