feature(js): article crud