I’m new to RedwoodJS (from a Django background) and hugely impressed - the documentation is great and it seems really powerful.
On to my question. I’m writing an app that allows users to update records via WhatsApp, as well as via forms. So I have some code using whatapp-web.js that runs a WhatsApp client, listens for messages and handles them. (Let’s say for the sake of argument that it allows a user to create a new blog post in the Redwood sample app via WhatsApp.)
My questions is: where within the a Redwood app should this code live?
It’s currently a standalone file, and looks bit like this example. But I would like to extend it so that the message handlers make writes to the database tables, and the code needs to start the WhatsApp client whenever the app starts.
I’m not sure where the logical place to put it would be to make sure it runs with the rest of the app, and give it access to service functions like
Welcome @cakehoover, glad to have you! Thanks for the kind words
For your question, you might check the RW file structure out: Redwood File Structure | RedwoodJS Docs
This might be something you could put in lib, but I think you will want it in the scripts folder. Scripts can access your services and libraries.
Here is some documentation on scripts: RW Script
Generates an arbitrary Node.js script in
./scripts/<name> that can be used with
redwood execute command later.
Scripts have access to services and libraries used in your project. Some examples of how this can be useful:
- create special database seed scripts for different scenarios
- sync products and prices from your payment provider
- running cleanup jobs on a regular basis e.g. delete stale/expired data
- sync data between platforms e.g. email from your db to your email marketing platform
Instructions for running with
rw exec here: RW Execute
Execute scripts generated by
yarn redwood generate script <name> to run one-off operations, long-running jobs, or utility scripts.
I hope this gets you what you want. Please feel free to follow up if not or if you have any other thoughts.
Thanks! That sounds great
The last remaining part of the jigsaw puzzle is how to make sure that my custom
rw exec command runs whwnever the app starts. Is there a way I can attach it to
rw dev (and whatever is the equivalent startup command in production)?
I don’t want to tell you bad info. Hopefully we can beg someone else to chime in with a better answer.
I am not sure on running it with
rw dev, besides trying something like
yarn rw dev && yarn rw exec <script>.
For updating deploy scripts: I link you to this discussion, for serverless deploy like Vercel. It might help you with that or similar options.
With baremetal deploy, you can look at this doc for help with inserting custom commands.
So, I will ask - where/how are you deploying?