This project is solving the Tour of the Moon challenge.


Moon Apps4u is designed for mobile browsers all the way up to desktop browsers.

There are now 6 billion mobile phones in existence, and just over a billion PCs, so in order to reach out to a wider audience, we developed a Virtual Tour of the Moon that you can access from a mobile platform. The technology used is cutting edge, in the future we can expect all mobile phones to support this technology, see details below for supported platforms.

Now you can explore the solar system on public transport!

We have uploaded a light version of the software Moon Apps4u. This version is standalone, it does not depend on a server and so does not provide the search functionality.

If you have a browser that supports WebGL (see below) you should just need to point your browser to moon.xhtml and thats it, no installation necessary.

Supported browsers (desktop and mobile):

  • firefox
  • chrome
  • opera
  • safari on the mac

If you have problems running the program check to see if your device and browser have support check WebGL first and then check x3dom

Internet explorer does not support WebGL natively but there are plugins.

Note: Some versions of browsers require the user to enable a specific option to enable WebGL support.

Sony Xperia phones were the first mobile phones to support WebGL and now android does as well.

OK I can see the moon. Now what?

  • To move forward press the mouse left button.
  • To turn move the mouse up/down left/right (its best to start with the mouse pointer close to the center of the screen)
  • To reverse press and hold the mouse right button
  • To move faster press +
  • To move slower press -
  • Click on a celestial body to identify it and discover the latitude and longitude.

If you are using the non light version if you click on the Moon the software will send a query to the server to determine what higher resolution images there are and display them as overlays on the Moon.

Design Decisions

We decided to avoid proprietary software like Google Earth and ESRI ArcGis and instead implement our own solution based on free software and open standards. The idea behind this is to be able to customize the code in the way we choose. For example it is fairly straightforward to implement a virtual world in space using this software as a base. Also it would be very easy to integrate it into different social media applications. This choice was also influenced by the desire to take 3d virtual worlds to mobile platforms which requires a lightweight framework.

REST was chosen as the architecture for the client-server communications as it facilitates caching of content and opens up the possibilities for the same webservices to be consumed by other applications.

Technical Details

The project is based on X3dom which in turn is based on WebGL. It is important to note that all of the code was written from scratch for this project.

The client side is written in xhtml and javascript using the x3dom and jquery javascript libraries.

The server side software is written in Java 7 using a REST style architecture via Jersey on a Jetty server. The queries are handled by a Postgresql database with Postgis spatial extensions.

Currently the MoonKam image metadata and the craters of the moon are in the database.

As the total size of the images is large it is not possible to display them all on the moon at once. You may encounter that the computers memory fills up and performance degrades. The best solution to this currently is to refresh the page.

Demo version

For the next 24 hours you can check out the live software demo on our development server, this does allow search functionality and image overlays of the MoonKAM images. Its not trivial to install the software and the database.

The team

Andrew Bailey Project Lead and Developer Jorge Zuluaga Consultant: Physicist and Astronomer, creator of first undergraduate course in Astronomy in Colombia

The code for the project was written from scratch in under 3 days by a team of 3....2....well 1 person.

Several people expressed interest in participating in the project but due to family commitments and such, the team reduced to 1. A big thank you to my girlfriend for her understanding and collaboration with the catering.

Problems Encountered in the development

We had problems with the data set from the NASA of the MoonKam images as it has duplicate imageIds, duplicate hyperlinks and some data of the corners are missing.

The hyperlinks provided in the file contained & and javascript could not handle inserting the attribute raw, however when we tried to urlencode the link using character entities for the unicode ampersand or & amp ; the NASA server generated an Internal Server Error. The workaround for this was to set up a redirecting proxy on our server which redirected a url with no & to the NASA site with the &.

However then we hit another problem, the image file format of the NASA MoonKam photos although in jpeg format was not compatible with x3dom and we had to implement an image rewriting proxy, which reads the image data from NASA into a java BufferedImage and then writes it out again.

The date range selection code exists but we had a problem with the jQueryslider slider

Future Ideas

  • X3d allows everything in the virtual world to have a hyperlink, make use of that for craters, MoonKam images, spaceships and points of interest.
  • Fix the date range selection
  • Implement a LRU Cache in javascript to remove the images from memory when a limit is reached
  • Implement custom navigation modes to facilitate navigation.
  • Add a radar to aid navigation
  • Create a cockpit view
  • Add Information Popups for Craters and Images
  • Create a version to host on the cloud replacing the geospatial database with a no sql database such as BigTable
  • Implement avatars so that different users can see each other and interact
  • Implement a news feed
  • Work with the x3dom team to solve problems in the x3d implementation
  • Etc, etc ......

Follow us

You can follow us on twitter at @apps4uco or check out other cool apps at


Please let us know on github if you encounter any issues and we will try to fix them or if they are due to third party software get them fixed.

Project Information

License: GNU General Public License
Source Code/Project URL:


Documentation on github -
Video of software running and commentary -
Video about the development process -