There are a lot of things that still has to be done. Here are some ideas: * The User class is hardcoded. We need to make this configurable to allow for other authentication plugins that doesn't use a model named 'User' * Generate automated RDoc documentation * (DONE) Add support for Rake tasks. And actually Slingshot expects to find a :up and :down tasks in its GUI * (DONE) Devise some cronjob like scheduled task to actively check whether the network is on or not and automatically start replication in the background, thus avoiding having to replication too big packages only at the end of the day * Put in some connection checking before starting the 'perform_sync' process. If you start it without having the server part online, the client process simply hangs and you have to forcefully kill it. * (DONE) Tests: There is now a network_stub.rb that will override the Net::HTTP class so it never makes online calls in the test suite. That way we can control the responses locally and make a good enough test suite. * Exception handling: I didn't make very extensive tests, so there are a lot of exceptional cases that I am probably not handling adequately. The wrapper methods of the SyncsController try to use HTTP status to communicate success or errors. More tests over exceptions would be great. * Authentication and Authorization: the fact that the User model has both a UUID primary key and a separate UUID column called 'guid' doesn't sound very good to me. But, the current implementation of the challenge-response process seems to ask this separation. If you have a better idea for a handshake process would be good. I also didn't test if the HTTP proxy, HTTP basic authentication and SSL support are working correctly.