One-Click Deployable for Testing Purposes

Apologies if this has been asked before.

I am new to MeteorJS and I’ve built an application over time to be used by a client by eventually putting it on their website. Over time, I’ve done iterations through milestones.

The issue is, my client is not the most ‘tech-savvy person’ out there, but he still wants to be able to test out the latest build of the app. He also would like the fasted way to set this up, preferably a ‘1-click runnable, like an .exe or something’
Our awkward workaround is currently this:

  1. I create a bundled application via meteor build
  2. I put a batch file in the bundle that does the required npm install when run
  3. I then include another batch file that contains this code:

set MONGO_URL=mongodb://localhost:27017/mydbname
set ROOT_URL=http://localhost:3000
set PORT=3000
start chrome http://localhost:3000/
node .\bundle\main.js

Which basically simulates a ‘1-click executable’ for him.
4. Send him the bundle via Drive link and have him first run the ‘initialize’ file then the run file I showed above.

It was tricky helping him to install the right Node.js files required to run the bundle, but we were able to get it.

Our current issue is that, due to the meteor build requiring so many files, I have to zip the folder up, and even then it still takes him a long time to download it (up to 35MB zipped!) and sometimes the zip doesn’t always work for various reasons.

As such, I’ve been working on a better way to get this runnable file for him. I understand web apps are difficult to make this kind of thing happen due to their nature of being, well, web apps. I’ve scoured online to find a way to do this, some people suggested electron, but getting it to work with meteor seems overly complicated for my relatively inexperienced level. I’ve tried pkg and while I’m able to convert a bundled app to an .exe semi-successfully with it, the file itself does nothing upon trying to run it.

Any suggestions? Or maybe tips on how to use something that I wasn’t able to figure out? I know it’s a long-winded post, I just figured it was better to include details and context instead of omitting too much.

Much appreciations!

Seems a good candidate for using docker. Although if 35mb was already a chore, docker images are huge

It is easier to setup a small test server on DO or AWS where you can deploy your build and ask your client to test.

The way I was solving this in the past was to deploy the application somewhere where it is free, e.g. a no-cost Heroku dyno, and then protect the whole application by HTTP basic authentication and give the client the username/password.

I would have thought that a free Galaxy deployment would have been ideal for this.

3 Likes

I agree, the free galaxy deployment sounds really good.

Another alternative is mup and a $5/month digital ocean droplet. Here’s how I teach my class to use this approach:

http://courses.ics.hawaii.edu/ics314s21/modules/deployment/

Thank you all for the informative answers! Looks like hosting is going to be my best option.
I decided that since it’s for a (wordpress) website’s users to be able to access eventually, it’d probably be best to host it on that site, and keep it private until we’re ready to full release it.

In that regard, can that kind of deployment be done with basic (‘vanilla’) meteor? Or will that require a separate package/extension?

Thanks again!

You could perhaps keep it private by setting up a password for access?

Though this seems like an instance where (assuming it’s just test data in there), a long link (e.g. Google Doc share links) without search engine indexing should be private enough?