RedwoodJS

Qoddi supports natively RedwoodJS apps and applies automatically routing and infrastructure modifications to the standard NodeJS buildpack.

RedwoodJS is a monorepo front and API stack, below we outlined specific configuration required to run RedwoodJS on Qoddi both as an API or Web endpoints.

Detection

To detect your RedwoodJS app, Qoddi needs to find a redwood.toml inside your repository.

Package.json

Add both build and start scripts inside your package.json file:

"scripts": {
    "build": "rw build",
    "start": "node index.js"
},

If you want to build only the api side you can modify the build line: rw build web

Procfile

A Procfile with the starting yarn command is mandatory for your app to run. If the Procfile is absent, your app will fail and display a 502 error.

release: yarn rw prisma migrate deploy
web: yarn rw serve

You can also modify the serve command to serve only the web component: web: yarn rw serve web

App Port

RedwoodJS uses port 8910, make sure your app is configured to listen on this port inside your app settings page. This port is set automatically by Qoddi at the initial build.

If you use only the api component you can modify your app port to 8911 to serve the GraphQL api directly on the main app URL.

Access API functions

Contrary to bare metal configurations, Qoddi doesn’t listen on port 8911 when both api and web contexts are built. By default, the GraphQL API is available under http://<appURL>/.redwood/functions/graphql/

You can change this inside the redwood.toml file:

  apiUrl = "/.redwood/functions"

to (for instance):

  apiUrl = "/api"

This will serve the GraphQL API on http://<appURL>/api/graphql/

Connection to Qoddi’s local databases during the build

Builders on Qoddi are located on a separate infrastructure and cannot access Qoddi’s datastore. For that reason, DB initialization or migration steps will fail during the build. DB initialization or migraiton sequence must be done on the Procfile.

Additional configuration settings

Please refer to the NodeJS buildpack and RedwoodJS documentation.

Was this helpful?

0 / 1