Leaflet.js is your best bet. It is quick to start, has tons of plugins and can do a lot out of the box.
OpenLayers is probably a little more customizable, but has a steeper learning curve. If you're using PostGIS, you can probably handle much of the less common spatial manipulation there and use Leaflet to render, rather than the client side.