PHPackages                             openculturas/openculturas-distribution - 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. [Admin Panels](/categories/admin)
4. /
5. openculturas/openculturas-distribution

ActiveDrupal-profile[Admin Panels](/categories/admin)

openculturas/openculturas-distribution
======================================

OpenCulturas: arts + culture portal software for regional marketing.

3.0.2(2w ago)710.0k↑58.3%1GPL-2.0-or-laterSCSSPHP &gt;=8.4.0

Since Nov 15Pushed 2d ago1 watchersCompare

[ Source](https://github.com/openculturas/openculturas-distribution)[ Packagist](https://packagist.org/packages/openculturas/openculturas-distribution)[ RSS](/packages/openculturas-openculturas-distribution/feed)WikiDiscussions 3.1.x Synced 3d ago

READMEChangelogDependencies (693)Versions (95)Used By (1)

OpenCulturas
============

[](#openculturas)

Table of contents
-----------------

[](#table-of-contents)

- Introduction
- Requirements
- Third-party libraries
- Installation
- FAQ
- Development
- Maintenance
- Security

Introduction
------------

[](#introduction)

OpenCulturas is built as a pre-configured platform for cultural-focused communities, empowering actors in the cultural field to own their data and make their information accessible to a wide audience.

Requirements
------------

[](#requirements)

-  for Drupal
    - PHP 8.4
- A bunch of drupal modules and external libraries.

Third-party libraries
---------------------

[](#third-party-libraries)

These JavaScript/CSS libraries are not available on Packagist and are declared as inline package repositories in `composer.json`.

LibraryRepositoryUsed byajaxorg/ace-buildsdrupal/asset\_injectorbrianvoe/slim-selectopenculturas\_slimselectchoices-js/choices.jsdrupal/choiceselmarquis/leaflet.gesture-handlingdrupal/leafletfengyuanchen/cropperjsdrupal/image\_widget\_cropfortawesome/font-awesomeopenculturas\_base, drupal/social\_media\_linksheiseonline/shariffdrupal/shariffleaflet/leaflet.fullscreendrupal/leafletleaflet/leaflet.markerclusterdrupal/leafletperliedman/leaflet-control-geocoderopenculturas\_mapInstallation
------------

[](#installation)

### New installation

[](#new-installation)

Use the composer project template:

```
composer create-project --remove-vcs drupal/openculturas_project example.org
```

For more information go to [https://www.drupal.org/project/openculturas\_project](https://www.drupal.org/project/openculturas_project).

### Updating

[](#updating)

#### Patch release

[](#patch-release)

Optionally update library versions in the inline package repositories in `composer.json`, then:

```
composer update openculturas/openculturas-distribution "drupal/core-*" drupal/core --with-dependencies --minimal-changes
drush updatedb --yes
# Review changes, then export and commit configuration
drush config:export --yes
```

#### Minor release

[](#minor-release)

Manually increase the version constraints for `drupal/core-*` and `openculturas/openculturas-distribution` to the next minor version in `composer.json`, then follow the same steps as a patch release.

FAQ
---

[](#faq)

Q: How can I ignore patches?

A: OpenCulturas defines patches for some contrib modules. If you want to update a module before we release a new version with the patch removed, you can configure composer-patches to ignore specific patches. For more information go to .

Q: How can I contribute to OpenCulturas?

A: Please read the [Contribution gudelines](CONTRIBUTING.md).

Development
-----------

[](#development)

Please read the [Development guidelines](DEVELOPMENT.md) before you start.

We recommend using  for development.

### Installation (with ddev)

[](#installation-with-ddev)

- Clone this repository
- Install dependencies
    - `ddev composer install`
- Install OpenCulturas distribution
    - `ddev drush site:install --yes --existing-config`

### DDEV

[](#ddev)

Cheatsheet:

- Start project `ddev start`
- Run composer commands `ddev composer COMMAND` e.g. `ddev composer install`
- Run drush commands `ddev drush COMMAND` e.g. `ddev drush uli`
- Import latest database snapshot `ddev dbimport`

More information about ddev cli command .

### Patching

[](#patching)

Patches are managed with [cweagans/composer-patches](https://docs.cweagans.net/composer-patches/) v2 and tracked in `patches.lock.json`.

```
ddev composer patches-relock   # Re-discover patches in composer.json and rewrite patches.lock.json
ddev composer patches-repatch  # Delete, re-download and re-apply patches for all affected packages
ddev composer patches-doctor   # Diagnose common patching issues
```

Run `patches-relock` after adding or removing a patch in `composer.json`. Run `patches-repatch` when a patch fails to apply or a package needs a clean re-install.

### PHP Quality Checks

[](#php-quality-checks)

```
ddev composer run php:lint        # PHP parallel lint
ddev composer run php:cs          # PHPCS
ddev composer run php:cs-fix      # Auto-fix PHPCS issues
ddev composer run php:phpstan     # Static analysis
ddev composer run php:rector      # Rector dry-run
ddev composer run php:rector-fix  # Rector auto-fix
```

### JS/CSS Linting

[](#jscss-linting)

All linting commands run inside the DDEV container:

```
ddev exec npm run lint:js         # ESLint JavaScript (entire project)
ddev exec npm run lint:yaml       # ESLint YAML
ddev exec npm run lint:css        # stylelint CSS (profile/modules)
ddev exec npm run lint:css:fix    # Auto-fix CSS
ddev exec npm run lint:scss       # stylelint SCSS (openculturas_base theme)
ddev exec npm run lint:scss:fix   # Auto-fix SCSS
ddev exec npm run prettier        # Prettier JavaScript
ddev exec npm run prettier:css    # Prettier CSS
ddev exec npm run prettier:scss   # Prettier SCSS
```

To lint specific JS files:

```
ddev exec npx eslint --ext .js --no-ignore path/to/file.js
```

### Configuration files

[](#configuration-files)

All configurations are managed via [config\_devel](https://www.drupal.org/project/config_devel). Each configuration is listed in the info file of the profile or module. Therefore, any changes to the configuration must also be made in the info file.

After that, enable config\_devel and run `ddev composer run cde` or `ddev drush cde module`.

This command updates all configuration listed in the info file and removes the key `_core` and `uuid` except for views configuration. The uuid is needed because the uuid is used in other configuration as a default value, without this the default value would be not set/broken.

Maintenance
-----------

[](#maintenance)

### Repository

[](#repository)

The source code is privately hosted and mirrored to . To create a new release on drupal.org we push the used git branch/tag to . Someday when the issue [https://www.drupal.org/project/project\_composer/issues/3252534](https://www.drupal.org/project/project_composer/issues/3252534) is fixed we can directly work on drupal.org git repository.

### Info files

[](#info-files)

To update the version and sort dependencies in all module/theme info files, run: `ddev composer run info_file_normalizer`

#### Creating a release

[](#creating-a-release)

1. Set the version in `scripts/info_file_normalizer.php` (the `VERSION` constant) to the release version, e.g. `3.1.0-beta3`
2. Run `ddev composer run info_file_normalizer`
3. Commit: `chore(release): Prepare 3.1.0-beta3`
4. Tag the commit: `git tag --annotate 3.1.0-beta3 --message="3.1.0-beta3"` (annotated tag required — a plain `git tag` will fail)
5. Set `VERSION` back to `3.1.x-dev`
6. Run `ddev composer run info_file_normalizer`
7. Commit: `chore: Back to 3.1.x-dev`
8. `git push`
9. `git push --tags`

After the tag is pushed and the repository is synced to , create the release on drupal.org manually.

### Updating initial content

[](#updating-initial-content)

- Fetch latest changes and install site: `git pull && ddev composer install && ddev composer run si`
- Change content via UI
- Export content `ddev composer run export-content`

### Drush scripts

[](#drush-scripts)

At the moment l.d.o does not find the labels of field\_group. Therefore, we generate the strings.

`drush scr scripts/generate_field_group_strings.php`

Download the composer.json from drupal/core-dev and update the adjusted core-dev composer.json based on the current Drupal version.

`drush scr scripts/update_drupal_core_dev.php`

Sync display settings from 'full' to 'full\_lb' view mode.

`drush scr scripts/sync_full_to_full_lb.php`

Security
--------

[](#security)

Concerns about the software security? Or have you found a vulnerability? Please follow the principles of Responsible Disclosure. You'll find all information you need in [SECURITY.md](SECURITY.md).

###  Health Score

60

—

FairBetter than 98% of packages

Maintenance98

Actively maintained with recent releases

Popularity29

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity80

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 90.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 ~14 days

Recently: every ~7 days

Total

95

Last Release

3d ago

Major Versions

1.4.x-dev → 2.0.02023-11-14

2.6.1 → 3.0.0-beta12026-05-06

2.6.2 → 3.0.02026-05-29

2.6.x-dev → 3.1.x-dev2026-07-01

PHP version history (3 changes)1.0.0-alpha1PHP &gt;=7.4.0

1.1.0PHP &gt;=8.1

3.0.0-beta1PHP &gt;=8.4.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/8610cc0b620d6881272441106394bb37cd9fe25b93c49ca7cbfffcdc6865f97e?d=identicon)[cowain](/maintainers/cowain)

---

Top Contributors

[![tobiasbaehr](https://avatars.githubusercontent.com/u/105220?v=4)](https://github.com/tobiasbaehr "tobiasbaehr (1707 commits)")[![sanduhrs](https://avatars.githubusercontent.com/u/107764?v=4)](https://github.com/sanduhrs "sanduhrs (67 commits)")[![fisherman90](https://avatars.githubusercontent.com/u/15341844?v=4)](https://github.com/fisherman90 "fisherman90 (60 commits)")[![digitaldonkey](https://avatars.githubusercontent.com/u/444718?v=4)](https://github.com/digitaldonkey "digitaldonkey (43 commits)")[![steinhmor](https://avatars.githubusercontent.com/u/11630531?v=4)](https://github.com/steinhmor "steinhmor (7 commits)")[![mrshowerman](https://avatars.githubusercontent.com/u/2065166?v=4)](https://github.com/mrshowerman "mrshowerman (1 commits)")

---

Tags

culturedrupal

###  Code Quality

Static AnalysisPHPStan, Rector

Type Coverage Yes

### Embed Badge

![Health badge](/badges/openculturas-openculturas-distribution/health.svg)

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

###  Alternatives

[voidagency/vactory_starter_kit

Vactory is a custom Drupal profile which is developed and released by VOID Agency.

1021.6k](/packages/voidagency-vactory-starter-kit)[az-digital/az_quickstart

Arizona Quickstart

52280.4k3](/packages/az-digital-az-quickstart)[thunder/thunder-distribution

The thunder distribution

51661.9k3](/packages/thunder-thunder-distribution)[govcms/govcms

GovCMS Drupal Distribution

198102.2k3](/packages/govcms-govcms)[goalgorilla/open_social

Open Social is a distribution for building social communities and intranets.

194463.2k](/packages/goalgorilla-open-social)

PHPackages © 2026

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