We recently went through something similar to this and found the following tools helpful:git
tippecanoe (https://github.com/mapbox/tippecanoe) - We used this to convert our high resolution geojson files to manageable vector tiles. This was used as the base.github
tile-join (same address) - after we had the base tiles, we joined the data to the vector set. This created a final set of tiles that we could render on the client side. In each of the tiles, there was the appropriate resolution of geojson object as well as all of the properties we wanted to map.express
mapboxgl - here we used the data driven styling to set the fill color of each of the polygons.https://www.mapbox.com/help/gl-dds-ref/json
express (Self-hosting Mapbox vector tiles) - this was used to serve up the tiles to the client.app