Multi features, client-side app infrastructure

Hello,

I would like to ask you for advice as I’m trying to figure out the optimal app infrastructure.

General requirements:

  1. The app is a fully client-side React TypeScript app (bootstrapped using Vite).
  2. The app has a few different features/entry points, e.g., board, item menu, multi-item menu.
  3. Different features have different views; however, they share similar functionalities, so logic and code are shared.
  4. I need full CI/CD support with dev/staging/prod environments.

To my understanding, monday-code supports only server-side applications, so I have two options:

  1. Host the client-only app on some server and use URL builds for features. Each feature can be under its distinct URL path, e.g., <base-url>/board-feature, <base-url>/item-menu-feature.
  2. Implement my app as a full-stack app with a Node.js backend that only serves the client app, and then use monday-code to host the app. In that case, I can also use distinct URL paths for different features.
    In both cases, I need to add routing.

Is my understanding correct? Is there a better, more robust approach that you could suggest?

Any advice is much appreciated. Thanks.

You can do either.

For our apps that have no backend, we currently host on AWS s3 fronted by cloudfront for the production version.

You can then have a different s3 bucket for dev, staging and production.

I’d recommend 3 monday.com instances. One for each ci/cd environment. It’s a hassle to set up initially, but just means that you can separate things out nicely and every commit can be automatically deployed.

One nice thing about hosting elsewhere is that you can automatically deploy updates without Monday even being aware that anything has changed.

You could do this with monday-code, but will have to manually release a new version in the developer UI whenever your production code changes.

1 Like

@dvdsmpsn thanks, your insights are very helpful!

From both my research and your recommendations I conclude that using external hosting sounds like a good choice for my needs.

Regarding using three instances - that’s also how I imagined it. I’m glad that you confirmed it :slight_smile:

1 Like

@dvdsmpsn I have one more question if you don’t mind. We’ve decided to try out the URL hosting and I am curious how did you - if at all -approach the routing.

As I mentioned in my previous post:

  1. The app is a fully client-side React TypeScript app (bootstrapped using Vite).
  2. The app has a few different features/entry points, e.g., board, item menu, multi-item menu.
  3. Different features have different views; however, they share similar functionalities, so logic and code are shared.

Generally the idea was that

  1. There is a client-side, single page app hosted on AWS at <baseurl>.com/.
  2. The client-side routing has paths, e.g. /feature1, /feature2.
  3. So now for the first feature I can create build in monday app from the URL: <baseurl>.com/feature1 and for the second feature like-for-like <baseurl>.com/feature2, and so on.

Now, I imagined that AWS server would just “wildcard” URL path, and always return the SPA from <baseurl>.com/, and the URL path would be taken care by the client-side routing, however I am not sure yet if this will play well with monday. I am in the middle of figuring it out.

Do you maybe have any insights or suggestions on that matter? Maybe I should even ditch that idea, and proceed with a MPA with server-side routing?