{"id":24761668,"url":"https://github.com/driebit/ginger","last_synced_at":"2025-10-11T09:31:03.187Z","repository":{"id":37431102,"uuid":"59114967","full_name":"driebit/ginger","owner":"driebit","description":"Ginger: awesome semantic CMS built on Zotonic","archived":false,"fork":false,"pushed_at":"2025-09-03T09:07:46.000Z","size":30451,"stargazers_count":30,"open_issues_count":36,"forks_count":9,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-09-03T11:16:19.201Z","etag":null,"topics":["cms","erlang"],"latest_commit_sha":null,"homepage":"http://ginger.nl","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/driebit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-05-18T12:48:46.000Z","updated_at":"2025-09-03T09:07:48.000Z","dependencies_parsed_at":"2024-05-14T10:49:03.823Z","dependency_job_id":"44704c18-bdad-4237-854e-f1825d25cfa4","html_url":"https://github.com/driebit/ginger","commit_stats":null,"previous_names":[],"tags_count":78,"template":false,"template_full_name":null,"purl":"pkg:github/driebit/ginger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driebit%2Fginger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driebit%2Fginger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driebit%2Fginger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driebit%2Fginger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/driebit","download_url":"https://codeload.github.com/driebit/ginger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driebit%2Fginger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006777,"owners_count":26084179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cms","erlang"],"created_at":"2025-01-28T19:18:40.275Z","updated_at":"2025-10-11T09:30:58.928Z","avatar_url":"https://github.com/driebit.png","language":"JavaScript","readme":"[![Build Status](https://travis-ci.org/driebit/ginger.svg?branch=master)](https://travis-ci.org/driebit/ginger)\n\nGinger\n======\n\nThis is the Ginger Zotonic edition. This repository contains:\n\n* (most) Ginger modules\n* Docker configuration\n* shell scripts\n\nDocumentation\n-------------\n\n* [Docker development environment](docs/docker.md)\n* [Guidelines](docs/guidelines.md)\n* [Why Ginger is a single Git repository](docs/monorepo.md)\n* [Releases](docs/releases.md)\n* [Browser tests](docs/browser-tests.md)\n* [Templates](docs/templates.md)\n* [Anymeta import](docs/anymeta-import.md)\n* [Troubleshooting](docs/trouble.md)\n\nGetting started\n---------------\n\nClone this repository and install [Docker](https://www.docker.com/getdocker).\n\nYou can run Ginger in three ways:\n\n1. all-in Docker (easiest)\n2. [selective Docker](#2-selective-docker-recommended) (**recommended** because it’s more flexible and has better \n   performance while being only slightly harder to set up)\n3. don’t use Docker at all (hardest). \n\n### 1. All-in Docker\n\nTo run Ginger completely in Docker containers, open a terminal and enter:\n\n```bash\n$ make up\n```\n\nTo open a Zotonic shell:\n\n```bash\n$ make shell\n```\n\nTo run [Gulp](https://github.com/driebit/docker-node-gulp) in the Ginger\ndirectory:\n\n```bash\n$ make gulp site=your_site_name\n```\n\nTo run the tests for a module, e.g. mod_ginger_collection:\n\n```bash\n$ docker-compose run zotonic bin/zotonic runtests mod_ginger_collection\n```\n\nIf you want to run tests repeatedly, it may be easier to open a shell in a \nclean Zotonic container:\n\n```bash\n$ make prompt\n```\n\nand then make and run the tests: \n\n```\n$ make \u0026\u0026 bin/zotonic runtests mod_ginger_collection\n```\n\nFor more, see the [Docker](docs/docker.md) doc chapter.\n\n### 2. Selective Docker (recommended)\n\nDue to limitations in Docker for Mac, file synchronization performance suffers\nwhen you have large amounts of files (i.e. many sites with node_modules/ \ndirectories).\n\nBy running Zotonic directly on your host (outside Docker) we circumvent this\nlimitation. Another advantage is that you can directly make changes in Zotonic\nsource code, too. \n\nAll other services (PostgreSQL, Elasticsearch, Kibana) still run in\ncontainers.\n\nFirst, install Zotonic’s dependencies, including Erlang:\n\n```bash\n$ brew install erlang@21 fswatch imagemagick\n$ brew link erlang@21 --force\n```\n\nThen clone both Ginger and Zotonic:\n\n```bash\n$ git clone https://github.com/driebit/ginger.git\n$ git clone https://github.com/zotonic/zotonic.git --branch 0.x \n```\n\nCopy Ginger’s configuration file, which includes its dependencies:\n\n```bash\n$ mkdir -p ~/.zotonic/0\n$ cp ginger/config/zotonic.config ~/.zotonic/0/zotonic.config\n```\n\nPoint Zotonic to your Ginger sites/ and modules/ directories:\n\n```bash\n$ mkdir zotonic/user\n$ ln -s ../../ginger/sites zotonic/user/sites\n$ ln -s ../../ginger/modules zotonic/user/modules\n```\n\nAnd run Zotonic:\n\n```bash\n$ cd ginger\n$ make start\n```\n\nSee [Troubleshooting](docs/trouble.md) if you get errors.\n\nYou have to enter your account’s sudo password to enable port forwarding \n(from port 80 to 8000).\n\nFirst the supporting Docker containers are started, then Zotonic is run.\nZotonic is then available on http://localhost.\n\nWhen you quit Zotonic, the Docker containers are stopped as well.\n\nSites overview\n---------------\n\n* The [Zotonic status site](http://zotonic.com/docs/latest/installation/zotonic_status.html)\n  is available at [http://localhost](http://localhost). Log in with empty \n  password.\n* Make sure to add the hostnames of individual sites (e.g. \n  `yoursite.docker.test`) to your `/etc/hosts` file.\n\nChecking out sites\n------------------\n\n1. Check out your Zotonic site in the `sites/` directory.\n2. Start the site from the [status site](http://zotonic.com/docs/latest/ref/status-site.html):\n   http://localhost.\n3. Login and go to the modules page\n4. Deactivate site module and activate it again\n5. Now the site should work properly\n\nAdding modules\n--------------\n\nPlace custom modules in `modules/` (no symlinks needed).\n\nFetching changes\n----------------\n\n```\n$ git fetch\n$ git rebase\n```\n\nMaking changes\n--------------\n\n### Commit messages\n\nPlease follow the [Driebit guidelines for commit messages](https://gitlab.driebit.nl/driebit/docs/blob/master/git.md#commit-messages).\nAdditionally, prefix your message with the module that your change applies to.\nFor instance:\n\n```\n[admin] Fix login form styling\n[foundation] Add carousel template\n```\n\n### Bugfixes to the release branch\n\nWhen you are fixing a bug in the current release branch (as it is published on\nginger-test or ginger-acceptatie):\n\n1. Fetch changes: `$ git fetch`.\n2. View [branches](https://gitlab.driebit.nl/driebit/ginger/branches): `$ git branch -a`.\n3. Switch to the latest release branch: `$ git checkout release-0.1.0`.\n4. Make, commit and push your changes.\n5. Optionally, update ginger-test with the your changes to the release branch:\n\n```bash\n$ ssh ginger-test.driebit.net\n$ cd /srv/zotonic/\n$ z git pull\n$ z zotonic shell\n$ z:m().\n```\n6. Optionally, the release branch to master:\n\n```\ngit checkout master\ngit pull\ngit merge release-0.#.0 (latest release branch)\ngit push\n```\n\n### Feature developments\n\nWhen working on (larger) features and fixes that should not be part of the\ncurrent release:\n\n1. Fetch changes: `$ git fetch`.\n2. Switch to master: `$ git checkout master`.\n3. Make, commit and push your changes.\n\nDeploying sites\n---------------\n\nTo deploy a site, log in to the proper server (`ginger-test.driebit.net`,\n`ginger-acceptatie.driebit.net` or `ginger01.driebit.net`):\n\n```bash\n$ ssh ginger-test.driebit.net\n$ cd /srv/zotonic/sites/[site name]\n```\n\nCheck the current Git branch, then pull the latest changes:\n\n```bash\n$ z git pull\n```\n\nThen compile the changes and flush the site:\n\n```bash\n$ z zotonic shell\n$ z:compile(), z:flush([site name]).\n```\n\nLicense\n-------\n\nGinger is released under the Apache 2.0 License. See the included LICENSE file\nfor more information.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdriebit%2Fginger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdriebit%2Fginger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdriebit%2Fginger/lists"}