What is Electrometeor?
Typically when you have an idea for a project, there is some sort of barrier blocking the path which would bring the idea into reality. I’ve had an idea for a desktop application built in Meteor for a few months. Unfortunately, I could not find a simple way to build this project. So what did I do? I gave up of course! Although not completely. I continued to mull over the idea for a few months, until recently. I had a lot of time on my hands, and decided to give it a go!
First, I needed to get over an initial hurdle. I wanted to build a desktop application with Meteor. I knew about Electron (formerly known as Atom-Shell) for creating desktop applications, but there weren’t many resources on integrating Meteor inside of Electron.
Electrometeor combines Electron and Meteor to allow you to easily create desktop applications that work both 100% offline & online.
This combined set of resources creates an application that works offline and uses NodeJS to allow access to system modules. For example, one of the first things I tested was the node-applescript module, which allowed me to create an iTunes controller that played/paused the song every 5 seconds.
Because Meteor is included, you can easily use DDP to connect to a web server if you want to sync data online.
Challenges
During the development of Electrometeor, I encountered several challenges that forced me to grow as a developer. I had to learn about bash scripting by digging into the Kitematic code and studying it one line at a time. Prior to this project, I thought bash scripts were scary, but now I know how incredibly useful they can be. For some reason it never clicked in my mind that a bash script is basically just a list of terminal commands. In the 5 or 6 months I’ve been using Meteor, I had never used the build tool, but because of the way Electron works I had to use it to create a bundled Meteor app before it could be run. Electron uses Node.js to start a child process that runs the Meteor build. This was uncharted territory for me, and I had to read a lot about the functionality of child_process.
The Future
Currently, Electrometeor is very simple. There are a lot of modules that Electron includes that would be helpful in the boilerplate. Prior to building this, I had no experience with Electron/Atom-Shell, so this is a learning experience for me. I want to continue to improve Electrometeor and make it the best desktop application boilerplate for Meteor developers. As I work on my project idea, I will be adding things that I think work well in a boilerplate. One thing I can think of right now is the menu functionality.
To get started making desktop applications with Meteor, go to the follow link: https://github.com/sircharleswatson/Electrometeor
The good people at Kitematic are much to thank for Electrometeor. They had previously built a desktop app with Atom-Shell and Meteor, so a lot of what I’ve done comes directly from their development of the Kitematic app. If it wasn’t for them, I probably wouldn’t have built Electrometeor.
Also, I want to give a shoutout to @johnstonbl01 for taking the time to edit this post, and thank you to everyone who took the time to read it!
If you have any questions, comments, or concerns, feel free to hit me up on Twitter: @SirCharlesW727