I've implemented the first, very basic widget: Text Widget. It just displays fixed text, nothing fancy. Maybe it can be extended to support some basic formatting options in the future.
Most work happened under the hood. I've cleaned up the code and tried to establish a good framework to build upon.