feat(app): move to typescript