From idea to app in less than three weeks
Three weeks ago I had an idea: free, weekly, themed mobile photo competitions. Now I have an app! Here’s how I did it.
Design
Graphic design is one of my weaker skills, so I’ve learned to just keep things as simple as possible. I use default controls when available and apply subtle shadows, gradients, and textures to make simple interface elements beautiful. I began my quest for a unique title font at The League of Moveable Type and chose Raleway. After applying a gentle shadow, I set the title image of my app and now I have branding! Using the free icon set from Glyphish, I then experimented with button placement and design until I was satisfied with the look and usability of the front page. Here’s the full evolution taking place over a few days. You can see I started out with small buttons but switched to much larger versions after realizing the tap zones could be greatly expanded.

Hey, it won’t win any design awards, but at least it’s classy and usable.
Code
The app wouldn’t be very useful without any data, so I had to write code to handle it. Lots of code. In lots of places. This is where it helps to have experience.
Behind the scenes, I use PHP running on Lighttpd, along with a MySQL backend, all on a single Amazon EC2 instance. Photo uploads go straight to S3, so I don’t have to worry about any filesystem wrangling or quota limits.
Each time the app launches, it communicates with an API on my web server to retrieve the current theme and status. To allow voting, the app also needs a list of photos and past themes. Here’s a sample of how the API data is structured:
The app then takes this JSON data and turns it into a nice pretty display:

Similar communication occurs between the app and web server for every action: uploads, votes, profile edits, etc. Everything a user does must be synchronized online, so the app must constantly manage communications like this behind the scenes.
Conclusion
Hopefully this gives you a better idea of what goes into making internet-connected applications. This particular app took about 80 hours to create over 3 weeks, and required knowledge from a lot of different areas. Even simple ideas can cover the full range from frontend design to backend databases.
I submitted the app for review yesterday, and now it just needs users!





