diff --git a/public/v4/apps/novu.yml b/public/v4/apps/novu.yml new file mode 100644 index 0000000..7416f9a --- /dev/null +++ b/public/v4/apps/novu.yml @@ -0,0 +1,227 @@ +captainVersion: 4 +services: + $$cap_appname-cache: + caproverExtra: + notExposeAsWebApp: 'true' + image: redis:$$cap_REDIS_VERSION + + $$cap_appname-db: + caproverExtra: + notExposeAsWebApp: 'true' + image: mongo:$$cap_MONGO_VERSION + environment: + PUID: $$cap_PUID + PGID: $$cap_PGID + volumes: + - $$cap_appname-db:/data/db + + $$cap_appname-api: + caproverExtra: + containerHttpPort: $$cap_NOVU_API_PORT + image: $$cap_NOVU_IMAGE_URL/api:$$cap_NOVU_IMAGE_VERSION + environment: + NODE_ENV: $$cap_ENVIRONMENT + API_ROOT_URL: http://$$cap_appname-api.$$cap_root_domain + DISABLE_USER_REGISTRATION: $$cap_NOVU_DISABLE_USER_REGISTRATION + PORT: $$cap_NOVU_API_PORT + FRONT_BASE_URL: http://$$cap_appname.$$cap_root_domain + MONGO_URL: mongodb://srv-captain--$$cap_appname-db/$$cap_MONGO_DB + REDIS_HOST: srv-captain--$$cap_appname-cache + REDIS_PORT: $$cap_REDIS_PORT + REDIS_DB_INDEX: $$cap_REDIS_DB_INDEX + S3_LOCAL_STACK: $$cap_NOVU_S3_LOCAL_STACK + S3_BUCKET_NAME: $$cap_NOVU_S3_BUCKET_NAME + S3_REGION: $$cap_NOVU_S3_REGION + AWS_ACCESS_KEY_ID: $$cap_NOVU_AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: $$cap_NOVU_AWS_SECRET_ACCESS_KEY + JWT_SECRET: $$cap_NOVU_JWT_SECRET + STORE_ENCRYPTION_KEY: $$cap_NOVU_STORE_ENCRYPTION_KEY + SENTRY_DSN: $$cap_NOVU_API_SENTRY_DSN + depends_on: + - $$cap_appname-db + - $$cap_appname-cache + + $$cap_appname-ws: + caproverExtra: + containerHttpPort: $$cap_NOVU_PORT_WEBSOCKET + image: $$cap_NOVU_IMAGE_URL/ws:$$cap_NOVU_IMAGE_VERSION + environment: + PORT: $$cap_NOVU_PORT_WEBSOCKET + NODE_ENV: $$cap_ENVIRONMENT + MONGO_URL: mongodb://srv-captain--$$cap_appname-db/$$cap_MONGO_DB + REDIS_HOST: srv-captain--$$cap_appname-cache + REDIS_PORT: $$cap_REDIS_PORT + JWT_SECRET: $$cap_NOVU_JWT_SECRET + depends_on: + - $$cap_appname-db + - $$cap_appname-cache + + $$cap_appname: + caproverExtra: + containerHttpPort: $$cap_NOVU_PORT_APPLICATION + image: $$cap_NOVU_IMAGE_URL/web:$$cap_NOVU_IMAGE_VERSION + environment: + REACT_APP_API_URL: http://$$cap_appname-api.$$cap_root_domain + REACT_APP_ENVIRONMENT: $$cap_ENVIRONMENT + REACT_APP_WIDGET_EMBED_PATH: http://$$cap_appname-embed.$$cap_root_domain/embed.umd.min.js + REACT_APP_DOCKER_HOSTED_ENV: $$cap_NOVU_DOCKER_HOSTED_ENVIRONMENT + depends_on: + - $$cap_appname-api + + $$cap_appname-widget: + caproverExtra: + containerHttpPort: $$cap_NOVU_PORT_WIDGET + image: $$cap_NOVU_IMAGE_URL/widget:$$cap_NOVU_IMAGE_VERSION + environment: + REACT_APP_API_URL: http://$$cap_appname-api.$$cap_root_domain + REACT_APP_WS_URL: http://$$cap_appname-ws.$$cap_root_domain + REACT_APP_ENVIRONMENT: $$cap_ENVIRONMENT + depends_on: + - $$cap_appname-api + - $$cap_appname + + $$cap_appname-embed: + caproverExtra: + containerHttpPort: $$cap_NOVU_PORT_EMBED + image: $$cap_NOVU_IMAGE_URL/embed:$$cap_NOVU_IMAGE_VERSION + environment: + WIDGET_URL: http://$$cap_appname-widget.$$cap_root_domain + depends_on: + - $$cap_appname-widget + +caproverOneClickApp: + displayName: Novu + isOfficial: true + description: Open Source Notification Infrastructure For Developers + documentation: https://docs.novu.co + instructions: + start: |- + Novu is a fully functional real-time notification center for your web and react apps. + The only open-source notifications infrastructure that manages multi-channel content, scheduled notifications, digest engine, user preferences, and delivers Email, SMS, Push and Chat notifications using a single API. + end: |- + Novu has been successfully deployed! It might take few moments before it's fully started. + You can access it at `http://$$cap_appname.$$cap_root_domain`. + variables: + - id: $$cap_NOVU_IMAGE_VERSION + label: Application | Version + description: Version tag of Novu's Docker images. Check out their valid tags at https://github.com/novuhq/novu/pkgs/container/novu%2Fapi + defaultValue: '0.8.0' + validRegex: /.{1,}/ + - id: $$cap_NOVU_IMAGE_URL + label: Application | Image URL + description: URL to Novu's Docker images. + defaultValue: ghcr.io/novuhq/novu + validRegex: /.{1,}/ + - id: $$cap_REDIS_VERSION + label: Redis | Version + description: Version tag of Redis' image. Check out their valid tags at https://hub.docker.com/_/redis/tags + defaultValue: '7.0.5' + validRegex: /.{1,}/ + - id: $$cap_MONGO_VERSION + label: MongoDB | Version + description: Version tag of MongoDB's image. Check out their valid tags at https://hub.docker.com/_/mongo/tags + defaultValue: '6.0.2' + validRegex: /.{1,}/ + - id: $$cap_ENVIRONMENT + label: General | Environment + description: Application environment (e.g `dev`, `test`, `prod`, `ci`, `local`). + defaultValue: prod + validRegex: /^(dev|test|prod|ci|local)$/ + - id: $$cap_NOVU_DOCKER_HOSTED_ENVIRONMENT + label: General | Docker-Hosted Environment + description: Whether to the application is hosted in Docker. + defaultValue: 'true' + validRegex: /^(true|false)$/ + - id: $$cap_PUID + label: General | User ID + description: User ID that the process uses, run `id $user` on your instance to see the ID. + defaultValue: 1000 + validRegex: /.{1,}/ + - id: $$cap_PGID + label: General | Group ID + description: Group ID that the process uses, run `id $user` on your instance to see the ID. + defaultValue: 1000 + validRegex: /.{1,}/ + - id: $$cap_NOVU_JWT_SECRET + label: Security | JWT Secret + description: Secret for JWT. + defaultValue: $$cap_gen_random_hex(32) + validRegex: /.{1,}/ + - id: $$cap_NOVU_STORE_ENCRYPTION_KEY + label: Security | Store Encryption Key + description: Key for store encryption. + defaultValue: $$cap_gen_random_hex(32) + validRegex: /.{1,}/ + - id: $$cap_NOVU_DISABLE_USER_REGISTRATION + label: Privacy | Disable User Registration + description: Whether to disable user registration. + defaultValue: 'false' + validRegex: /^(true|false)$/ + - id: $$cap_NOVU_API_PORT + label: API | Port + description: Port of Novu's API. + defaultValue: 3000 + validRegex: /.{1,}/ + - id: $$cap_NOVU_API_SENTRY_DSN + label: API | Sentry DSN + description: Sentry's DSN for error tracking. Leave empty to disable. + - id: $$cap_REDIS_PORT + label: Redis | Port + description: Port of Redis' host. + defaultValue: 6379 + validRegex: /.{1,}/ + - id: $$cap_REDIS_DB_INDEX + label: Redis | Database Index + description: Index of the database in Redis. + defaultValue: 2 + validRegex: /.{1,}/ + - id: $$cap_MONGO_DB + label: MongoDB | Database Name + description: Name of the database in MongoDB. + defaultValue: novu + validRegex: /.{1,}/ + - id: $$cap_NOVU_PORT_EMBED + label: Networking | Embed Port + description: Port of Novu's embed host. + defaultValue: 4701 + validRegex: /.{1,}/ + - id: $$cap_NOVU_PORT_WIDGET + label: Networking | Widget Port + description: Port of Novu's widget host. + defaultValue: 4500 + validRegex: /.{1,}/ + - id: $$cap_NOVU_PORT_APPLICATION + label: Networking | Web Port + description: Port of Novu's web host. + defaultValue: 4200 + validRegex: /.{1,}/ + - id: $$cap_NOVU_PORT_WEBSOCKET + label: Networking | WebSocket Port + description: Port of Novu's WebSocket host. + defaultValue: 3002 + validRegex: /.{1,}/ + - id: $$cap_NOVU_S3_LOCAL_STACK + label: S3 | Local Stack URL + description: URL to Localstack instance. Leave to `http://localhost:4566` to use local file storage. + defaultValue: http://localhost:4566 + validRegex: /.{1,}/ + - id: $$cap_NOVU_S3_BUCKET_NAME + label: S3 | Bucket Name + description: Name of the bucket. Leave to `novu-local` to use local file storage. + defaultValue: novu-local + validRegex: /.{1,}/ + - id: $$cap_NOVU_S3_REGION + label: S3 | Region + description: Region of the storage. Leave to `us-east-1` if using local file storage. + defaultValue: us-east-1 + validRegex: /.{1,}/ + - id: $$cap_NOVU_AWS_ACCESS_KEY_ID + label: S3 | AWS Access Key ID + description: Access key ID for AWS. Leave to `test` to use local file storage. + defaultValue: test + validRegex: /.{1,}/ + - id: $$cap_NOVU_AWS_SECRET_ACCESS_KEY + label: S3 | AWS Secret Access Key + description: Secret access key for AWS. Leave to `test` to use local file storage. + defaultValue: test + validRegex: /.{1,}/ diff --git a/public/v4/logos/novu.png b/public/v4/logos/novu.png new file mode 100644 index 0000000..f191645 Binary files /dev/null and b/public/v4/logos/novu.png differ