Forming the idea for an app

Luke Canvin
Showing post-it notes spread across a wall
Photo taken by Juhan Sonin

Based on our requirements, we batted a few ideas back and forth before settling on a web application that will allow a user to fill in forms/questionnaires/assessments that will continue to work when the user is offline. The form would be made up of data recording objects ranging from simple sliders and data entry fields to complex canvas-based controls, sketchpads and multi-user interactions.

This idea gives us a simple way of scaling the scope of what we create to the time we find we have available – i.e. there is a basic idea of getting a web app with some interesting form controls and making it work online and offline as well as on mobile devices. But if we have the time available it scales quite nicely to allow us to plug in a reporting environment, more complex form controls, multi-user interactions, etc. Each addition makes for a nice feature beyond the basic functional app.

So let me expand on that a little; this is what I see as being the core app and then layering on the main set of challenges:

  • Straightforward (non-mobile) web app taking a user through a series of web forms and storing the results. This is our starting point, no challenge here, nothing new.
  • Choose something interesting for the database and server side – ravendb and MVC perhaps. I’m not sure we’ll find too much to report back on here, but it’ll be new and interesting for us.
  • Use a rapid UI development framework for the CSS. We almost always do this for JavaScript components (jQuery UI, etc.), but not for the CSS.
  • Create mobile versions of the app, presenting it for various non-desktop devices.
  • Make the app functional offline and have it send/sync its data when it next gets a connection.

That would give us a nice result, a web app with interfaces for multiple devices, that works online and off. If we can achieve that in good time then we can go on to try approaching one or more of the following challenges:

  • Create more complex form components, working both for touch and mouse. Drag and drop is important and canvas could be used to great effect for unusual controls such as Google+’s “circles”. This would have work with everything we had done before, e.g. offline.
  • Push the limits of offline storage – how far can you take it before you find something that’s not possible to store offline?
  • Reporting
    • The first step would be to find a really impressive JavaScript library to present the data
    • The next step might be to find out if you can use it offline to report on offline data
  • SignalR could be incorporated into certain form controls to allow multiple users to interact with a canvas in real-time

What this idea lacks is a background story – what forms would this app be asking us to fill in and why?