This is a prototype ("proof of concept") for a much larger project. It's a web version of desktop software already used by thousands of hospitals in more than 12 countries around the world.
The goal here is two-fold:
1. Demonstrate that a web page can run offline (using html5 's caching capability) on all the latest gadgets (iPad, Android Tablet, etc.). Since we're starting from scratch you'll get to use the latest technology.
2. It's a "try-out" to help us choose a developer for the rest of the project (estimated to be about 300-400 hours)
I'm looking for skilled developer with expert knowledge and at least 250 hours (i.e., 6 months daily use) with:
* **jquery **
* **CSS** (2 and 3)
* Creating an HTML5 app using the above technology.
* and at least some experience with jQuery Mobile.
* Excellent spoken and written English. And if you need (and want) to improve your English let me know. I can help with that as well. There's one simple trick that can dramatically improve how understandable your spoken english is. (One of our current programs helps with that and you're welcome to a copy of it if you are the successful bidder.)
* We need you to be available for skype calls at least 2 hours during any of the hours from 8am to 10pm (USA, New York time, UTC/GMT -4 hours ). In your response/bid, please let us know what **hours** (in our timezone) during that period that you can be available.
I have 17 years of professional software engineering experience. I expect (and pay well) for superior, maintainable source code. I also understand the importance of running a project professionally (bug tracking, testing, etc.) and respect and appreciate the value of a good software developer.
1. What we are making
This is educational software. This will be a professionally run project, with time allowed for writing readable, maintainable code and proper testing and bug tracking. We'll use a bug tracking database (FogBugz).
2. Our philosophy and expectations
1. Please read all instructions and emails carefully. I'll do the same. It's easy to miss something and with an outsourced project like this communication is essential.
2. Make sure you **understand** all communications. If anything is unclear to you please ask. It's better to ask than to guess. A great way to do that is to write back "I'm not sure I understood that. This is what I think you meant: ...... Is that Correct?"
3. Make sure work you submit to us **is *finished***. Review the original instructions (and any updates) to make sure you've not missed anything.
4. Make sure that you **thoroughly test** things before you send them to me. If you don't, it'll cost us a day of calendar time and a lot of my time and yours spent testing something that isnt' finished and you having to go back and fix it. It's much faster for you to test at your end and fix it immediately. The worst case scenario is that you spend an extra 10% of your time testing and find no bugs because your code was so great (that's rare <g>).
5. **Break the software before the customers can. ** Look for ways you could (as an end-user) break the software. Better for you to find the problem than for me or a customer to find it. (Example: If the user clicks the button 20 times, will that break it.) If you find a problem and it looks hard to fix then you can always report the issue and let me decide if it needs to be fixed now (or ever).
6. Let us know at the start of each week or each day (whichever is easier) how much time you'll have available for us. This lets us sync our work with yours and make it more likely we'll have enough work for you when you have time.
3. Platforms (web browsers)we need to support
1. Windows - with latest Fire Fox and IE 9 (supporting the Chrome pluggin that lets IE use the Chrome engine is find) and Safari (latest version, just as a way to to test Safari if you don't have a Macintosh.
2. iOS (iPad) - with current Safari browser
3. Macintosh with latest Safari browser.
4. Android tablet (Color Nook size and larger screen) with it's default browser (which I think is webkit)
4. Long term goals
1. Support for recording audio on the above devices. I anticipate we'll need to use something like PhoneGap to package up the web app as a native app (probably a "wrapper" around a web browser, but that wrapper would have access to the hardware. That's how PhoneGap works.
2. Our next generation of speech therapy software will be web based. But we may also like it to run offline without an internet connection. We want it to run on any modern web browser on an Android Tablet, PC, etc.. Eventually we will need to record audio (from a mic). Let me know if you think this is possible while still meeting constraint 3e above.
## Initial Tasks
2. Build a prototype (see functionality needs below). This will be delivered to us in 3 sucessive versions (.01, .02, .03)
## Task 2: Functionality the Prototype must have
1. Normally I'd do a UI mockup drawing but this is more about the funtionality so doesn't really need a mockup. It'll have an image, some buttons (next/forward) and some additional labels thrown in just for exercising the resizing feature (below). When the user clicks the NEXT button it shows the next picture and plays the next sound automatically. It would be ideal if the program loaded all the audio for all the "exercises" when you load the page.
2. Play audio offline
1. Platforms (and what version each will support this functionality on)
1. v 0.01 Windows (IE and FF)
2. v . 02 Safari on Windows
3. [url removed, login to view] iPad
4. [url removed, login to view] will add larger image and file sizes (so that the total is 11 MB) to test storing large amounts of data offline. Otherwise it will work the same (and should work on all three previous platforms.
5. I don't have access to a Macintosh computer so I won't initially be testing on that.
2. Display an "exercise" with a picture and play a sound. Then have a Next button that, when clicked, cause the next "exercise" to be displayed with a new picture and new sound to be played. Three exercises should be enough.
1. Record some audio and find some pictures with google image search. If you pick pictures of numbers "1,2,3" it'll be easier to see if it's working right. Likewise, I recommend recording the audio #1 as "one", 2 as "two", etc.
2. See this screencast for an idea of what we you are making a prototype for: <[url removed, login to view]> (this is one of our current programs, Aphasia Tutor 1). The final product will be fairly similar.
3. I suspect you will need to make use of HTML5 Caching to get it to cache audio offline for later play back.
3. Test conditions: we'll browse to the page and go through each exercise if needed. Then disconnect internet access and go through each one again. We should be able to hear the audio and see the pictures.
3. **Resize all visible elements on a browser page** to match the size of the browser. The elements (buttons, etc.) should be resized only after the browser has stopped resizing. (I.e., if you grab the corner of the browser window and drag it, the elements should not resize until you let go of the browser window's corner.
1. Resize text size on the elements to match the next size of the element. (I.e., if button is ? a large, make the text ? as large). Resize the text by whichever aspect (height or width) is reduced the most. I.e., if the button is ? as tall but ? as wide the the text should be ? as large.
2. Try to do this with one basic function that iterates through all the elements so that we can reuse this code on another page. The function should also work without modification if we add additional page elements (text box, button, etc.)
3. Elements to include (at a minimum)
1. Several buttons wit text.
2. Image with a picture
3. Text box with some text in it.
4. Platforms to support with each version you release to me:
1. v .01 Windows (IE and FF)
2. v .02 Safari on Windows
3. v .03 iPad (safari browser)