Friday, November 30, 2012

Application Craft - Easy Peasy Task List Project


Building an Easy Peasy TaskList with ApplicationCraft

Background

I've been working with ApplicationCraft.com for some time now though for the last few months I've not had that luxury.  I've always been impressed how great the product is and the stability and robustness is awesome.  Here's a link to a previous blog where I spelled out what makes AC exciting to me: A Word About ApplicationCraft.

In order to get my AC skill sets up to speed I thought I'd build a Task List application using ApplicationCraft.  Since everything is so easy with AC, I thought I'd call this the Easy Peasy Task List. 

I will write blogs about each of the learning activities I undertake.  I don't know about you, but my blogs provide valuable information for myself (thus the name "Notes to Myself") for future reference.  I frequently look back at my blogs to see how I did a certain thing as I can't remember everything.  Hopefully not only does it benefit me but you also.  If so, drop me a comment and let me know.

Features

I want to build this Easy Peasy Task List with the following features ( in no particular order)
  • Task list management.  The user should be able to 
    • Create and maintain various task lists
    • Use calendar widget for date selection
    • Calendar summary view 
    • Add due dates and notifications (by date or location).  
    • History of all tasks
    • Completed tasks are archived and available for resurrection.
  • Run from everything with single code base AC provides a great way to build both the web application and mobile/smartphone application with a single code base.  They've introduced a new AC Mobile Build that I want to utilize.  I only care about iOS and Android and web app.  I need to refresh my skills in the adaptive layout  
  • App available in store.  I want to have the app available for both iOS and Android and accepted in the appropriate app store.  This means I need to learn about the certificates and such.
  • Use oAuth for authentication.  I don't want to manage user ids and lost passwords and such.  I just care that someone identifies themselves via some Social Network and they use that same authentication each time they use EasyPeasy TaskList.  At this time Facebook, Twitter and DropBox are supported.  I would like to see support for JanRain Engage Social Login where by I would be able to open up the oAuth to a lot more then just three Social Networks.  I submitted this request to the dev portal.
  • Database support - AC has come out with a better persistence story.  I want to use the new SQL features to track who logged in, their tasks, etc.
  • Off line support.  The app should be functional even w/ no internet connectivity.  AC supports SQLite database.  Once the app is on line, the SQLite database should sync up with the back end MySql db.
  • Share list.  Allow user to email someone a request to collaborate.  Permissions supported should be read/write or read only.
  • Reminders and Notifications - When tasks are entered, the EPTL user can keep track by stating due dates or locations and setting notifications
  • Testing - I really want to have unit tests and integration tests.  The integration tests should include the web app and mobile.
  • Advertising - After all this work, I need to consider how to make a buck or two.  AC has a Advertising widget available which I know nothing about.
  • Logging support - AC has built in logging but I find it rather difficult and insufficient for my use.  (See AC: Server Side Javascript and Logging.  I want logging from the client to be available online for monitoring.  If a user says they are having problems, I should be able to turn on a debug flag and watch the activity.
  • Release management - Need to address how users app is updated.  What happens if there is a database migration required for the new release? How are users kept off line while the updates are performed.

List of steps I've written about so far:

ApplicationCraft - Easy oAuth

ApplicationCraft - Easy CRUD

ApplicationCraft - Easy Testing

Status of discovery / learning exercises

The table below has the various learning exercises I need to build EasyPeasy TaskList.  Links to the various blogs I write with my analysis are available from the Task / Blog column.


Task /
Blog
Description Status Date
oAuth Web app and native app should both use oAuth In Progress
AC states here that the AC Mobile Build requires a ChildPlugin to support oAuth in mobile.
Nov 28, 2012
Database
CRUD
AC provides their own hosted MySql database.  The AC framework has new SSJS db features to perform CRUD. Learn how to use SSJS db. Simple solution needs to be refactored to be more OO Dec 1, 2012
Testing Need unit tests and integration tests. Basic requirements met  Dec 7, 2012
Notification  When user wants to be notified of a due date the server can push the notification.  AC offers a plugin using Xtify Push. Xtify works with native mobile apps.  I want to notify browser apps to so will use Pusher for that. Have a working solution for the basics. Dec 12, 2012
Use oAuth with JanRain JanRain Engage would open up the oAuth capabilities to 20+ Social Networks Submitted request to AC support.  Not sure how it's being tracked at this time.   Nov 26, 2012
Learn requirements
for app store
What is required by AC Mobile Build to qualify app to store not started
Preparation for app store Utilizing the AC Mobile Build to create an iOS and Android app that is ready for an app store will have certain requirements. not started
Offline / sync support How does the native app work with no connectivity? How does syncing work once it comes back on line? not started
Collaborate 1). Need ability to email invitation to collaborate.
2) What is impact to DB schema
3) How to resolve conflicts of concurrent task modification
not started
Location Notification Useing GPS, determine if any notifications are dependant upon location proximity not started
Calendar Need to learn how to select due dates from calendar widget and how to display summary calendar views (day, week, month, year) not started
Advertising How can I make some money? not started
Logging support Need ability to turn on/off client logging
Need ability to monitor logging
not started
Release management Ability to block access while maintenance is performed
Ability to require update of new release
Entered Release management of web / native app  Nov 28
2012
Stuff

1 comment:

  1. Keep up the good work Barton! Your posts are great! As a fellow Application craft user i am really interested in seeing your progress (i am a newbie and i would like to see how you tackle some of the problems)

    ReplyDelete