App: continue port to typescript