JS framework