PHPackages                             happyculture/kumquat\_kickstarter - 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. happyculture/kumquat\_kickstarter

ActiveDrupal-module

happyculture/kumquat\_kickstarter
=================================

Drupal project site building kickstarter

1.2.0(1y ago)1761[9 issues](https://github.com/Happyculture/kumquat_kickstarter/issues)PHP

Since Jul 23Pushed 1y agoCompare

[ Source](https://github.com/Happyculture/kumquat_kickstarter)[ Packagist](https://packagist.org/packages/happyculture/kumquat_kickstarter)[ RSS](/packages/happyculture-kumquat-kickstarter/feed)WikiDiscussions 1.x Synced 1mo ago

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

[![Logo Kumquat Kickstarter](kumquat_kickstarter.png)](kumquat_kickstarter.png)

- **[Kumquat Kickstarter](#intro)**
- **[Installation](#installation)**
- **[Basic usage](#usage)**
- **[Advanced usage](#advanced)**
- **[Troubleshooting](#troubleshooting)**
- **[Credits](#credits)**

Kumquat Kickstarter
====================================================

[](#kumquat-kickstarter)

Kumquat kickstarter is a drupal module that helps you start your Drupal projects faster by migrating entity bundles and fields from a spreadsheet.

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

[](#installation)

- `composer require happyculture/kumquat_kickstarter --dev`
- `drush en kumquat_kickstarter`

Basic usage
--------------------------------------------

[](#basic-usage)

1. Copy this [Google Sheet](https://docs.google.com/spreadsheets/d/1i4tHm7GRCEtx5KYzSwsYa-QfFAVfSuFfZfQKn2bTjjU/edit?usp=sharing) into your own Drive and fill it with data
    1. Each bundle you want to create must have an entry in the `Bundles` worksheet
    2. Each bundle for which you want fields must have its own worksheet named `Field: [BUNDLE LABEL]` based on the `Fields: Actualités` worksheet
2. Export it as ODS format, name it `site_builder.ods` and place it in your `../config/` directory
    1. To avoid migration issues, ensure that all worksheets only have the appropriate amount of rows. You can manually delete additional ones, or use the cleanup script attached to the Google Sheet to automate it.
3. Migrate the bundles: `drush migrate:import --tag kumquat_kickstarter_entity_bundles`
4. Clear Drupal cache to get the new bundles detected: `drush cache:rebuild`
5. Migrate the fields: `drush migrate:import --tag kumquat_kickstarter_fields`
6. Migrate the default form modes: `drush migrate:import --tag kumquat_kickstarter_default_form_mode`
7. Migrate the full view modes: `drush migrate:import --tag kumquat_kickstarter_full_view_mode`
8. Migrate the pathauto configuration: `drush migrate:import --tag kumquat_kickstarter_pathauto`
9. Export the created configuration

Advanced usage
--------------------------------------------------

[](#advanced-usage)

### Running all fields migrations of a specific entity type or bundle

[](#running-all-fields-migrations-of-a-specific-entity-type-or-bundle)

Fields migrations are generated using custom migration tags that allows to run all fields migration of a specific entity type or bundle at once. This tags are the form of `kumquat_kickstarter_fields:ENTITY_TYPE` and `kumquat_kickstarter_fields:ENTITY_TYPE__BUNDLE`.

For example, to run the fields migrations of the `news_categories` vocabulary, you can run `drush migrate:import --tag kumquat_kickstarter_fields:taxonomy_term__news_categories`.

### Prepopulating migrate maps after site reinstall

[](#prepopulating-migrate-maps-after-site-reinstall)

It can help a lot to prepopulate the migrate maps when you reinstall your site from scratch to prevent future migrations to override your existing entities.

To do so, you can use the `drush kumquat_kickstarter:prepropulate --tag kumquat_kickstarter` command.

### Translating the spreadsheet in your language

[](#translating-the-spreadsheet-in-your-language)

You may have noticed but the first line of each worksheet is hidden. It contains the name used by the script to migrate the data. The headers line that you can see is dedicated to end users and can be translated.

The names of the entity and field types cannot be translated, though. They are used by the migration to get important settings from the code.

### Translating the configuration that you migrate

[](#translating-the-configuration-that-you-migrate)

Configuration is imported using the site's default language. To be able to also import the translated version of the configuration for your other enabled languages you'll need to add some columns in the document.

The additional columns have to be named like the reference column (see below) appended by an uppercased langcode.

Reference columns for bundles:

- Name
- Description

Reference columns for fields (include label override):

- Field label
- Help text

For example, if your default language is French and if you want the configuration to be translated in English and Spanish, you'll need to add "Name EN", "Name SP", "Description EN" and "Description SP" columns to your Bundles worksheet. You'll also need to add "Field label EN", "Field label SP", "Help text EN" and "Help text SP" columns to your fields worksheets.

### Using contributed and custom entities

[](#using-contributed-and-custom-entities)

To add an entity type:

1. Enable the module that carries the entity type
2. Find the PHP Class that define the bundle entity ('bundle of' in the Annotation)
3. Copy the exact label value of your bundle entity
4. Paste it in the A column of the `Settings` worksheet
5. You can start using this new type in the `Bundles` worksheet and run migrations to get those bundles migrated

Troubleshooting
----------------------------------------------------------

[](#troubleshooting)

### Errors when defining fields settings

[](#errors-when-defining-fields-settings)

#### Invalid YAML

[](#invalid-yaml)

Most of the time, invalid YAML will not throw any useful error. Be careful to respect indentation and wrap keys or values including spaces into some quotes.

#### Field types that convert settings

[](#field-types-that-convert-settings)

The settings columns need to be filled with YAML. Most of the time, you can take the YAML from the settings a field created in the UI, but sometimes, for example for list fields, it won't work. The thing is that some field types implements a `storageSettingsFromConfigData()` or a `fieldSettingsFromConfigData()` static method that converts the settings.

For example, for a *List (text)* field, you would find the following in the field storage configuration object:

```
allowed_values:
  -
    value: my_key
    label: 'My label'
  -
    value: my_other_key
    label: 'My other label'

```

But because of the `ListItemBase::storageSettingsFromConfigData()` method, you will need to put the following in the migration source file:

```
allowed_values:
  my_key: 'My label'
  my_other_key: 'My other label'

```

Credits
==========================================

[](#credits)

The font used for the logo is [Smooth Butter from PutraCetol Studio](https://putracetol.com/product/smooth-butter/).

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance21

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~60 days

Recently: every ~244 days

Total

28

Last Release

488d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d1af6bff984cfb80129e7c8f9d536abbc3293d3053e3152ffa732b9f1d0141b1?d=identicon)[DuaelFr](/maintainers/DuaelFr)

---

Top Contributors

[![Besfr](https://avatars.githubusercontent.com/u/152320?v=4)](https://github.com/Besfr "Besfr (2 commits)")

### Embed Badge

![Health badge](/badges/happyculture-kumquat-kickstarter/health.svg)

```
[![Health](https://phpackages.com/badges/happyculture-kumquat-kickstarter/health.svg)](https://phpackages.com/packages/happyculture-kumquat-kickstarter)
```

###  Alternatives

[farmos/farmos

A web-based farm record keeping application.

1.2k6.7k1](/packages/farmos-farmos)[govcms/govcms

GovCMS Drupal Distribution

18997.1k3](/packages/govcms-govcms)[drupalwxt/wxt

Project template for Drupal 10 sites built with the WxT distribution.

29159.8k8](/packages/drupalwxt-wxt)[az-digital/az_quickstart

Arizona Quickstart

50234.3k2](/packages/az-digital-az-quickstart)[voidagency/vactory_starter_kit

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

1019.7k](/packages/voidagency-vactory-starter-kit)[acquia/acquia-migrate-accelerate

An enhanced UI and assistant for Drupal migrations. See https://www.acquia.com/drupal9/accelerate-your-migration.

1366.8k](/packages/acquia-acquia-migrate-accelerate)

PHPackages © 2026

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