Base app framework