PHPackages                             unocha/starterkit - 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. unocha/starterkit

ActiveProject

unocha/starterkit
=================

Starterkit

351[8 PRs](https://github.com/UN-OCHA/drupal-starterkit/pulls)PHPCI passing

Since Aug 31Pushed 3d ago4 watchersCompare

[ Source](https://github.com/UN-OCHA/drupal-starterkit)[ Packagist](https://packagist.org/packages/unocha/starterkit)[ RSS](/packages/unocha-starterkit/feed)WikiDiscussions develop Synced 5d ago

READMEChangelogDependenciesVersions (34)Used By (0)

Drupal Starter Kit
==================

[](#drupal-starter-kit)

TL;DR
-----

[](#tldr)

When starting, make sure you bootstrap your site with the "minimal" install profile and the default config that ships with this repository:

`drush si minimal --existing-config`

Ok, but tell me more.
---------------------

[](#ok-but-tell-me-more)

**Drupal 11 version**

This is a sample Drupal site repository. It contains all the basics to get you started with a brand new Drupal 11 site that uses the [UN-OCHA Common Design theme](https://github.com/UN-OCHA/common_design).

See

Use `composer create-project` to install after cloning or `composer create-project unocha/starterkit`

Then run `scripts/setup.sh` (see [What to change?](#what-to-change) below).

What to change?
---------------

[](#what-to-change)

Several files need to be changed to replace `starterkit` with your project name etc.

You can run the `scripts/setup.sh` script to do that for you.

```
./scripts/setup.sh "site.prod.url" "Site Name" "project-name"
```

For example, for Common Design site:

```
./scripts/setup.sh "web.brand.unocha.org" "Common Design" "common-design-site"
```

The setup script will also copy a github action to build docker images on `develop`, `feature` and `main` branches.

### README

[](#readme)

Well, obviously, this [README](README.md) file needs to be updated with information relevant to your project.

### Github workflows

[](#github-workflows)

Edit the following files, replacing `starterkit` with your project name (ex: `my-website`):

- [.github/workflows/docker-build-image.yml](.github/workflows/docker-build-image.yml)

### Docker

[](#docker)

Edit the following files:

- [docker/Dockerfile](docker/Dockerfile) --&gt; change `starterkit.prod` to your **production** site URL.
- [Makefile](Makefile) --&gt; change `starterkit` to your project name (ex: `my-website`).

### Composer

[](#composer)

Edit the `composer.json` file with your project name, authors etc.

Use `composer require package` and `composer remove package` to add/remove packages (ex: `drupal/group`).

- [composer.json](composer.json)

### Tests

[](#tests)

Edit the following files, replacing `starterkit` with your project name (ex: `my-website`):

- [phpunit.xml](phpunit.xml)
- [tests/docker-compose.yml](tests/docker-compose.yml)
- [tests/settings/settings.test.php](tests/settings/settings.test.php)
- [tests/test.sh](tests/test.sh)

### Site configuration

[](#site-configuration)

Edit the Drupal site configuration to set up the site name (can be done via the Drupal UI as well).

- [config/system.site.yml](config/system.site.yml)

### Local stack

[](#local-stack)

See the [Running the site](#running-the-site) section below.

- [local/docker-compose.yml](local/docker-compose.yml)
- [local/install.sh](local/install.sh)
- [local/shared/settings/settings.local.php](local/shared/settings/settings.local.php)

Recommended modules
-------------------

[](#recommended-modules)

Here's a list of commonly used modules among the UN-OCHA websites.

### Components

[](#components)

Used with the Common Design theme.

-

### Social auth humanitarian id

[](#social-auth-humanitarian-id)

For logging in through HID

- [https://www.drupal.org/project/social\_auth\_hid](https://www.drupal.org/project/social_auth_hid)

### Admin Denied

[](#admin-denied)

Prevent login as user 1

- [https://www.drupal.org/project/admin\_denied](https://www.drupal.org/project/admin_denied)

### Imagemagick

[](#imagemagick)

Faster and more memory efficient image handling

-

### Pathauto

[](#pathauto)

For better urls

-

### GTM Barebones

[](#gtm-barebones)

- [https://github.com/UN-OCHA/gtm\_barebones](https://github.com/UN-OCHA/gtm_barebones)

### User expire

[](#user-expire)

Automatically “block” inactive users

- [https://www.drupal.org/project/user\_expire](https://www.drupal.org/project/user_expire)

### Username Enumeration Prevention

[](#username-enumeration-prevention)

- [https://www.drupal.org/project/username\_enumeration\_prevention](https://www.drupal.org/project/username_enumeration_prevention)

### Paragraphs

[](#paragraphs)

Many UN-OCHA websites use the `paragraphs` module and related ones to structure the content of the site.

-
- [https://www.drupal.org/project/layout\_paragraphs](https://www.drupal.org/project/layout_paragraphs)

*This is enabled by default as of 2023-01-19.*

Layout Paragraphs provide better editor UX for Paragraphs.

Use these Form Display settings for each Paragraphs field you add to the site:

- Preview view mode: Preview
- Maximum nesting depth: 0
- Require paragraphs to be added inside a layout: FALSE (unchecked)
- Placeholder message when field is empty: \[blank string\]

### XML Sitemap

[](#xml-sitemap)

To help search engines index your website, the `xmlsitemap` can help generate and submit a site map of your content.

-

*This is enabled by default as of 2023-01-19 but no sitemap is configured.*

**Note:** you may want to edit the [assets/robots.txt.append](assets/robots.txt.append) file to indicate the URL of your sitemap:

```
# Sitemap
Sitemap: https://my-website-domain/sitemap.xml

```

### Groups

[](#groups)

The `group` and related modules help create collections of content and users with specific access control permissions.

-
-

### Theme switcher

[](#theme-switcher)

The `theme_switcher` module helps control which theme to use on which pages.

- [https://www.drupal.org/project/theme\_switcher](https://www.drupal.org/project/theme_switcher)

### Field groups

[](#field-groups)

The `field_group` module helps organizing fields in a form.

- [https://www.drupal.org/project/field\_group](https://www.drupal.org/project/field_group)

Patches
-------

[](#patches)

See the [patches/notes.md](patches/notes.md) about Drupal 10 compatibility patches etc.

Running the site
----------------

[](#running-the-site)

You should create a proper standard environment stack to run your site.

But in the meantime the [local](local) directory contains what is necessary to quickly create a set of containers to run your site locally.

Run `./local/install.sh -h` to see the script options.

Updating this repository
------------------------

[](#updating-this-repository)

1. Update dependendices etc. in the [composer.json](composer.json) file
2. Create a local instance by running `./local/install.sh -m -i -c`
3. Log in this new instance and enable/disable/configure the modules and site
4. Export the configuration (ex: `docker exec -it starterkit-local-site drush cex`)
5. Create a Pull Request with the changes
6. Stop and remove the containers with `./local/install.sh -x -v`

**Note:** do not forget to set up your local proxy to manage the `starterkit-local.test` domain.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance65

Regular maintenance activity

Popularity8

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor2

2 contributors hold 50%+ of commits

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/346443feed98de86efcea04bbc5094dc2a4146181bca1e8936beb6ac46eed455?d=identicon)[unocha](/maintainers/unocha)

---

Top Contributors

[![lazysoundsystem](https://avatars.githubusercontent.com/u/67453?v=4)](https://github.com/lazysoundsystem "lazysoundsystem (298 commits)")[![unocha-jenkins](https://avatars.githubusercontent.com/u/19818997?v=4)](https://github.com/unocha-jenkins "unocha-jenkins (124 commits)")[![orakili](https://avatars.githubusercontent.com/u/696348?v=4)](https://github.com/orakili "orakili (77 commits)")[![cafuego](https://avatars.githubusercontent.com/u/148719?v=4)](https://github.com/cafuego "cafuego (67 commits)")[![attiks](https://avatars.githubusercontent.com/u/105144?v=4)](https://github.com/attiks "attiks (44 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (18 commits)")[![left23](https://avatars.githubusercontent.com/u/1835923?v=4)](https://github.com/left23 "left23 (4 commits)")

### Embed Badge

![Health badge](/badges/unocha-starterkit/health.svg)

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

PHPackages © 2026

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