The best development environment for monday apps... your opinion and setup

I am wondering how you develop and test monday apps (specially integration features). To start the discussion I will share my setup and curious to know about your best practices.

I use a windows client but wanted to develop on an Ubuntu system. Therefore I am using a Plesk server with Ubuntu (from 15 US/month @ different hosting providers) which also hosts my Wordpress sites. Plesk (Phusion Passenger & nginx will take care of running multiple domains on a single IP and do the caching) and evrything is safeguareded with firewall and mod security.

On this Plesk server I configured 2 subdomains mondaydev and mondayapps together with 2 backend databases I need to support my apps (eg to keep tokens).

On my Windows machine I use VSCode with a remote (ssh) connection to my mondaydev subdomain. So anything I change in VSCode (on the Windows PC) is really changed directly on the dev server. My VSCode is connected to Github, so if I am happy with a “release” I commit changes and push it to Github.

Plesk has a very nice feature called Node.js, where you have options to build and run your Node app (you don’t need to do npm build / run etc). Because it is running on a hosted server with a public IP, I don’t need to bother about ever changing IP addresses and ngrok tunnels.

In monday.com I have apps (starting with DEV) that uses authorization and run URL from the mondaydev subdomain which is serving the endpoints.

On the production subdomain my Plesk subdomain is connected to the same Github account, and Plesk can simply pull (in that subdomain) the latest version from Github and all I need to do is build and run.

I have a clean package.json file with no npm command in it as Plesk is taking care of this. The Node.js extension of Plesk also enable you to set environment variable without the need of a .env file, so you don’t have to bother about securing the .env file holding your client secret etc.

There is only one little thing I would like to see in monday and that is to copy a feature (frontend of an integration) from one monday app to another. Currently my production app is public and my development app is private. Therefore I need to “rebuild” or “reconfigure” the frontend side of the app in the production version.

This setup works very good for me and I hope some of you benefit from this idea. Also like to know how you are handling testing vs. production.

3 Likes

That is really amazing ! Thanks for sharing!

1 Like

Hey there @basdebruin - thanks for starting an important conversation here and I do hope other team members will join in and share their experience as well :slight_smile: Sometimes, it takes one person to start a journey that many others will be able to follow and I appreciate the opportunity this post creates.

@TMNXT-Dev thank you as well for acknowledging the effort here! :slight_smile: That said, what’s your setup like? Is there anything you’d like to share that you find works well for you?

-Alex

1 Like

Hi @basdebruin I have a question on this one. I’m currently using the template from the quickstart-integrations which includes setting up a development environment with ngrok from @dipro 's webinar. However, each time I’m saving the code after changes, the web server seems to crash with the following message:

[nodemon] app crashed - waiting for file changes before starting…
[nodemon] restarting due to changes…
nodemon] starting node ./src/app.js
events.js:288
throw er; // Unhandled ‘error’ event
^

I need to relaunch my server thus generating a new ngrok URL and I have to update my integration recipes, which is quite annoying.

Did you also run into this issue?

Regards,

Freek

Hi @freek-gcompany Not exactly the same issue, but (in general) the webserver (Apache) has to restart when you make changes to your code. When you run an ngrok tunnel to your local PC this will result in a new URL and thus the need to reconfigure your app on the client side.

I am using a setup with an server hosted on the Internet with Plesk/NodeJS/Apache/nginx. When I make changes to the code it also restarts but you will not notice that because the URL is a public URL hosted on the internet.

Does that make sense?

Hi @basdebruin not entirely, but that’s my probably on my end :slight_smile:

I’m using a server with node.js (based on the quickstart-integrations) where I’m used that whatever code change I make locally is immediately reflected by the site that’s hosted by that code (similar to what you’re describing with the SSL connection but locally on my machine).
Now, with ngrok (maybe that’s the cause), whenever I make a code change I get the aforementioned error, causing me to relaunch the server which changes the ngrok URL and thus I need to update my recipe.

The setup I run for production, hosting the endpoint on Google Cloud Platform causes me to push my code to a github repository and then redeploying the cloud function to reflect the most recent source code. The endpoint always stays the same but the redeploy takes a couple of minutes thus drastically decreasing my development speed.

I suppose what I’m looking for is the best way to run a nodejs server which immediately reflects my latest code changes while keeping the same endpoint across different versions.
Any suggestions on such a setup are more than welcome!

Hi @freek-gcompany

Good chance that I misunderstood you :slight_smile:. The setup I described (hosted Plesk/nodejs) is for me perfect for development. Whenever I make a change in my code (remember I develop on my local Windows machine with VScode/ssh connection to my server) I hit the Restart node button in Plesk and the new code is active in a matter of 2 seconds without the need for any reconfig due to ngrok. I simply do not use ngrok at all.