A registry of DDEV add-ons where users can discover, explore, and leave comments on available add-ons.
See DDEV Add-on Registry Introduction.
While ddev add-on list is a fantastic tool, it only scratches the surface when it comes to discovering and exploring add-ons.
The need for a dedicated registry became clear as we sought to streamline access to add-ons, reduce API limitations, and lessen the maintenance burden.
For inspiration, @stasadev looked to the simplicity and functionality of projects like GTFOBins, which is built with Jekyll.
Here are the key tools used to build the DDEV Add-on Registry:
- GitHub Pages and Jekyll: Jekyll powers the static site, while GitHub Pages hosts it.
- List.js: For sorting and searching add-on entries.
- Add-on comments: giscus integration.
- Golang: Used to aggregate add-on data into Markdown files, which are transformed into Liquid templates for Jekyll.
Getting started with the DDEV Add-on Registry locally is straightforward. Here's how:
- Clone the repository: https://github.com/ddev/addon-registry
- Run
ddev startto spin up the environment - Then, launch it by running
ddev launch :4000 - To blacklist an add-on, add it to the
blacklistarray ingo/main.goat the top of the file. The changes will take effect aftergit push - To update add-ons manually (not required, as it's automated using GitHub Actions):
export DDEV_ADDON_REGISTRY_TOKEN=your-classic-github-token-no-privileges cd go go mod vendor go run main.go
You'll now be able to explore the add-ons within the registry right on your local machine.
Here's a breakdown of where important content and configuration files live:
.bundle: Contains config for local bundler..ddev: The DDEV configuration directory..github: The GitHub workflows that handle the deployment process._addons: Custom Jekyll collection that holds all the add-ons fetched from the community._data: User-defined Jekyll data types._includes: HTML partials used across the site._layouts: The layout templates for Jekyll pages._pages: Jekyll pages overrides.assets: Contains styles and static assets.go: The Golang app that collects add-on data and populates_addons.Gemfile: The Ruby equivalent ofcomposer.json, managing dependencies._config.yml: The main configuration file for the Jekyll site.addons.json: A JSON representation of all the DDEV add-ons.index.html: The homepage of the registry.