This package is abandoned and no longer maintained. No replacement package was suggested.

Sonic is a stupidly simple, blazing fast, flat-file CMS based on Pico

v0.6.1 2014-02-22 01:52 UTC

This package is not auto-updated.

Last update: 2020-01-24 15:29:02 UTC


Master Develop
Build Status Coverage Status Dependency Status Build Status Coverage Status Dependency Status

Sonic is a stupidly simple, blazing fast, flat-file CMS based on Pico.

Sonic is a microCMS - this means there is no administration backend and database to deal with. You simply create .md files in the "content" folder and that becomes a page.

Its interface is supposed to be simple and is in process of documentation. Thank you for choosing Sonic for your next project.


  • Uses Markdown Extra for content parsing
  • Uses a powerful(ish) Slim/Silex-style router
    • Standard HTTP methods
    • Route parameters with wildcards and conditions
  • Dependency injection container using Pimple
  • Template rendering using Twig
  • Filesystem handling using Flysystem
  • Atom feed and tagged posts support
  • HTTP caching
  • Error handling and debugging
  • Application hooks and extensible components for extending functionality
  • Simple configuration
  • Hilarious, snarky source code comments

Getting Started

Refer to Sonic Skeleton for instructions on creating a new project with Sonic.


You can check out more in-depth documentation here.

How to Contribute

Pull Requests

  1. Fork the Sonic repository
  2. Create a new branch for each feature or improvement
  3. Write tests so my precious code coverage doesn't decrease (too much)
  4. Send a pull request from each feature branch to the develop branch

It's pretty important to separate new features or improvements into separate feature branches, and to send a pull request for each branch. This allows me to review and pull in new features or improvements individually.

Style Guide

  • No extraneous whitespace. I hate it with a fucking vengeance
  • Tabs should be set to four spaces
  • Method names should be written in snake_case(), rather than camelCase()
  • All source files should start with <?php but should not have an closing tag
  • End files with a Unix-style newline

Unit Testing

All pull requests should ideally be accompanied by passing unit tests and complete code coverage. Sonic uses PHPUnit for testing.


Don't make me laugh

Forum and Knowledgebase

Coming soon


Coming soon


Sonic is created and maintained by Hassan Khan.


Clearly a lot of help (especially) from Slim, as is apparent from the source code. This also would not have been possible without Pico, Symfony, or more specifically, the Symfony HttpFoundation component, PHP-Markdown and many others. The open-source PHP community in general does a fantastic job of polishing turds.


Sonic is released under the MIT public license.