Implementation will be done using a bottom up process. We'll split the project into small modules, with low to zero coupling, highly cohesive, which we'll later join ( ad-hoc maybe ? ).
For each such module, we'll write tests and a POC ( proof of concept: testing the module, showing it works and how ).
Each module will be documented ( especially the public API ).

The work will be managed via SVN ( ).
Please create a new project on the svn when you start working on a new module. Be sure that each time you finish working, you do a build so that everybody can use your already compiled project ( the jar file ).

General tips

  • javadoc (at least) your public API
  • parameterize all the needed stuff so that we won't spend a lot of time later doing that
  • don't use hard-coded values in the app; define public values, enums
  • give variables,classes,etc. meaningful names ( especially those that are part of your public API )
  • make your module low coupled; don't expect too much stuff from the outside if it isn't important

Adding code to the project

  • always check if there is an update before you start working
  • use the same conventions
  • don't change other people's code

These are just schetches of how the modules are going to look like.

Text to Speech wrapper

  • text to speech functionality
  • testing on Android

Speech Recognition wrapper

  • speech recognition functionality
  • testing on Android

Facebook/Twitter module

  • authentication
  • message posting
  • profile information retrieval ( friends, location, language, etc. )

Ciatri Server

  • protocol oriented
  • receiving messages, responding to them
  • basic queue functionality ( not all stuff is going to be done instantly )

Ciatri protocol

  • message structure
  • protocol steps

Ciatri player

  • modelling the player ( must see what attributes are we going to have)

Android widgets

  • what android widgets can we use for our application