designing an api from scratch