PHPackages                             waterproof/neos-news - 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. waterproof/neos-news

ActiveNeos-package

waterproof/neos-news
====================

News and blog package for Neos CMS 9, built on Flowpack.Listable and Sitegeist.Taxonomy

v1.0.0(yesterday)00MIT

Since Aug 14Pushed todayCompare

[ Source](https://github.com/dhuettner/neos-news)[ Packagist](https://packagist.org/packages/waterproof/neos-news)[ Docs](https://waterproof.agency/)[ RSS](/packages/waterproof-neos-news/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (4)Versions (2)Used By (0)

Waterproof.News
===============

[](#waterproofnews)

News and blog package for **Neos CMS 9**. Articles are document nodes, lists are built with [Flowpack.Listable](https://github.com/Flowpack/Flowpack.Listable), categories with [Sitegeist.Taxonomy](https://github.com/sitegeist/Sitegeist.Taxonomy).

The package ships **structure, not design**. Markup carries Tailwind class names, there is no CSS file and no build step of its own. Styling happens in the build of the site package that includes it.

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

[](#installation)

```
composer require waterproof/neos-news
./flow neos.flow:package:rescan
./flow flow:cache:flush --force
./flow resource:publish
```

The three commands after the require are mandatory under DDEV. The Composer plugin writes the package cache to `Data/Temporary/`, while Flow reads it from `/tmp/Flow/`. Without `package:rescan` the package stays invisible.

### Set up Tailwind, or everything stays unstyled

[](#set-up-tailwind-or-everything-stays-unstyled)

The Fusion files of this package live outside your site package. Tailwind only finds class names in files listed in its `content` glob. Add this to your `tailwind.config.js`:

```
content: [
    './Resources/Private/**/*.{fusion,html,js}',
    './NodeTypes/**/*.{yaml,fusion}',
    '../../Packages/Application/Waterproof.News/Resources/Private/**/*.fusion',
],
```

Without that entry the package works, but arrives without any layout.

Node types
----------

[](#node-types)

Node typeBackend labelPurpose`Waterproof.News:Document.Article`ArtikelSingle post with date, teaser text, teaser image, author, content area`Waterproof.News:Document.ArticleIndex`ArtikelübersichtParent page, lists its articles with pagination`Waterproof.News:Content.ArticleTeaser`Artikel-TeaserShows the latest articles on any page`Waterproof.News:Document.Feed`FeedAtom or RSS output of the articlesThe article index only accepts articles below itself. That does not stop an article from being created elsewhere. If you want to rule that out, narrow the constraints of your own base page in your site package.

Column choice
-------------

[](#column-choice)

`Document.ArticleIndex` and `Content.ArticleTeaser` carry a `columns` property:

ValueLabelResult`cols1`Einspaltigone column at every width`cols2`Zweispaltigtwo columns from `md``cols3`Dreispaltigtwo from `md`, three from `lg` (default)`cols4`Vierspaltigtwo from `sm`, four from `lg`The class names are written out in `Component/GridClass.fusion`. Composed class names would be invisible to the Tailwind scanner.

Apply your own design
---------------------

[](#apply-your-own-design)

Override the prototypes you want to style in your site package:

```
prototype(Waterproof.News:Document.Article.Short) < prototype(Neos.Fusion:Component) {
    renderer = afx`…your card layout…`
}

```

PrototypeResponsible for`Waterproof.News:Document.Article.Short`Card in listings`Waterproof.News:Content.ArticleIndexBody`List body of the index`Waterproof.News:Content.ArticleBody`Detail page`Waterproof.News:Component.ArticleCollection`Grid around the cards`Waterproof.News:Component.GridClass`Mapping of column value to classesFilters and archive
-------------------

[](#filters-and-archive)

The index reads two parameters:

ParameterEffect`kategorie`Node name of the taxonomy, for example `?kategorie=abwasserbeseitigung``jahr`Four digits, for example `?jahr=2026`They combine and survive pagination. The filter bar only offers categories that actually carry an article, and the years present in the archive.

Feed
----

[](#feed)

The feed is a document node below the index, with a choice between Atom and RSS 2.0. The index page points to it with `` in the head.

**Why not `/aktuelles.rss`:** Neos routes documents with exactly one site wide URI suffix, `.html` by default. A different ending would have to be set in the site configuration and would then apply to every page. The feed therefore lives at `/aktuelles/feed.html`, served with the correct content type.

Structured data
---------------

[](#structured-data)

Article pages carry a JSON-LD object of type `Article` with title, date, description, canonical URL and publisher. The author only appears when it is filled in.

Languages
---------

[](#languages)

Backend labels ship as XLIFF in `Resources/Private/Translations/` for German and English. For another language, copy the catalogue and translate it. The node types themselves need no change.

Categories
----------

[](#categories)

Articles reference taxonomies through the `taxonomyReferences` property. Multiple assignments are possible. Vocabulary and taxonomies are created in the Neos backend under *Taxonomie*.

License
-------

[](#license)

MIT. Feed structure and structured data follow the approach of [Sebobo/Shel.Blog](https://github.com/Sebobo/Shel.Blog) (MIT).

Built and maintained by [waterproof.agency](https://waterproof.agency/).

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

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

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/4354997?v=4)[Dennis Hüttner](/maintainers/dhuettner)[@dhuettner](https://github.com/dhuettner)

---

Tags

blogfusionneosneos-cmsnewsblog newsNeostaxonomyFUSIONNeos CMSafx

### Embed Badge

![Health badge](/badges/waterproof-neos-news/health.svg)

```
[![Health](https://phpackages.com/badges/waterproof-neos-news/health.svg)](https://phpackages.com/packages/waterproof-neos-news)
```

###  Alternatives

[sandstorm/neostwofactorauthentication

1428.7k](/packages/sandstorm-neostwofactorauthentication)[sitegeist/kaleidoscope

Responsive-images for Neos

29377.0k14](/packages/sitegeist-kaleidoscope)[neos/seo

SEO configuration and tools for Neos

131.0M35](/packages/neos-seo)[carbon/includeassets

Include your assets (css, js) in an easy way into Neos

14237.5k15](/packages/carbon-includeassets)[shel/critical-css

Allows inlining and optimising styles for components in Neos CMS

102.7k](/packages/shel-critical-css)[breadlesscode/neos-blog

Ready to use blog package

161.4k](/packages/breadlesscode-neos-blog)

PHPackages © 2026

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