PHPackages                             akqa/silverstripe-tumu - 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. [Framework](/categories/framework)
4. /
5. akqa/silverstripe-tumu

ActiveSilverstripe-vendormodule[Framework](/categories/framework)

akqa/silverstripe-tumu
======================

Foundation for SilverStripe projects at AKQA

6.0.0(6mo ago)0548↓50%MITPHPCI passing

Since Oct 17Pushed 3mo agoCompare

[ Source](https://github.com/WPP-Public/akqa-nz-silverstripe-tumu)[ Packagist](https://packagist.org/packages/akqa/silverstripe-tumu)[ RSS](/packages/akqa-silverstripe-tumu/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (22)Versions (2)Used By (0)

silverstripe-tumu
=================

[](#silverstripe-tumu)

[![CI](https://github.com/WPP-Public/akqa-nz-silverstripe-tumu/actions/workflows/ci.yml/badge.svg)](https://github.com/WPP-Public/akqa-nz-silverstripe-tumu/actions/workflows/ci.yml)

A unique combination of foundational modules for Silverstripe websites.

🌟 Install
---------

[](#-install)

```
composer require "akqa/silverstripe-tumu"
```

♻️ Why use tumu
---------------

[](#️-why-use-tumu)

Tumu is designed for a few purposes:

1. To make our projects consistent and predictable as possible.
2. Simplify upgrading between major platform versions.
3. DRY - Don't Repeat Yourself.

By replacing direct composer requirements of things like `cms` and `elemental`and using `tumu` we can delegate some of the heavy lifting to a single source of truth and handle major version upgrades with a single dependency

🚀 Features Included
-------------------

[](#-features-included)

- Silverstripe 6 CMS
- Common functionality such as `TagField` and `Taxonomy` which we widely use.
- Elemental
- UserForms
- [Menu Manager](https://github.com/WPP-Public/akqa-nz-silverstripe-menumanager)
- [Redirects](https://github.com/silverstripe/silverstripe-redirectedurls)
- SEO related improvements (sitemaps, robots)
- Vite and SSR integration for building modern front-ends.
- 🔨more to come

### Project Setup

[](#project-setup)

Ideal situation is your project specific `composer.json` reflects something as simple as

```
{
    "name": "akqa/project",
    "type": "project",
    "require": {
        "akqa/silverstripe-tumu": "dev-main"
    },
    "require-dev": {
        "cambis/silverstan": "^2",
        "phpro/grumphp-shim": "^2",
        "phpunit/phpunit": "^11",
        "squizlabs/php_codesniffer": "^3.13",
        "php-parallel-lint/php-parallel-lint": "^1.4"
    },
    "scripts": {
        "test": "php -d memory_limit=-1 ./vendor/bin/phpunit",
        "phpstan": "phpstan analyse --memory-limit 1024M",
        "lint": "phpcs app/src app/tests",
        "lint:fix": "phpcbf app/src app/tests",
        "coverage": "XDEBUG_MODE=coverage php -d memory_limit=-1 ./vendor/bin/phpunit --coverage-text"
    },
    "config": {
        "platform": {
            "php": "8.4"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}
```

The `dev` dependencies are used for [GrumPHP](https://github.com/phpro/grumphp)and our standard linting rules.

### Front-end assets

[](#front-end-assets)

For this we assume a default location of javascript, css and images of `app/client`. You can use themes if you wish but most of our sites use a single app directory. Under the `app/client` we usually structure it as

```
app/client
    /src
        /js
        /css
    /dist
        .. vite controlled output

```

Tumu provides a `ViteProvider` trait which extracts our handling of importing Vite requirements (but not the running of the Vite process, you will need to update your environment to physically build or run the hot-reload server).

```
