Advertisement

Getting Started with Mulberry

by

Mulberry from Toura is a mobile application framework built on top of PhoneGap. Within minutes, Mulberry can have you up and running with a native application built with web technologies like HTML, CSS, and JavaScript.


Prerequisites

Let's take a look at what we need to get started with Mulberry.

At the moment, Mulberry only officially supports OS X Snow Leopard and Lion. According to the documentation, it might be possible to run on Linux, but doing so is not fully supported. In addition to a compatible OS, you will also need the latest version of PhoneGap and Ruby should also be installed.

In order to complete this tutorial, you should also have some experience using git.


Step 1: Download and Install

You can get the latest version of Mulberry from Toura's github repository. You can clone the repository to the directory of your choosing using the command git clone git@github.com:Toura/mulberry.git

Next, we need to add the full path to mulberry/bin to our environment path variable, so we need to edit our .profile file. We can do this by executing the following command in the terminal.

export PATH=$PATH:/path/to/mulberry/mulberry/bin

If you do not have the Ruby gem 'bundler' installed, you will have to go ahead and install that now, like so:

sudo gem install bundler

And then from the root of the repository run the command:

bundle install

Now you are ready to build your first app with Mulberry.


Step 2: Scaffolding Your First App

To get our application structure we need to run the following command in the terminal wherever we want the app to be built. Let's say we want to make an app for cat lovers and we are going to call the app Cats.

mulberry scaffold cats

You'll get a bunch of copyright material and some basic terms and conditions spit out at you, but what will also happen is your app structure has now been done for you. Open up your project folder and take a look.

The first thing we need to do is go ahead and open up the config.yml file and make some changes if needed. The config file is really well commented, and so it is pretty easy to see what you need to add or modify. You will see your app name and the theme details. At the moment, there is no documentation on theming, but you can set some base colors here. You can then specify the platforms you are building for. For this demo, I'm just going to build for iOS, so I will delete the Android option. I am also going to just target the phone platform too, so delete the tablet option.

You can see that we can choose whether we will include jQuery in the project and then there are some API options for Facebook, Twitter, Urban Airship, and Flurry. I'm sure that we are all aware of the first two, but Urban Airship is a service for push notifications over the air. Flurry is a traffic analytics tool specifically made for mobile applications. For this demo, I'm not going to go into details of the integration of these APIs with Mulberry, so I'll just leave those fields blank.

Save your config file and open the sitemap.yml file. This is where we will set out the page structure for our app. You can see we already have two entries Home and About. We are going to add some links to our home page next:

- home
	- black-and-white
	- cats-with-macs
	- cats-with-hats
	- kittens
- about

Now we need to generate the new pages we have defined in our site map. Go back to your terminal and enter the following:

mulberry create_page black-and-white

You will get a confirmation of the page being created. The pages are created in the Markdown format. If you've never used Markdown before, don't worry, there is nothing overly complicated about it. In fact, it's one of the really nice things I like about Mulberry, as I use the markdown format on a daily basis. Once you are used to the simple syntax, it really is quicker than writing pages in HTML.

We can go ahead and use the same command to create our other pages, and once they're done, you will find them in the pages folder.


Step 3: Working with Pages

If you go ahead and open up the markdown files you will see that the file has a header represented by the --- characters:


---
title: # required!
template:
  phone: default
  tablet: default

# these should optionally point at an image in the images dir
header_image:
background_image:

# each of these properties can include an array of filenames
images:
videos:
audios:
feeds:
locations:
data:
---

Let's edit this header for what we need. For now, we don't need the header image or background, and as we are just targeting phones, we can set that template to images-and-text-phone which is a predefined template built into mulberry. We are also going to be just using images for now, so the head of your file should look just like this for now:


---
title: Black and White
template:
  phone: images-and-text-phone
images:
  - cat-bw-1.jpg
  - cat-bw-2.jpg
  - cat-bw-3.jpg
---

The images are located in an images folder within the assets folder.

Note: The amount of whitespace when you indent something is important. Be sure that your tabs are set to 2 spaces, otherwise the code will not compile correctly.

Head back to your terminal and type mulberry serve. All the content will then be ready for viewing in a browser or the iOS Simulator on your localhost (usually port 3000).


Step 4: Other Pages, Videos, and Captions

Let's go ahead and modify the header of some of the other pages.


---
title: Cats with Hats
template:
  phone: images-and-text-phone

images:
- hats-1.jpg
- hats-2.jpg
- hats-3.jpg

---

---
title: Cats with Macs
template:
  phone: images-and-text-phone

images:
- macs-1.jpg
- macs-2.jpg
- macs-3.jpg

---

Let's also take a look at what the video template will look like.


---
title: Kittens
template:
  phone: videos-and-text-phone

videos:
- kitten.mp4
  
---

Go ahead and run mulberry serve again and check the output in a browser. It should look something like this -

And the video page should look like the following -

Let's have a quick look at the captions that you can create for these carousels of images or videos.

Create three files in the images/captions folder and name them imagename.md, so for the demo I have created cat-bw-1.md, cat-bw-2.md, cat-bw-3.md. Each of the files looks something like this:


---
name: Cat 1
---

This is a Black and White Cat

Now if you serve your app again, you will see the content below the images change as you flick through the images:


Step 5: Testing Your App

Open your terminal and run mulberry test. Your code will now compile in a builds folder. Xcode will launch and you will see your app's structure, including a www folder where all your files are. You can now hit build and run in Xcode and your app will launch in the simulator as a native running application.

The Debug Bar

Mulberry now comes with built in support for Weinre which is a web inspector targeted at mobile devices (it's awesome!). The small toolbar in the bottom right of your corner allows you to use Weinre on Toura's own hosted version of Weinre. If you go ahead and click the Weinre button, you will get a code that you can enter on the site to get a remote debugger up and running. With this, you can test out Javascript or CSS to see how your DOM has been constructed by Mulberry.

To turn off the debug bar on the bottom right of the screen there are some options located in the TouraConfig.js file located in build/www/javascript/toura/app that you need to configure. You can see a full overview of the features here but the ones you want to set to false are debugToolbar and debugPage. debugPage is an in-app debugging page. You're going to want to turn these off before you build your app ready for production.


Step 6: Deploy

When you are ready to deploy, just run mulberry deploy in your terminal and all the various binaries for your devices specified in the config.yml file will be created.


More to Explore

There is so much more to explore in Mulberry apart from what I've been able to show in this very high-level overview. The purpose of this tutorial is really just to show you how quick and easy Mulberry is to use. If you are feeling brave, check out some of the demos that come with the Mulberry repository, where you will find a great kitchen sink app that pretty much gives you many of the things you might like to use.

If you'd like to know more about Mulberry, the official documentation is pretty good, although it is still a work in progress. If you would like to see a more thorough and in-depth look at Mulberry development, including creating components for things like Twitter and Facebook, let us know in the comments section!

Advertisement