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?

4 Responses to “Forming the idea for an app”

  1. Nick

    If you need a background story to this, it would be fantastic to be able to do financial assessments offline and reconnect later. Currently, we do this with a cut-down version of ContrOCC and a SQL express database that is a pain to install and upgrade.
    If you can make some forms and calculations that are similar to our online financial assessments system – “https://occmockups.protoshare.com” – and then make this work offline, we’d be 90% of the way there.

    Reply
    • Luke Canvin

      I think we’re going to go down a tech-demo route rather than spend time fitting a story around the app. But the technologies we use will absolutely be applicable in other situations such as doing a financial assessment.

      Reply
  2. John Boyle

    Yes, I was going to say the same as Nick … until I saw his comment. I agree that it’s not appropriate for the Dev Camp to focus on the application but it’s helpful to have some ideas of how it could be applied.

    Reply
  3. Peter

    Unfortunately I don’t think this would help ContrOCC customers since they are usually stuck on IE6 so no HTML5 goodness for offline storage.

    Reply

Leave a Reply