PHPackages                             cammanderson/mmb - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. cammanderson/mmb

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

cammanderson/mmb
================

Minimalist markdown blogging tool

v1.0-alpha(11y ago)1991LGPL-3.0PHPPHP &gt;=5.4.0

Since Aug 16Pushed 11y ago1 watchersCompare

[ Source](https://github.com/cammanderson/mmb)[ Packagist](https://packagist.org/packages/cammanderson/mmb)[ RSS](/packages/cammanderson-mmb/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (1)Dependencies (7)Versions (3)Used By (1)

Minimalist Markdown Blog
========================

[](#minimalist-markdown-blog)

Focus on writing clean blog articles using simple markdown. Include beautiful colourful fenced code blocks that people will love.

Minimalistic approach, based on silex. Chose where to store and retrieve your markdown, I'm using a separate git repository. Articles are pushed here and mapped by the FileArticleService.

Usage
-----

[](#usage)

For your application:

- Add to your composer
- Add to your Silex application
- Install [Pygments](http://pygments.org/download/)
- Specify the pygmentize bin
- Specify the path to the articles (default file provider)

### Composer

[](#composer)

```
{
    "require": {
        "cammanderson/mmb" : "dev-master"
    }
}
```

### Silex Service Provider and Route

[](#silex-service-provider-and-route)

You can add the article service and then use it in your application as needed.

```
...
$app->register(new MMB\ArticleServiceProvider());
...
// Controller
$articleController = function (Silex\Application $app, MMB\Article $article) {
    return $app['twig']->render('article.html.twig', array(
            'article' => $article,
            'highlighter' => $app['markdown_parser_highlighter']
        ));
};

// Add the article route
$app->get('/article/{article}', function (MMB\Article $article) use ($app, $articleController) {
    return $articleController($app, $article);
})->assert('article', '.+')
->convert('article', 'article_service:getArticle');
...
```

### Default Configuration

[](#default-configuration)

Currently needs a couple of elements set to app\['config'\]\['parameters'\]

```
parameters:
    mmb_file_path: ../content
    pygments_bin: /opt/local/bin/pygmentize-2.7
```

Consider using a YAML config provider for silex [deralex/yaml-config-service-provider](http://https://github.com/deralex/YamlConfigServiceProvider)

### Writing Articles

[](#writing-articles)

Using the FileArticleService, it will take a configuration *path* to look for files. Articles are mapped by key, where the key matches the filename.

```
2014-08-10_my-article.md
2014-08-12_my-other-article.md

```

### Hosting articles on github

[](#hosting-articles-on-github)

It is easily possible to place the articles in your github repository and connect to it using [GithubService for mmd](https://github.com/cammanderson/mmb-github).

Extending
---------

[](#extending)

### Alternative location for Articles

[](#alternative-location-for-articles)

You can always implement your own ArticleService to source the articles from another location.

```
class MyArticleService extends AbstractArticleService
{
    public function getArticle($key)
    {
        // TODO: Implement your own method to locate the article
        $articleContents = '...';

        // Create the article
        $article = $this->provider->provide($key, $articleContents);

        // ... Apply further properties your Service supports

        // Return
        return $article;
    }
}
```

Now register to the dependency injector (remember to provider the article provider).

```
$app['article_service'] = $app->share(function ($app) {
    $service = new MyArticleService();
    $service->setProvider($app['article_provider']);
    return $service;
});
```

TODO
----

[](#todo)

Eventually to be moved to MCB (Minimalist Coders Blog) for more broader use. Developers can then implement their own article providers (file, git, cmf etc), formating and highlighters (e.g. pygments, geshi etc).

- Add various traits to article to support dates, author, version, changelog etc
- Implement a GitArticleService/GitHubArticleService that interrogates git for author, versions, etc
- Implement a better configuration layout
- Implement ArticleService list commands, allowing listings of blog history
- Possible Symfony2 support via DI/Service container config
- Implement geshi/sundown/restructedtext etc.

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

4336d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/578846?v=4)[Tom Manderson](/maintainers/cammanderson)[@cammanderson](https://github.com/cammanderson)

---

Top Contributors

[![cammanderson](https://avatars.githubusercontent.com/u/578846?v=4)](https://github.com/cammanderson "cammanderson (1 commits)")

---

Tags

markdowncodingblog

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/cammanderson-mmb/health.svg)

```
[![Health](https://phpackages.com/badges/cammanderson-mmb/health.svg)](https://phpackages.com/packages/cammanderson-mmb)
```

###  Alternatives

[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

21866.0M1.7k](/packages/drupal-core)[phpro/grumphp

A composer plugin that enables source code quality checks.

4.3k16.7M1.0k](/packages/phpro-grumphp)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M418](/packages/drupal-core-recommended)[kimai/kimai

Kimai - Time Tracking

4.8k9.0k1](/packages/kimai-kimai)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M508](/packages/pimcore-pimcore)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
