<commit_before># TileStrata
[![NPM version](http://img.shields.io/npm/v/tilestrata.svg?style=flat)](https://www.npmjs.org/package/tilestrata)
[![Build Status](https://travis-ci.org/naturalatlas/tilestrata.svg)](https://travis-ci.org/naturalatlas/tilestrata)
[![Coverage Status](http://img.shields.io/codecov/c/github/naturalatlas/tilestrata/master.svg?style=flat)](https://codecov.io/github/naturalatlas/tilestrata)

TileStrata is a pluggable "slippy map" tile server that emphasizes code-as-configuration. It's clean, highly tested, and performant. After using [TileStache](http://tilestache.org/) (excellent) we decided we needed something that more-closely matched our stack: Node.js. The primary goal is painless extendability.

```sh
$ npm install tilestrata --save
```

### Introduction

TileStrata consists of five main actors, usually implemented as plugins:

- [*"provider"*](#writing-providers) – Generates a new tile (e.g mapnik)<commit_msg>Updated readme (added ToC and links)<commit_after># TileStrata
[![NPM version](http://img.shields.io/npm/v/tilestrata.svg?style=flat)](https://www.npmjs.org/package/tilestrata)
[![Build Status](https://travis-ci.org/naturalatlas/tilestrata.svg)](https://travis-ci.org/naturalatlas/tilestrata)
[![Coverage Status](http://img.shields.io/codecov/c/github/naturalatlas/tilestrata/master.svg?style=flat)](https://codecov.io/github/naturalatlas/tilestrata)

*TileStrata is a pluggable "slippy map" tile server that emphasizes code-as-configuration.* It's clean, highly tested, performant, and integrates effortlessly with an elastic load balancer designed specifically for tile serving: [TileStrata Balancer](https://github.com/naturalatlas/tilestrata-balancer). After using [TileStache](http://tilestache.org/) (excellent) we decided we needed something that more-closely matched our stack: Node.js. The primary goal is painless extendability.

```sh
$ npm install tilestrata --save
```

- [Introduction](#introduction)
- [Configuration](#configuration)
  - [Basics](#configuration)
  - [Express.js / Connect Integration](#integrate-with-expressjs--connect)
  - [Metatile-Aware Load Balancing](#metatile-aware-load-balancing--layer-sharding)
  - [Rebuilding the Tile Cache](#rebuilding-the-tile-cache)
  - [Health Checks](#health-checks)
  - [Profiling / Debugging Performance](#profiling--debugging-performance)
- [API Reference](#api-reference)
- [Plugin Guide](#writing-tilestrata-plugins)

### Introduction

TileStrata consists of five main actors, usually implemented as plugins:

- [*"provider"*](#writing-providers) – Generates a new tile (e.g mapnik)
{'fraction_non_alphanumeric': 0.145489443378119, 'fraction_numerical': 0.0, 'mean_word_length': 5.768831168831169, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 9, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2156697', 'n_tokens_mistral': 849, 'n_tokens_neox': 813, 'n_words': 180}