Electron. Holy crap. ELECTRON

Earlier thread on Meteor for Desktop

A couple of years ago as a CS student learning all sorts of ā€œproperā€ programming languages, C#, Java, C++ etc, I would have laughed at this proposal much due to the weak typing in JS and a few other things, which still bugs me sometimes. However, after fiddling with Meteor(And python for my masterā€™s), nothing would please me more!

1 Like

Iā€™m working with a team of folks on a free + open source tool designed to support collecting and managing digital media. It lets you easily stitch together bits of media you collect from across the web into creative works on an infinite canvas. Weā€™re using Meteor as a proof of concept for a lot of the UX assumptions we want to test. With it, weā€™ve been able to iterate pretty quickly but ultimately we felt a native desktop client is a better fit for our use case. We recently took inspiration from the Kitematic app and decided to try and use Electron to wrap what weā€™ve built for web as a desktop application that would be distributable as a dmg. We adapted the Kitematic scripts to our project that:

  1. Install Electron dependencies
  2. Runs the meteor web app as a desktop app using Electron
  3. Packages the meteor app as an installable desktop application

You can see our scripts here: https://github.com/parallelsio/core-modules/tree/master/desktop-app. The scripts are definitely a work in progress. Cross compatibility would be awesome but unfortunately we havenā€™t tested on much other than Mac. Hope it helps someone interested in getting started with Meteor and Electron.

1 Like

If anyone is interested, weā€™ve created a nice desktop client app using electron for our https://rocket.chat project.
All the source code is available at https://github.com/RocketChat/Rocket.Chat.Electron

3 Likes

@corvid, any news on this? Sounds super exciting.

Itā€™s been a bit of a challenge, I have the CLI command added but a big part of the work is that it has to be tested on multiple platforms. Windows can be a pain sometimes, hopefully lots of people move to windows 10 which is an okay operating system

Iā€™m using it to make a simple game platform. The game is an RTS/MMORPG mix, and Iā€™m just curious to see if JavaScript and meteor can handle it. Ideally, I would also like to add an installer if thatā€™s even possible to do

1 Like

Makes sense.
If you get to the point where youā€™d like to open it up for people to help, Iā€™d be interested!

I have already been testing my current meteor project in desktop mode using arboleya:Ā­electrify package and it has been pretty good on windows and ubuntu.

Absolutely, no learning curve.

https://atmospherejs.com/arboleya/electrify

7 Likes

Nice!! Iā€™m going test this now!!!

If you guys want a kinda easy solution, someone here made a package to build the client of a meteor application.

In order to use it, just make a DDP.connect to a remote server. Then you just build the client. In the directory where you built it, add a main.js and a package.json and, youā€™re done!

The one caveat is you have to make sure ios and android arenā€™t in the platforms before building, or provide a --mobile-server

Hereā€™s a quick example

1 Like

Haha,

that would be me :smile:

I also use electron and its the best hybrid desktop app out there.
Using my meteor-build-client, its extremly simply to use meteor without any complicated modification in an electron app.

I also wrote a gulp script for our desktop app, which uses electron-packager alongside my meteor-build-client, take a look here: https://github.com/ethereum/mist/blob/wallet/gulpfile.js

Additionally i found a way to add minimongo to the node.js backend of electron and sync it with my frontend minimongo using electrons IPC messages: https://github.com/ethereum/mist/tree/wallet/modules (look at the syncMinimongo.js and minimongoDb.js file)

I use persistent-minimongo to store any collection in local storage, though iā€™m thinking about a way to store it in the browsers indexedDB instead. This way you can use a reactive minimongo, sync it to the backend and also have it persisted, so you donā€™t even need a meteor web server at all.

I hope that helps anybody to digg deeperā€¦

But in short its basically:

  • create example electron app
  • put your app in an interface (or whatever) folder
  • make sure your myWindow.loadUrl() in your main.js points to http://localhost:3000
  • run meteor form that folder and electron from the top folder

If you want to deploy, simple bundle the app using:

$ cd interface && meteor-build-client ../interface-build --path ""

And change the myWindow.loadUrl(dirname + '/interface-build/index.html')

Thats it!

EDIT: @corvid nice! i just saw your meteor-electron-client, which basically does exactly the same :smile:

7 Likes

Hello guys, I have some doubts about Meteor on desktop, could you guys help me?
Im using Electrify packageā€¦ but im wondering how can I take advantage of this situation to write Meteor apps that have access to native API such as writing/reading to serial ports or writing/reading files on the clientā€¦ How can I do this?

WOW! Who can spot the Meteor app?

Tip: is Rocket.Chat :smile:

All source available at:

Just saw on the Github for @sircharleswatsonā€™s project that he wonā€™t be working on Electrometeor anymore :frowning:

Anyone taking up the reigns on the meteor add-platform desktop dream?

In case you missed it, thereā€™s a single-package installer that will wrap your app in Electron.

1 Like

Nice to see some more Electron builders for meteor, electrify was good but the developer seems to have stopped updating the package. It still works but is less out the box and requires some work arounds these days.

@frozeman, did you ever succeed in making a server-less offline desktop app? Using just client-side code and node.js for storing mongo on the backend without the meteor web server?

I never had a need for a backend, but it should work. I build DApps, which use the blockchain as a backend. -> http://dapps.ethercasts.com