Windshaft-cartodb/README.md

79 lines
3.5 KiB
Markdown
Raw Normal View History

2019-11-29 18:18:25 +08:00
# Windshaft-CartoDB
2011-09-05 07:00:41 +08:00
[![Build Status](https://travis-ci.org/CartoDB/Windshaft-cartodb.svg?branch=master)](https://travis-ci.org/CartoDB/Windshaft-cartodb)
2019-11-29 19:27:15 +08:00
This is the [`CARTO Maps API`](http://docs.cartodb.com/cartodb-platform/maps-api.html) tiler. It extends [`Windshaft`](https://github.com/CartoDB/Windshaft) and exposes a complete web service with extra functionality:
2019-11-29 19:27:15 +08:00
* Instantiate [`Anonymous Maps`](https://github.com/CartoDB/Windshaft-cartodb/blob/master/docs/guides/03-anonymous-maps.md) through CARTO's map configuration ([`MapConfig`](https://github.com/CartoDB/Windshaft/blob/master/doc/MapConfig-specification.md)).
2019-11-29 18:18:25 +08:00
* Create [`Named Maps`](https://github.com/CartoDB/Windshaft-cartodb/blob/master/docs/guides/04-named-maps.md) based on customizables templates.
* Get map previews through [`Static Maps`](https://github.com/CartoDB/Windshaft-cartodb/blob/master/docs/guides/05-static-maps-API.md) API.
* Render maps with large amount of data faster using [`Tile Aggregation`](https://github.com/CartoDB/Windshaft-cartodb/blob/master/docs/guides/06-tile-aggregation.md).
* Build advanced maps with enriched data through [`Analyses Extension`](https://github.com/CartoDB/Windshaft-cartodb/blob/master/docs/guides/09-MapConfig-analyses-extension.md).
* Fetch tabular data from analysis nodes with [`Dataviews`](https://github.com/CartoDB/Windshaft-cartodb/blob/master/docs/guides/10-MapConfig-dataviews-extension.md)
2019-11-29 18:18:25 +08:00
## Install
2015-11-19 19:50:34 +08:00
2019-11-29 18:18:25 +08:00
### Requirements
2019-11-29 18:18:25 +08:00
* Node 10.x
* npm 6.x
* PostgreSQL >= 10.0
* PostGIS >= 2.4
* CARTO Postgres Extension >= 0.24.1
* Redis >= 4
* libcairo2-dev, libpango1.0-dev, libjpeg8-dev and libgif-dev for server side canvas support
* C++11 (to build internal dependencies if needed)
2019-11-29 18:18:25 +08:00
### Optional
2019-11-29 19:27:15 +08:00
* [`Varnish`](http://www.varnish-cache.org)
2015-06-30 17:00:32 +08:00
2019-11-29 18:18:25 +08:00
### PostGIS setup
2015-06-30 17:00:32 +08:00
2019-11-29 18:18:25 +08:00
A `template_postgis` database is expected. One can be set up with
```shell
2019-11-29 19:27:15 +08:00
$ createdb --owner postgres --template template0 template_postgis
$ psql -d template_postgis -c 'CREATE EXTENSION postgis;'
2015-06-30 17:00:32 +08:00
```
2019-01-02 18:33:23 +08:00
2019-11-29 18:18:25 +08:00
### Build
To fetch and build all node-based dependencies, run:
```shell
2019-11-29 19:27:15 +08:00
$ npm ci
```
2019-11-29 18:18:25 +08:00
### Run
Create the `./config/environments/<env>.js` file (there are `.example` files to start from). Look at `./lib/cartodb/server-options.js` for more on config.
```shell
2019-11-29 19:27:15 +08:00
$ node app.js <env>
```
2019-11-29 18:18:25 +08:00
Where `<env>` is the name of a configuration file under `./config/environments/`.
2019-11-29 18:18:25 +08:00
## Documentation
2019-11-29 19:27:15 +08:00
The [docs directory](https://github.com/CartoDB/Windshaft-cartodb/tree/master/docs) contains different documentation resources, from higher level to more detailed ones: the [Maps API](https://github.com/CartoDB/Windshaft-cartodb/blob/master/docs/Map-API.md) document defines the endpoints and their expected parameters and outputs.
2019-11-29 18:18:25 +08:00
## Contributing
2011-10-08 01:31:45 +08:00
2019-11-29 19:30:56 +08:00
* The issue tracker: [`Github`](https://github.com/CartoDB/Windshaft-cartodb/issues).
* We love pull requests from everyone, see [contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/#contributing).
* You'll need to sign a Contributor License Agreement (CLA) before making a submission. [Learn more here](https://carto.com/contributions).
### Developing with a custom windshaft version
2019-11-29 19:27:15 +08:00
If you plan or want to use a custom / not released yet version of windshaft (or any other dependency) the best option is to use `npm link`. You can read more about it at `npm-link`: [symlink a package folder](https://docs.npmjs.com/cli/link.html).
2019-01-02 18:33:23 +08:00
```shell
2019-11-29 18:27:11 +08:00
$ cd /path/to/Windshaft
$ npm install
$ npm link
$ cd /path/to/Windshaft-cartodb
$ npm link windshaft
2019-01-02 18:33:23 +08:00
```