A Zend Framework Skeleton with Zend + TDD + ZFDebug + Module structure
Latest commit ef39873 Apr 27, 2012 Christopher Valles Tidy up images. removing non used images and fixing BO css
Failed to load latest commit information.
bin close issue #17 and improve fix of issue #12 Oct 9, 2011
library Moving init code to master controller from master frontend controller Dec 25, 2011
tests Adding test cases for App folder Oct 23, 2011
.zfproject.xml Custom providers created for Zend Tool Jul 23, 2011
TODO Adding the new skeleton Oct 16, 2010



This is a Zend Framework Skeleton, below you'll find some specs about it.

  • Zend Framework
  • Module structure
  • ZFDebug
  • TDD ready
  • PHPUnit ready
  • Zend_Log configured (using firebug in development)
  • Zend_Translate configured (using .mo files)
  • Zend_Translate configured to log the missing translations in dev environment
  • Zend_Translate defaults to english
  • FlashMessages plugin installed
  • VersionHeader plugin installed (send the version of the app through a special header)
  • DBAdapter already configured (just change the credentials on the app.ini)
  • Cache Backends configurable through app.ini
  • File cache backend configured
  • Automatic CSRF check in all the forms
  • Autoloader configured
  • Router configured to read the routes from xml files
  • Different bootstrap and entry point per module
  • Zend_Locale configured to detect the locale and degrades gracefully
  • App configured to use three environments (dev, staging, production)
  • Zend_Registry up and running
  • All the handy data stored in the Registry and constants like environment, some paths (app path, root path)...
  • View Helper to translate using the following method $this->t() instead of $this->translate() (much shorter)
  • Flag and Flippers concept of flickr implemented through ACL
  • Flag and Flippers configurable via BO (Still some stuff in development)
  • CLI tool to generate basic ACL rules for controllers and actions
  • Basic Inflector
  • Three custom validators to handle passwords
  • Basic BO structure with two levels of navigation
  • BO menu generated automatically based on an array and filtered through the Flag and flippers configured
  • All the tables needed dumped in migration files
  • Akrabat db migration system implemented
  • Amazon CloudFront Invalidator implemented
  • Amazon SNS publish feature implemented
  • Amazon S3 integrated
  • Amazon Simple Email Service integrate through a custom mail transport
  • App_Logger attached to Amazon SES to receive notifications of the errors (based on zend_log and it's logs levels)
  • Implemented a dependency injector container and moved a lot of objects there
  • Integrated gearmand and some workers to do jobs asynchronously (optional and configurable through config file)
  • Analytics worker to send info to Amazon Simple DB
  • Upload worker to upload files to Amazon S3
  • Remove cdn worker to invalidate files on Amazon CloudFront
  • Send email worker to send the emails through Amazon Simple Email Service
  • Chain-of-resonsability pattern implemented in the controllers and 3 commands available (publish to facebook, twitter or send email)
  • CDN View helper to fetch the files directly from the cdn (supports multiple domains to speed up the page load time)
  • Bitly Short Url service integrated
  • Custom logic to handle emails and their templates
  • Install script
  • Added ZendX and configured to use local version of jQuery and jQuery UI
  • Added the official Zend unit tests

Credentials to access the BO

Admin Group

Username: john.doe
Password: lorem


  1. Get a copy of the files in your machine
  2. Run the install script located at ./scripts
  3. Create the virtual hosts (one per module)

    ServerAdmin admin@example.com

    ServerName frontend.zfs.local
    DocumentRoot PATH_TO_THE_PROJECT/public/frontend
    <Directory />
        Options FollowSymLinks
        AllowOverride All 
    <Directory PATH_TO_THE_PROJECT/public/frontend>
        Options -Indexes
        AllowOverride All
        Order allow,deny
        allow from all
    ErrorLog /var/log/apache2/frontend-error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog /var/log/apache2/frontend-access.log combined

    ServerAdmin admin@example.com

    ServerName backoffice.zfs.local
    DocumentRoot PATH_TO_THE_PROJECT/public/backoffice
    <Directory />
        Options FollowSymLinks
        AllowOverride All 
    <Directory PATH_TO_THE_PROJECT/public/backoffice>
        Options -Indexes
        AllowOverride All
        Order allow,deny
        allow from all
    ErrorLog /var/log/apache2/backoffice-error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog /var/log/apache2/backoffice-access.log combined

  4. If you are working on a local machine add the servername to your local hosts file

    On *nix: echo 'frontend.zfs.local' >> /etc/hosts
    On *nix: echo 'backoffice.zfs.local' >> /etc/hosts

That's it you can start now using the skeleton to build the next amazing app!