mini-app framework