Beer Near Here Desktop Part 2: Planning the App

As anyone who’s spent some time writing software knows: planning is paramount.  Mapping out all the features of an app and how they fit together just makes life so much easier.  Since Beer Near Here is a personal project I also factored in my own goals that don’t necessarily have anything to do with how the app functions into the planning stage.

Beer Near Here Desktop (BNHD) is a very simple app.  All it needs to do is take a location as input and display the results.  As such my feature list is very short:

  • Search for beer near a given location
  • Display results
  • Display app info

This list makes up the core of what BNHD does; nothing more, nothing less.  I told you it was simple.

Additionally I plan to add:

  • Printing
  • Maps
  • Directions

These three features will add some serious utility to BNHD and take the app from being a neat little experiment to a truly useful desktop tool.  These three features are also the most labor-instense and add little toward my personal goals for developing the app so they’re getting put off til a later date.

The real purpose of BNHD is give AIR a spin.  Specifically, I wanted to see how dynamic I could make an AIR application using only Flex — no Flash for animations or anything like that.  I already know I can use Flash to handle animations quite nicely and I’m interested in seeing Flex … errr … flex (sorry) it’s muscle.

So I hinted at animation being one of my “personal” features, to clarify I wanted to have a loading animation that centered around beer.  I also wanted to have a custom skin that really said, “beer”.  These two things definitely needed to come together and, if you’ve used the app you know how.

I also wanted to steal an effect from Apple’s dashboard widgets.  Most dashboard widgets have an info button that flips the widget over like a card to display settings or other information about the widget.  BNHD is really more of a widget than a full-fledged application so I think this effect fits nicely.  Also it’s just cool and a bit of a challenge.

This gives me a list of “personal” features that looks something like this:

  • Custom skin
  • Loading animation tied into the custom skin
  • Flip effect to display app info

I now have my list of features for BNHD, but there is still one more thing to consider.  One of the features for BNHD is “Search for beer near a given location” which cannot be handled entirely within the app.  The reason this cannot be handled locally is because the database BNHD searches is stored on a remote web server so as part of the search I’ll be making a request to a web server which means that, as part of the search feature, I’ll need to consider how this request will be made and handled.

The web server in question is running Drupal so the quick and easy answer is to write a module that handles remote search requests.  I took this a step further by setting up a sub domain of beernearhere.net that exclusively handles remote requests.  Doing this allows me to segregate and better track the traffic on beernearhere.net.  Having a remote client also increases the likelihood of some kind of hack or exploit since I’m relinquishing some control by creating a remote client that is installed on a user’s machine so this allows me to quickly shut off all remote requests if something bad happens.

So my revised list of features to implement for a version 1.0 release are:

  • Create a custom skin for the app
  • Search for beer near a given location by making a request to a remote server
  • Display a loading animation that integrates with the custom skin while waiting for the response to the search request
  • Display app info using a flip effect

Pretty straightforward stuff.  Next time we’ll start by setting up our project and creating the custom skin.

Read Part 3.

Leave a Reply