finished client side app