This is a QGis plugin we developed for a specific use-case in Flanders: to be able to handle field erosion objections on a tablet in the field. It was presented at FOSS4G 2016 (slides and video), where the design and reasoning behind the application was discussed.
We realise that the plugin is designed for our very specific use-case, but hope you will find it interesting and maybe adapt it to the needs of your project. Feel free to fork the entire project, reuse parts of the source code in your plugin or take the ideas and start from there. Should you have any questions, please open an issue here.
We use this plugin together with QGis 2.8 (but it should work with more recent versions of the 2.x series as well) and the QGis versioning plugin for data synchronisation.