Minimal JS single-page-app framework