PHPackages                             crell/planedo-bundle - 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. [API Development](/categories/api)
4. /
5. crell/planedo-bundle

ActiveSymfony-bundle[API Development](/categories/api)

crell/planedo-bundle
====================

Feed aggregator bundle for Symfony 6 and later.

1.0.0(3y ago)1712AGPL-3.0-or-laterPHPPHP ~8.1

Since Feb 9Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Crell/PlanedoBundle)[ Packagist](https://packagist.org/packages/crell/planedo-bundle)[ GitHub Sponsors](https://github.com/Crell)[ RSS](/packages/crell-planedo-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (28)Versions (6)Used By (0)

Planedo Bundle
==============

[](#planedo-bundle)

[![Latest Version on Packagist](https://camo.githubusercontent.com/3c9c3a140916a762bb880a6f7c78cbeb527a1330f8206565148e61590ee54b2e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f4372656c6c2f506c616e65646f42756e646c652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/crell/planedo-bundle)[![Software License](https://camo.githubusercontent.com/c7ac37193c76a18cfbd9376fa02f6c3d160b11b4f6eda387e6046b0d4e373d17/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4147504c76332d677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)[![Total Downloads](https://camo.githubusercontent.com/4d9724476bfa2b4f443d7d2a1114feef7e0c8bbe4974281e3398c16bf8a206ef/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f4372656c6c2f506c616e65646f42756e646c652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/crell/planedo-bundle)

Planedo is a blog aggregator bundle for Symfony 6. It aims to be a mostly out-of-the-box setup for a Planet-style blog aggregator, or as close to that as Bundles allow anyway.

"Planedo" is Esperanto for "Planet," as in blog-aggregator "planet."

Installation
------------

[](#installation)

There are two ways to set up Planedo Bundle.

If you want to just use Planedo as a stand-alone application and be done with it, install the Planedo application.

```
composer project-create crell/planedo
```

That will create a new project pre-configured to use with Planedo. Nearly all meaningful functionality is in the bundle, so you can modify the application itself to your heart's content. Future updates to Planedo itself will come via updating the bundle through Composer.

Alternatively, you may install Planedo Bundle directly in Symfony 5.4/6 application of your choice, via composer.

```
composer require crell/planedo-bundle
```

If you take this approach, there are a few manual steps necessary to wire the bundle into the application.

### Add a dev-dependency

[](#add-a-dev-dependency)

At this time, Planedo uses the pre-release version of PSR-20 from the PHP-FIG. It is not yet on Packagist, so you will need to include the following in your main application's `composer.json`:

```
{
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/php-fig/clock.git"
    }
  ]
}
```

That will allow Composer to download the appropriate package. This step will be unnecessary once PSR-20 is released.

### Enable the bundle

[](#enable-the-bundle)

Add the bundle to your `bundles.php` file:

```
Crell\Bundle\Planedo\PlanedoBundle::class => ['all' => true],
```

### Routing

[](#routing)

Create a new file named `config/routes/planedo.yaml` and give it the following content:

```
# config/routes/planedo.yaml

planedo_admin:
    resource: '@PlanedoBundle/config/routes_admin.yaml'
    prefix: ''

planedo_public:
    resource: '@PlanedoBundle/config/routes_public.yaml'
    prefix: ''
```

The above setup assumes that you want Planedo's routes to be at the root of your site. If not, add a `prefix` for either the front-end or admin routes as you prefer.

### User and password management

[](#user-and-password-management)

Planedo provides its own user accounts and password handling. A mechanism to disable is coming soon.

You may also choose to ignore the provided user system and use your own. In that case, ensure that users who should have access to the Planedo administrative area are given the `ROLE_ADMIN` role. How you end up doing that is up to you.

Configuration
-------------

[](#configuration)

Planedo includes its own minimal configuration in `config/planedo.yaml`. There are three configuration options, all optional. The defaults should be reasonable for most circumstances.

- `items_per_page` (default 10): This integer specifies how many feed entries will be shown per page on HTML lists, and will be shown total in RSS and Atom feeds.
- `purge_before` (default `-30 days`): Every time the purge cron job runs, any entries dated older than this will be deleted. Entries older than this will also not be imported. You may use any string that is valid according to PHP's [relative date format](https://www.php.net/manual/en/datetime.formats.relative.php).
- `use_plain_text` (default false): If set to true, RSS and Atom feeds will use a `text/plain` mime type instead of their appropriate XML mime type. This is mainly useful for debugging and can be ignored 99% of the time.

For example:

```
# config/planedo.yaml

planedo:
    items_per_page: 20
    purge_before: -60 days
```

Initial setup
-------------

[](#initial-setup)

Once Planedo is set up, you will need to create the first admin user. A CLI command is provided for that purpose.

```
bin/console planedo:create-user --email you@example.com
```

You will be prompted for a password, or you may provide one on the command line. See the command's help text for more details.

You may now go to `/admin` to login, then start adding feeds.

Setting up cron tasks
---------------------

[](#setting-up-cron-tasks)

Regardless of how you run Planedo, you will need to setup two cron tasks through the cron runner of your choice. How often you run them is up to you, but at least daily is recommended.

The first update refetches feeds to get new entries:

```
bin/console planedo:update-all
```

The second update deletes old entries (where "old" is defined by the `purge_before` configuration setting):

```
bin/console planedo:purge-old
```

Queues
------

[](#queues)

Planedo runs most tasks through Symfony's Message Bus system. That allows it to be deferred to a queue. While not required, it is *strongly recommended* that you wire the following messages to an async backend:

- `Crell\Bundle\Planedo\Message\ApproveEntries`
- `Crell\Bundle\Planedo\Message\PurgeOldEntries`
- `Crell\Bundle\Planedo\Message\RejectEntries`
- `Crell\Bundle\Planedo\Message\UpdateFeed`

Theming
-------

[](#theming)

Out of the box, Planedo comes with barely any theming. It works, but it's not pretty.

You are free to retheme any of the templates as you wish. See the `templates/` directory for the full set that can be overridden.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) and [CODE\_OF\_CONDUCT](CODE_OF_CONDUCT.md) for details.

Security
--------

[](#security)

If you discover any security related issues, please email larry at garfieldtech dot com instead of using the issue tracker.

Credits
-------

[](#credits)

- [Larry Garfield](https://github.com/Crell)
- [All Contributors](../../contributors)

License
-------

[](#license)

The Affero GPL version 3 or later. Please see [License File](LICENSE.md) for more information.

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 78.6% 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

Every ~165 days

Total

3

Last Release

1227d ago

Major Versions

0.1.0 → 1.0.02023-01-06

### Community

Maintainers

![](https://www.gravatar.com/avatar/12e28c223b88445f07d697c8805bd856066c947f70b535f6a7e00d2cb311c3c2?d=identicon)[Crell](/maintainers/Crell)

---

Top Contributors

[![Crell](https://avatars.githubusercontent.com/u/254863?v=4)](https://github.com/Crell "Crell (77 commits)")[![benjaminkott](https://avatars.githubusercontent.com/u/3243119?v=4)](https://github.com/benjaminkott "benjaminkott (15 commits)")[![tomasnorre](https://avatars.githubusercontent.com/u/1212481?v=4)](https://github.com/tomasnorre "tomasnorre (6 commits)")

---

Tags

atomblogfeedphprss

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/crell-planedo-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/crell-planedo-bundle/health.svg)](https://phpackages.com/packages/crell-planedo-bundle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)

PHPackages © 2026

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