public
Description: An agile software task management tool & SproutCore sample application
Homepage:
Clone URL: git://github.com/suvajitgupta/Tasks.git
Tasks /
name age message
file .gitattributes Mon Jun 29 22:33:53 -0700 2009 Added .gitattributes per Erich Ocean's comments... [joshholt]
file .gitignore Wed Dec 09 19:09:15 -0800 2009 styled QuickFilter buttons on being clicked [Suvajit Gupta]
file .gitmodules Tue Dec 08 22:12:10 -0800 2009 Added setup tools for tasks Added submodules fo... [joshholt]
file Buildfile Mon Nov 23 18:22:06 -0800 2009 started using SCUI, referenced ToolTip [Suvajit Gupta]
file README Tue Dec 08 22:20:40 -0800 2009 Add GAE Deployment Fast Path Instructions [joshholt]
directory apps/ Fri Dec 11 10:00:37 -0800 2009 added feature in Tasks Plan [Suvajit Gupta]
directory frameworks/ Tue Dec 08 06:22:50 -0800 2009 added whitespace [Suvajit Gupta]
file gitconfig.sample Fri Jun 26 12:55:02 -0700 2009 added sample git config [Suvajit Gupta]
file license.js Tue Aug 11 11:13:36 -0700 2009 switched to MIT License - for real :-) [Suvajit Gupta]
directory persevere/ Fri Aug 07 07:35:19 -0700 2009 Switched to remote data source (Persevere serve... [Sean Eidemiller]
file proxy-patch.rb Sat Oct 10 15:52:55 -0700 2009 Fixed bugs related to new save mechanism. Also... [seidemiller]
file server-start.sh Wed Nov 11 13:06:04 -0800 2009 Minor change to Persevere startup script. [seidemiller]
file server-stop.sh Tue Sep 08 12:00:35 -0700 2009 Added support for test vs. production Persevere... [Sean Eidemiller]
file sinatra-server.rb Wed Nov 18 17:06:45 -0800 2009 Server side authentication and authorization. -... [joshholt]
directory tasks-server/ Fri Nov 20 12:54:13 -0800 2009 Cleaned up user model added user authen method ... [joshholt]
file tasks.py Wed Dec 09 11:08:05 -0800 2009 Fixed fast path update Signed-off-by: Joshua H... [joshholt]
directory tools/ Wed Dec 09 09:42:25 -0800 2009 updated fast path tools to add the submodules f... [joshholt]
file user-add.sh Wed Dec 02 19:22:17 -0800 2009 completed Task ID routing [Suvajit Gupta]
README
GETTING TASKS & SPROUTCORE CODE
==============================================================================

Change to the directory where you would like to work on Tasks and type...

git clone git://github.com/sproutit/sproutcore-abbot.git abbot
git clone git://github.com/suvajitgupta/Tasks.git tasks
cd tasks/frameworks
git clone git://github.com/etgryphon/sproutcore-ui.git scui
git clone git://github.com/sproutit/sproutcore.git sproutcore
cd ..

If you don't have the latest Ruby gems, type...

sudo gem install thor


RUNNING PERSEVERE
==============================================================================

To start the Persevere server...

./server-start.sh

To stop the Persevere server...

./server-stop.sh


INITIAL PERSEVERE SETUP
==============================================================================

1) Start the Persevere server (see above).

2) Run a script to create the first user, after which you can log into Tasks
   and use the User Manager GUI:

./user-add.sh 'System Admin' 'SA' 'Manager' localhost:8088
(enter/reenter password and remember it!)

./user-add.sh 'Guest User' 'guest' 'Guest' localhost:8088
(press Enter twice to create a blank password)


RUNNING TASKS
==============================================================================

1) Start the SproutCore server...

../abbot/bin/sc-server --port 4400

2) Navigate to the following URL...

http://localhost:4400/tasks

3) Enter 'SA' in the dialog box and the password you set earlier and press Enter.
   The Tasks GUI should come up.

4) Add a project, add tasks to it, hit Save periodically, have fun!
   Alternatively, to get some sample data to play with, you can click
   on the Import button and paste in the contents of the file:

apps/tasks/tests/data/import_data.txt


GOOGLE APP ENGINE (GAE) DEPLOYMENT
==============================================================================
If you want to deploy Tasks on the cloud, you can get a GAE account and deploy it:

1) If you don't have a GAE account, sign up here:
http://code.google.com/appengine/

2) Download the GAE SDK if you don't have it (link for Mac below):
http://googleappengine.googlecode.com/files/GoogleAppEngineLauncher-1.2.8.dmg

3) Install sproutcore as a gem if you haven't done that already:
sudo gem install sproutcore

4) Build Tasks for deployment & get a cup of coffee...
sc-build -rc --build=<build id>

5) While enjoying your Java, get the Tasks-GAE server code:
cd ../
git clone git://github.com/joshholt/SproutCoreTasks-AppEngineBackend.git tasks-gae
cd tasks

6) After sc-build finishes, copy tasks production build to tasks-gae:
cp -r tmp/build/static ../tasks-gae

7) Inform GAE about production build:
<your-favorite-editor> app.yaml and fill in your <build id> and your
  GAE <application identifier> (first line)

8) On a Mac, run GoogleAppEngineLauncher (downloaded with GAE SDK earlier):
From 'File' menu, choose 'Add Existing Application...'
Browse to tasks-gae and press 'Choose', then press 'Add' button
Press 'Run' button at top left to test production build locally by pressing the 'Browse' button
Signup as a new user from login screen and ensure Tasks comes up and works

9) Now deploy to the cloud by pressing 'Deploy'
Sign up on Tasks running on GAE deployment at http://<application identifier>.appspot.com
Make newly created user a Manager using GAE 'Dashboard' button at top right:
  Click on 'Data Viewer' under Datastore section on left
  Select 'User' table from select field view
  Click id of user and change 'role' to '_Manager'
Login to Tasks now and start adding projects/tasks/users...

GOOGLE APP ENGINE (GAE) DEPLOYMENT (Fast Path)
==============================================================================

1.) Run the following command from inside Tasks' root directory
  > python tasks.py setup <app identifier> <build indetifier>
  
  -- where <app identifier> is your GAE application identifier (i.e. tasks-demo)
  -- and <build identifier> is you build name or number (i.e. beta1)
  
2.) Then follow steps 8 & 9 above in the GOOGLE APP ENGINE DEPLOYMENT


TASKS OVERVIEW
==============================================================================

Welcome to "Tasks!" - it was created for a few reasons:

1. To become a comprehensive sample application that goes beyond  "hello world"
   examples (like "clock") and snippets showing off facets of SproutCore
   (like "drag").  SproutCore is very elegant and powerful framework and my
   goal is to use Tasks to ramp up as well as showcase its capabilities.

2. To illustrate how to engineer a non-trivial application using things like
   a task plan (scope/assignments), wireframes/mockups (vision/GUI design),
   statecharts/MVC structure (technical design), and integration with a remote
   server via REST/JSON.

3. We all build software and "Tasks" can become your agile software management
   tool - you won't need the cumbersome task tracking & bean counting tools
   overhead staff like to justify their existence with :-)

4. SproutCore itself will go through an explosive launch and maturation in
   2009.  During this metamorphosis, Tasks can become the feature/bug tracking
   tool for SproutCore - what better that an application built with SproutCore
   itself!

Tasks is "in progress" - we plan to tinker with it in the coming months and
mature it into the tool we use to manage the development of a very complex
commercial SproutCore application.  I hope you will find Tasks useful as
you start your journey with SproutCore.  Please feel free to send me your
feedback or code contributions!

-Suvajit Gupta (suvajit.gupta@eloqua.com)


TASKS ARTIFACTS
==============================================================================

To start getting oriented with Tasks, scan the following artifacts in the
docs/ folder:

1. TasksPlan.txt: shows the work breakdown and assignments - feel free to pick
   up an item that is not "Done" and hack away at it!

2. TasksWireframe.png: shows the initial GUI design with callouts explaining
   the key functionality.

3. TasksMockup*.png: shows the visual design concepts we used to style Tasks.

4. TasksStatecharts.pdf: shows the states/transitions within the GUI.

5. TasksControllers.pdf: shows how the various controllers are wired together
   and how the views relate to them (implementing thge root controller pattern).

6. TasksAPI.xml: drag this file into your browser - the files in the "include"
   folder render this specification in a nice format for you to understand the
   REST API endpoints.

7. TasksJSON.xml: documents the model object structure for what is sent to the
   server via REST calls.

8. TasksFileFormat.txt: Shows the simple/intuitive syntax for importing data
   into and exporting data from Tasks.  In fact, the TasksPlan.txt is itself
   written in this format and can be imported into Tasks!


TASKS ATTRIBUTIONS
==============================================================================

The filter on/off icons:
Diagona Icons
Copyright (C) 2007 Yusuke Kamiyamane. All rights reserved.
The icons are licensed under a Creative Commons Attribution 3.0 license.

The color indicators on the filter icon, as well as numerous other icons in Tasks:
Silk icon set 1.3
Mark James - http://www.famfamfam.com/lab/icons/silk/


PERSEVERE ADMINISTRATION
==============================================================================

1) Navigate to the following URL to directly manipulate Persevere data:

http://localhost:8088/tasks-server/explorer.html