/namagic

Batch renaming reloaded for Mac OS X - Built with web technologies

Primary LanguageJavaScriptMIT LicenseMIT

Namagic

Batch renaming reloaded for Mac OS X

About the project

A few lines about the project's story...

Namagic is a Mac application developed with web technologies.

It was one of the first web-based apps to be published on the Mac App Store, in April 2015. Its first version was actively developed between February and April 2015.

When I tried to publish the app on the Mac App Store for the first time, it was rejected, because the structure of NW.js did not respect the Store's guidelines.

So, with the useful help of Alexey Stoletny, we made it work, and we wrote a Mac App Store submission guide. That was challenging - and awesome.

After a few more tries, the app got accepted. 🎉 Our work was eventually merged in NW.js core, and reused in Github's Electron. That was great!

Then, ~50 copies of Namagic were sold in the first weeks, and it was featured in a few Mac-related websites (link (in French))

After a few months, the app sunk in the Mac App Store's depths (probably because of my absence of skills in selling stuff, which is needed to maintain the app in the Trending section).

That's why today (March 2017) I have decided to give that app a second life, by open-sourcing it on Github.

Now the app is distributed under the MIT license, the source code is available for free.

However, if you want to support the project, the app can be bought on the Mac App Store.

App structure

  • The application is based on NW.js
  • The UI is written with HTML&CSS, and the logic uses JavaScript, with a basic MVC pattern
  • The build tasks use Grunt

Here is the project structure:

app.nw
├── app.html                 // NW.js entrypoint
├── assets
│   ├── config.rb            // SASS config file
│   ├── css                  // Compiled CSS (app & libs)
│   ├── fonts                // Web fonts (icons)
│   ├── js
│   │   ├── libs             // JS libraries (jQuery)
│   │   ├── libs.min.js      // Minified libraries
│   │   ├── src
│   │   │   ├── app.js       // JS entrypoint
│   │   │   ├── controllers  // Controllers
│   │   │   ├── models       // Models (file renaming logic, app state...)
│   │   │   ├── utils        // Helpers (DOM, i18n...)
│   │   │   └── views        // JS views
│   │   └── src.min.js       // Minified app
│   └── sass                 // App styles
├── locale                   // i18n (JSON-based)
├── package.json
└── templates                // App templates

Installation

💡 This is a development installation.

If you just want to get the built app, you can buy it here, on the Mac App Store.

Get the project:

$ git clone git@github.com:namagicapp/namagic.git
$ cd namagic

Install Grunt, if needed:

$ npm install grunt --global

Install the build dependencies:

$ npm install

Install the app dependencies:

$ cd app.nw
$ npm install

Download NW.js (tested on version 0.12.3). The app should available here:

/Applications/nw.js

Development scripts

The following Grunt tasks are available:

$ grunt run          # Run the app
$ grunt sass:watch   # Compile SASS files on update
$ grunt js:watch     # Compile JS files on update
$ grunt js:compile   # Compile JS files
$ grunt js:libs      # Compile JS libs, when adding or removing one
$ grunt html:compile # Compile HTML templates (no watcher for this one)
$ grunt build        # Build and sign the app (to be uploaded in iTunes Connect)

Publishing on the Mac App Store

Check the MAS submission guide for the prerequisites.

  • Build the HTML, JS & CSS assets if needed
  • Increment the build number and version in app.nw/package.json (each upload on Application Loader should have an unique build number)
  • Build the app by running grunt build (the resulting signed app and package are stored in the .mas directory)
  • Load the .mas/Namagic.pkg file in Apple's Application Loader
  • In iTunes Connect, create and submit a new app version, based on the uploaded build