This repo contains the following members:
| Crate | Description |
| -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [**saleor-app-sdk**](https://crates.io/crates/saleor-app-sdk) | Types and utilities for making Saleor Apps |
| [**saleor-app-template**](https://github.com/djkato/saleor-apps-rs/tree/master/app-template) | Simple template for making Saleor apps using axum |
| [**saleor-app-sitemap**](https://github.com/djkato/saleor-apps-rs/tree/master/sitemap-generator) | Saleor App for keeping sitemap.xml uptodate |
| [**saleor-app-simple-payment-gateway**](https://github.com/djkato/saleor-apps-rs/tree/master/simple-payment-gateway) | Saleor App that adds payment methods: Cash on delivery, Cash on warehouse pickup, bank tranfer etc. |
# Using the apps
To use on bare-metal, clone this repo and just run build and run the apps.
To use with Docker/k8s, you can find prebuilt docker images on the right sidebar next to the code tree under "Packages".
Simply add the package to your `docker-compose.yml`, for example like so:
```yml
services:
app-payment-gateway:
image: ghcr.io/djkato/saleor-app-simple-payment-gateway:0.1.1
env_file:
- docker-gateway.env
networks:
- saleor-app-tier
depends_on:
- redis-apl
ports:
- 3001:3001
app-sitemap-generator:
image: ghcr.io/djkato/saleor-app-sitemap-generator:0.1.0
env_file:
- docker-sitemap.env
networks:
- saleor-app-tier
depends_on:
- redis-apl
ports:
- 3002:3002
volumes:
- sitemaps:/sitemaps
redis-apl:
image: bitnami/redis:latest
environment:
- ALLOW_EMPTY_PASSWORD=yes
- DISABLE_COMMANDS=FLUSHDB,FLUSHALL,CONFIG
ports:
- 6380:6379
networks:
- saleor-app-tier
volumes:
- redis-apl:/bitnami/redis/data
volumes:
redis-apl:
driver: local
driver_opts:
type: none
device: ./temp/volumes/redis/
o: bind
sitemaps:
driver: local
driver_opts:
type: none
device: ./temp/docker-sitemaps/
o: bind
networks:
saleor-app-tier:
driver: bridge
```
and set all necessary env variables in `app-simple-gateway.env` according to the `env.example` file.
# Using this repo
To use, you need to have [Rust environment prepared](https://rustup.rs/).
Every folder represents a different workspace. To add a new lib, do `cargo new --lib` or `cargo new ` for binary apps. It should appear as a new member under root `Cargo.toml`
To run apps propery, use `cargo run -c `
# Unofficial Saleor App SDK
SDK for building [Saleor Apps](https://github.com/saleor/apps)
to use in your project outside this repo: `cargo add saleor-app-sdk`
to use in your project inside this repo, create a new workspace member and add `saleor-app-sdk.workspace = true` to the members `Cargo.toml`
# Unofficial Saleor App Template
## Creating a new Saleor App from template
If using the `saleor-app-template`, create a new workspace member `cargo new `,`rm -rf /*` then `cp -r app-template/* /`.
## Adding new dependencies
Workspace dependencies need to be managed manually. If you wanna add a new dependency to a single member do `cargo add --package `.
If you want to use a shared dependency, add it to the root level `Cargo.toml`,
then inside your member `Cargo.toml`add it under depencency like: ` = { workspace = true, features = [ "..." ] }`.
## Developing
To have the app rebuild during development, install bacon `cargo install bacon`, then run `bacon run -- ` to have bacon watch your code and rerun it on save!
## License
Each workspace member has it's license in it's own directory, mentioned in `Cargo.toml`.
### TL;DR:
- saleor-app-sdk, saleor-app-template and the root structure fall under either MIT or Apache 2.0 at your convenience.
- Rest of the apps in this repo fall under `PolyForm-Noncommercial-1.0`. If you want to use my apps commercially, each app costs 10€ (or voluntarily more). Upon payment/donation you are allowed to use the given app commercially.
## Docker images
To build the docker image, log into ghcr.io via docker like `docker login ghcr.io -u -p ` run `cargo make`. To publish, run `cargo push-containers`. If you want to push image to your own place, modify `Makefile.toml` and `Dockerfile` to include your username instead of mine.