Have you considered using a CalDAV server (e.g. SabreDAV) as a backend?
The backend of this is pluggable so it can use other datastores.
If you sync a 2Do app instance with SabreDAV, you can see that the 2Do developers have added app-specific fields to the standard schema, to store text notes, audio attachments and app-specific metadata, without losing interoperability.
CalDAV clients: http://caldav.calconnect.org/implementations/clients.html
CalDAV libraries: http://caldav.calconnect.org/implementations/librariestools....