pure JS apps