shopeatlocal is one of the World's most feature complete tool to manage an online marketplace where you can connect your local food procuders and consumers. Features include producer management, member management, product search, a battle-hardened cycle management system, website management and much more.
shopeatlocal is maintained by the board at Cultivate Food Connections. Feel more than free to contact us for help with getting your local market running!
If you're a developer and want to take part in developing shopeatlocal, please head on to our wiki and educate there on how you can get started.
- Docker
- npm
cd appanddocker compose up -dcp app/Extra/Cfg.js_example app/Cfg.jsnpm installnpm run dev
If you would like to deploy this project, we have an example of containerizing it and deploying those container to kubernetes via github actions. The process has three legs, containerize, push images, and k8s resources. With these examples a fork of this repo can be made to deploy.
This project has a few moving pieces that need to be build and copied to have a runnable site.
- Dockerfile: places the cfg.js in the right place, builds the producer reports static js, builds the handlebars app, and packages it all into a node container.
- migrations.Dockerfile: wraps sql files in Extra in flyway and configures environment variables for connecting to a mysql instance
Executing the build for these dockerfiles happens via Github Actions.
- Docker Push App: pushes a new version of the app container to ghcp.io. It will be tagged with
sha-{{commit sha}}. - Docker Push Migrations: pushes a new version of the flyway container to ghcp.io.
Note: there are fields in these pipelines that are specific to the repo the pipeline runs in. Consider changing them if you fork this repo.
The final leg of the process is declaring k8s resources that could be used to production-alize the application.
- Deploy K8s: This workflow deploys the following resources to kubernetes.
Note that it requires a kube config as a github actions secret. This can be generated from a namespace scoped service account.
Also note that a secret is required to pull images from ghcr. See this guide.
- deployment.yaml: the main deployment of the app. It uses the migrations image as an initContainer to apply migrations to the mysql database.
- kustomization.yaml: configures the image tags used in the deployment
- mysql.yaml: single instance deployment of mysql:9
- ingress.yaml: an ingress permitting traffic to the app container
- deployment.yaml: the main deployment of the app. It uses the migrations image as an initContainer to apply migrations to the mysql database.
Note: there are a number of fields in these resources related to the purpose of the deployment, consider changing the namespace and domain name.
If you find a security vulnerability in the codebase, we would like to kindly ask you not to open a public issue, but reach out to us at [email protected].
Antefix-consulting cspellsoftware BrandonFroncek-PellSoftware
pan14 Autistic Lucario, and Abacagi on Freesound.