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 |
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