Minimal view layer with declarative bindings