building the client-side app by hand