├── .bowerrc
├── .gitignore
├── .ruby-version
├── COMMANDS.md
├── CONTRIBUTING.md
├── Gemfile
├── Gemfile.lock
├── Gruntfile.js
├── INSTALL.md
├── README.md
├── _app
├── _academy-lite
│ ├── 01-cartocss.md
│ └── 02-map-baltimores-economic-info.md
├── _beginners-course
│ ├── 01-making-your-first-map.md
│ ├── 02-your-first-choropleth-map.md
│ ├── 03-thematic-maps-with-point-data.md
│ ├── 04-animated-maps-with-point-data.md
│ └── 05-multilayer-visualizations.md
├── _cartojs-and-external-apis
│ ├── 01-google-streetview.md
│ └── 02-google-driving.md
├── _cartojs-ground-up
│ ├── 01-createvis-vs-createlayer.md
│ ├── 02-creating-basic-map-apps.md
│ ├── 03-basic-interactivity.md
│ ├── 04-torquejs.md
│ └── 05-named-maps.md
├── _community
│ ├── 01-odyssey-introduction.md
│ ├── 02-torque-bird-tracking.md
│ └── 03-earthquake-risk.md
├── _data
│ └── menu.yml
├── _design-for-beginners
│ ├── 01-getting-started.md
│ ├── 02-colors-truth-insights.md
│ ├── 03-invisible-and-visible-data.md
│ └── 04-placing-your-labels.md
├── _includes
│ ├── css
│ │ └── hubspot.css
│ ├── footer.html
│ ├── head.html
│ ├── mailchimp.html
│ ├── navigation.html
│ ├── sitemap.html
│ └── vendor_scripts.html
├── _intermediate-design
│ ├── 01-which-kind-of-map-should-i-make.md
│ ├── 02-how-to-choose-colors-part-1.md
│ ├── 03-how-to-choose-colors-part-2.md
│ └── 04-use-composite-operations.md
├── _js
│ ├── app.js
│ ├── components
│ │ ├── dropdown.js
│ │ └── navbar.js
│ ├── lesson.js
│ ├── main.js
│ └── vendor
│ │ ├── cookies.js
│ │ ├── stickyfill.js
│ │ └── waypoints.js
├── _layouts
│ ├── community.html
│ ├── course.html
│ ├── default.html
│ ├── lesson.html
│ └── page.html
├── _scss
│ ├── _academy.scss
│ ├── _base.scss
│ ├── _components.scss
│ ├── _mixins.scss
│ ├── _utilities.scss
│ ├── _variables.scss
│ ├── _vendor.scss
│ ├── components
│ │ ├── _breadcrumbs.scss
│ │ ├── _buttons.scss
│ │ ├── _cards.scss
│ │ ├── _circles.scss
│ │ ├── _content.scss
│ │ ├── _dropdown.scss
│ │ ├── _features.scss
│ │ ├── _footer.scss
│ │ ├── _grid.scss
│ │ ├── _header.scss
│ │ ├── _icons.scss
│ │ ├── _icons_carto.scss
│ │ ├── _lists.scss
│ │ ├── _logo.scss
│ │ ├── _navbar.scss
│ │ ├── _offcanvas.scss
│ │ ├── _progress.scss
│ │ ├── _sections.scss
│ │ ├── _separator.scss
│ │ ├── _sidebar.scss
│ │ ├── _sidemenu.scss
│ │ ├── _subheader.scss
│ │ └── _titles.scss
│ ├── main.scss
│ ├── mixins
│ │ ├── _button.scss
│ │ ├── _clearfix.scss
│ │ ├── _cover.scss
│ │ ├── _ellipsis.scss
│ │ └── _retina-background.scss
│ └── vendor
│ │ ├── _reset.scss
│ │ └── _syntax-highlighting.scss
├── _sql-postgis
│ ├── 01-intro-to-sql-and-postgis.md
│ ├── 02-postgis-in-cartodb.md
│ └── 03-joining-tables.md
├── about.md
├── courses
│ ├── academy-lite.md
│ ├── beginners-course.md
│ ├── cartojs-and-external-apis.md
│ ├── cartojs-ground-up.md
│ ├── community.md
│ ├── design-for-beginners.md
│ ├── intermediate-design.md
│ └── sql-postgis.md
├── d
│ ├── 1.0_month.csv
│ ├── 1.0_month.geojson.zip
│ ├── academy_torque_stork.zip
│ ├── all_month.csv.zip
│ ├── counties.zip
│ ├── highway_61.geojson
│ ├── mississippi_blues_musicians.geojson
│ └── tornadoes.zip
├── favicon.ico
├── fonts
│ ├── carto-icons.eot
│ ├── carto-icons.svg
│ ├── carto-icons.ttf
│ └── carto-icons.woff
├── google776764e6f35123b2.html
├── img
│ ├── backgrounds
│ │ ├── academy.png
│ │ └── academy.svg
│ ├── course1
│ │ └── lesson2
│ │ │ ├── choropleth.png
│ │ │ ├── infowindow.png
│ │ │ ├── newtableURL.jpg
│ │ │ ├── newtableURL.png
│ │ │ └── polygonfill.png
│ ├── course2
│ │ ├── lesson1
│ │ │ └── badmap.png
│ │ ├── lesson2
│ │ │ ├── customizecss.png
│ │ │ ├── dataimport.png
│ │ │ ├── hexvalue.jpg
│ │ │ ├── multiply.png
│ │ │ └── styledmap.png
│ │ ├── lesson3
│ │ │ ├── alltogether.gif
│ │ │ ├── bubbleviz.png
│ │ │ ├── mag.png
│ │ │ ├── stamen.gif
│ │ │ ├── time.png
│ │ │ └── together1.png
│ │ └── lesson4
│ │ │ ├── addlabels.png
│ │ │ └── labelsize.png
│ ├── course3
│ │ ├── lesson1
│ │ │ ├── example-map.png
│ │ │ ├── json-view.png
│ │ │ └── share-panel.png
│ │ ├── lesson3
│ │ │ └── cartocss-simple.png
│ │ └── lesson5
│ │ │ └── img1.png
│ ├── course4
│ │ ├── lesson1
│ │ │ ├── filters-sql.png
│ │ │ ├── filters.png
│ │ │ └── select-columns.png
│ │ ├── lesson2
│ │ │ ├── buffer-demo.png
│ │ │ ├── buffer-example.png
│ │ │ ├── makeline.png
│ │ │ └── stdistance.png
│ │ └── lesson3
│ │ │ ├── img1.png
│ │ │ ├── img2.png
│ │ │ └── img3.png
│ ├── course5
│ │ └── data-observatory-baltimore
│ │ │ └── obs_search_with_gini_index.png
│ ├── course6
│ │ ├── lesson1
│ │ │ ├── australia_cat.png
│ │ │ ├── bubble.gif
│ │ │ ├── cluster_zoom.gif
│ │ │ ├── cluster_zoom_2.gif
│ │ │ ├── cluster_zoom_3.gif
│ │ │ ├── crime_incidents.png
│ │ │ ├── crime_rate.png
│ │ │ ├── density_labels.gif
│ │ │ ├── divergent.png
│ │ │ ├── earthquakes.png
│ │ │ ├── earthquakes_1.png
│ │ │ ├── earthquakes_2.png
│ │ │ ├── equal_int.png
│ │ │ ├── filter.png
│ │ │ ├── green_cyan.png
│ │ │ ├── heatmap.gif
│ │ │ ├── intensity.gif
│ │ │ ├── larger.png
│ │ │ ├── larger_center.png
│ │ │ ├── line_layer.png
│ │ │ ├── oneclick.png
│ │ │ ├── point_layer.png
│ │ │ ├── polygon_layer.png
│ │ │ ├── popup.png
│ │ │ ├── rainbow.png
│ │ │ ├── seq_color.png
│ │ │ ├── storm_density.png
│ │ │ ├── storms_usa_2014.png
│ │ │ ├── storms_usa_2014_2.png
│ │ │ ├── torque.gif
│ │ │ ├── torque_cat.gif
│ │ │ └── torque_cu.gif
│ │ ├── lesson2
│ │ │ ├── brightness.png
│ │ │ ├── color1-rgTxt-fix_2.png
│ │ │ ├── color1-rgTxt.png
│ │ │ ├── color_wheel_itten.png
│ │ │ ├── handle.png
│ │ │ ├── hue.png
│ │ │ ├── lighter_red.png
│ │ │ ├── lighter_red_2.png
│ │ │ ├── lighter_red_3.png
│ │ │ ├── low_contrast.png
│ │ │ ├── reduction1.png
│ │ │ ├── reduction2.png
│ │ │ ├── saturation_brightness0.png
│ │ │ ├── saturation_brightness100.png
│ │ │ ├── saturation_brightness50.png
│ │ │ ├── sim_cnt_1.png
│ │ │ ├── sim_cnt_2.png
│ │ │ ├── simultaneous_contrast.png
│ │ │ ├── size_contrast.png
│ │ │ └── size_contrast2.png
│ │ ├── lesson3
│ │ │ ├── abel_picker.png
│ │ │ ├── blue_33.png
│ │ │ ├── blue_full.png
│ │ │ ├── cdb_rb_divergent.png
│ │ │ ├── cdb_seq_green.png
│ │ │ ├── color_brewer_red_blue.png
│ │ │ ├── color_wheel_itten.png
│ │ │ ├── divergent_default.png
│ │ │ ├── editor_default.png
│ │ │ ├── editor_lighten.png
│ │ │ ├── perceptual_rainbow.png
│ │ │ ├── rainbow_brighter.png
│ │ │ ├── rb_divergent.png
│ │ │ ├── red_66.png
│ │ │ ├── red_blue.png
│ │ │ ├── red_full.png
│ │ │ ├── red_green.png
│ │ │ ├── uneven_rainbow.png
│ │ │ ├── valencia_lighten.png
│ │ │ └── valencia_value_15.png
│ │ └── lesson4
│ │ │ ├── clear.png
│ │ │ ├── color-burn.png
│ │ │ ├── color-dodge.png
│ │ │ ├── color.png
│ │ │ ├── color_burn.png
│ │ │ ├── color_dodge.png
│ │ │ ├── contrast.png
│ │ │ ├── darken-use-case.png
│ │ │ ├── darken.png
│ │ │ ├── difference.png
│ │ │ ├── dst-atop.png
│ │ │ ├── dst-in.png
│ │ │ ├── dst-out.png
│ │ │ ├── dst-over.png
│ │ │ ├── dst.png
│ │ │ ├── exclusion.png
│ │ │ ├── grain-extract.png
│ │ │ ├── grain-merge.png
│ │ │ ├── hard-light.png
│ │ │ ├── hue.png
│ │ │ ├── invert-rgb.png
│ │ │ ├── invert.png
│ │ │ ├── lighten.png
│ │ │ ├── london_crime_incidents.png
│ │ │ ├── minus.png
│ │ │ ├── multiply.png
│ │ │ ├── multiply_anim.gif
│ │ │ ├── overlay-use-case-1.png
│ │ │ ├── overlay-use-case-2.png
│ │ │ ├── overlay.png
│ │ │ ├── plus.png
│ │ │ ├── saturation.png
│ │ │ ├── screen-use-case.png
│ │ │ ├── screen.png
│ │ │ ├── soft-light.png
│ │ │ ├── src-atop.png
│ │ │ ├── src-in.png
│ │ │ ├── src-out.png
│ │ │ ├── src-over.png
│ │ │ ├── src.png
│ │ │ ├── value.png
│ │ │ └── xor.png
│ └── icons
│ │ ├── academy-lite.png
│ │ ├── academy-lite.svg
│ │ ├── beginners-course.png
│ │ ├── beginners-course.svg
│ │ ├── cartojs-and-external-apis.png
│ │ ├── cartojs-and-external-apis.svg
│ │ ├── cartojs-ground-up.png
│ │ ├── cartojs-ground-up.svg
│ │ ├── community.png
│ │ ├── community.svg
│ │ ├── design-for-beginners.png
│ │ ├── design-for-beginners.svg
│ │ ├── intermediate-design.png
│ │ ├── intermediate-design.svg
│ │ ├── sql-postgis.png
│ │ └── sql-postgis.svg
├── index.html
├── sitemap.xml
└── t
│ ├── 03-cartodbjs-ground-up
│ ├── lesson-1
│ │ ├── CartoDB-js-lesson1-template.html
│ │ └── jsfiddle_demo
│ │ │ ├── demo.css
│ │ │ ├── demo.details
│ │ │ ├── demo.html
│ │ │ └── demo.js
│ ├── lesson-2
│ │ ├── CartoDB-js-lesson2-layercontrols.html
│ │ ├── CartoDB-js-lesson2-multilayer.html
│ │ ├── CartoDB-js-lesson2-ondone.html
│ │ ├── CartoDB-js-lesson2-template.html
│ │ ├── CartoDB-js-lesson2-toggles-and-slider.html
│ │ ├── jsfiddle_demo_layercontrols
│ │ │ ├── demo.css
│ │ │ ├── demo.details
│ │ │ ├── demo.html
│ │ │ └── demo.js
│ │ ├── jsfiddle_demo_multilayer
│ │ │ ├── demo.css
│ │ │ ├── demo.details
│ │ │ ├── demo.html
│ │ │ └── demo.js
│ │ ├── jsfiddle_demo_ondone
│ │ │ ├── demo.css
│ │ │ ├── demo.details
│ │ │ ├── demo.html
│ │ │ └── demo.js
│ │ └── jsfiddle_demo_toggles_and_slider
│ │ │ ├── demo.css
│ │ │ ├── demo.details
│ │ │ ├── demo.html
│ │ │ └── demo.js
│ ├── lesson-3
│ │ ├── CartoDB-js-lesson3-template.html
│ │ ├── cartocss-and-sql-hosted.html
│ │ ├── cartocss-and-sql.html
│ │ ├── cartocss-string.html
│ │ ├── cartocss-style-hosted.html
│ │ ├── cartocss-style.html
│ │ ├── jsfiddle_demo_cartocss
│ │ │ ├── demo.css
│ │ │ ├── demo.details
│ │ │ ├── demo.html
│ │ │ └── demo.js
│ │ └── jsfiddle_demo_cartocss_sql
│ │ │ ├── demo.css
│ │ │ ├── demo.details
│ │ │ ├── demo.html
│ │ │ └── demo.js
│ ├── lesson-4
│ │ ├── bonus-header-map.html
│ │ ├── bonus.html
│ │ ├── checkpoint-hosted.html
│ │ ├── checkpoint.html
│ │ ├── template.html
│ │ ├── torque-sql-hosted.html
│ │ └── torque-sql.html
│ └── lesson-5
│ │ ├── named-maps-example.html
│ │ └── named-maps-template.html
│ ├── 06-intermediate-design
│ └── lesson-2
│ │ ├── color1-rgTxt-fix.png
│ │ ├── color1-rgTxt.png
│ │ ├── handle.png
│ │ ├── imgslider-2.0.1-min.css
│ │ ├── index.html
│ │ └── jquery.beforeafter-1.4.js
│ └── 07-cartojs-and-external-apis
│ ├── lesson-1
│ ├── index.html
│ └── template.html
│ └── lesson-2
│ ├── index.html
│ └── template.html
├── _config-prod.yml
├── _config-staging.yml
├── _config.yml
├── bower.json
├── grunt-aws.development.json
├── package.json
├── robots.production.txt
└── robots.staging.txt
/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "bower_components"
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .tmp/
3 | .sass-cache/
4 | _site/
5 | .jekyll-metadata
6 | node_modules/
7 | bower_components/
8 | grunt-aws.*
9 | !grunt-aws.development.json
10 | .ruby-version
11 |
--------------------------------------------------------------------------------
/.ruby-version:
--------------------------------------------------------------------------------
1 | 2.3.0
--------------------------------------------------------------------------------
/COMMANDS.md:
--------------------------------------------------------------------------------
1 | # Commands
2 |
3 | There are many commands available to help you build and test sites. Here are a few highlights to get started with.
4 |
5 |
6 | ## Run locally
7 |
8 | ```
9 | grunt serve
10 | ```
11 |
12 | This will have Jekyll build the site, run a static server, and watch for changes to site files. Every change will cause Jekyll to rebuild the affected files.
13 |
14 | Also, you can run The Map Academy website locally as if it was on staging with `grunt serve --target=staging`
15 |
16 |
17 | ## Build & Optimize
18 |
19 | ```
20 | grunt build
21 | ```
22 |
23 | Build and optimize the current site, ready for deployment. This includes image, script, stylesheet and HTML optimization and minification.
24 |
25 |
26 | ## Deploy
27 |
28 | ```
29 | grunt deploy --target=ENV
30 | ```
31 |
32 | Compress assets and upload them to the corrsponding S3 bucket, as well as the HTML files generated by Jekyll.
33 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'jekyll', '3.1.2'
4 | gem 'jekyll-redirect-from'
5 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | colorator (0.1)
5 | ffi (1.9.10)
6 | jekyll (3.1.2)
7 | colorator (~> 0.1)
8 | jekyll-sass-converter (~> 1.0)
9 | jekyll-watch (~> 1.1)
10 | kramdown (~> 1.3)
11 | liquid (~> 3.0)
12 | mercenary (~> 0.3.3)
13 | rouge (~> 1.7)
14 | safe_yaml (~> 1.0)
15 | jekyll-redirect-from (0.9.1)
16 | jekyll (>= 2.0)
17 | jekyll-sass-converter (1.4.0)
18 | sass (~> 3.4)
19 | jekyll-watch (1.3.1)
20 | listen (~> 3.0)
21 | kramdown (1.9.0)
22 | liquid (3.0.6)
23 | listen (3.0.6)
24 | rb-fsevent (>= 0.9.3)
25 | rb-inotify (>= 0.9.7)
26 | mercenary (0.3.5)
27 | rb-fsevent (0.9.7)
28 | rb-inotify (0.9.7)
29 | ffi (>= 0.5.0)
30 | rouge (1.10.1)
31 | safe_yaml (1.0.4)
32 | sass (3.4.21)
33 |
34 | PLATFORMS
35 | ruby
36 |
37 | DEPENDENCIES
38 | jekyll (= 3.1.2)
39 | jekyll-redirect-from
40 |
41 | BUNDLED WITH
42 | 1.11.2
43 |
--------------------------------------------------------------------------------
/INSTALL.md:
--------------------------------------------------------------------------------
1 | # Installation
2 |
3 | Install the dependencies if you don't already have them.
4 |
5 |
6 | ## Dependencies
7 |
8 | The dependencies are:
9 |
10 | * [Ruby](https://www.ruby-lang.org/)
11 | * [Node.js](https://nodejs.org)
12 | * [Grunt](http://gruntjs.com/)
13 | * [Bower](http://bower.io/)
14 | * [gulp.js](http://gulpjs.com)
15 |
16 |
17 | 1. Install [XCode Command Line Tools](https://developer.apple.com/xcode/downloads/)
18 | 1. Install [Homebrew](http://brew.sh/)
19 | * `ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
20 | 1. Install [nodejs.org](https://nodejs.org/) 0.10.x
21 | * `brew install node`
22 | 1. Install [ruby-install](https://github.com/postmodern/ruby-install)
23 | * `brew install ruby-install`
24 | 1. Install [Ruby](https://www.ruby-lang.org/)
25 | * `ruby-install ruby 2.4.0`
26 | 1. Install [chruby](https://github.com/postmodern/chruby)
27 | * `brew install chruby`
28 |
29 | Add the following to the ~/.bashrc or ~/.zshrc file:
30 |
31 | * `source /usr/local/share/chruby/chruby.sh`
32 |
33 | 1. Install [bundler](http://bundler.io)
34 | * `gem install bundle`
35 | 1. Set Ruby version to 2.3.0
36 | * `echo '2.3.0' > .ruby-version`
37 | 1. Install [RubyGems](https://rubygems.org/) dependencies ([Jekyll](http://jekyllrb.com/)(http://jekyllrb.com/))
38 | * `bundle install`
39 | 1. Install the [Grunt CLI](http://gruntjs.com/)
40 | * `npm install -g grunt-cli`
41 | 1. Install [Bower](http://bower.io/)
42 | * `npm install -g bower`
43 | 1. Install [npm](https://www.npmjs.org) dependencies
44 | * `npm install`
45 | 1. Install [Bower](http://bower.io/) dependencies
46 | * `bower install`
47 |
48 | That's it! You should now have everything needed to use The Map Academy website.
49 |
50 |
51 | ## Getting the code
52 |
53 | Once you have all of the dependencies installed, you only need to [get the code](https://github.com/CartoDB/academy/).
54 |
55 |
56 | ## Running the site
57 |
58 | You may want to get used to some of the [COMMANDS](COMMANDS.md) available.
59 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # The Map Academy
2 |
3 | ## About
4 |
5 | The Map Academy is an online resource to learn all things digital maps, data visualization, and geospatial analysis. We'll go on publishing courses to tackle different challenges in online mapping, from introductory courses to advanced ones. It's an open project in which anyone can contribute.
6 |
7 | [More about The Map Academy](https://carto.com/academy/about/)
8 |
9 | The Map Academy website can be found here [https://carto.com/academy](https://carto.com/academy). The Map Academy website is built on top of [Jekyll](http://jekyllrb.com/), a simple content management system for static sites.
10 |
11 |
12 | ## Develop
13 |
14 | Be sure to look over the [installation guide](INSTALL.md) to verify your environment is prepared to run the website. Once you have verified that your system can run the website, check out the [commands](COMMANDS.md) available to get started.
15 |
16 |
17 | ## Contributing
18 |
19 | Contributions, questions and comments are all welcome and encouraged. For code contributions to The Map Academy website, please see our [Contribution guide](CONTRIBUTING.md) before submitting a pull request. [CARTO](https://carto.com/) related issues should be filed on the [CARTO](https://github.com/CartoDB/cartodb) issue tracker.
20 |
21 |
22 | ## Deploy
23 |
24 | **DEPLOY IS CURRENTLY DISABLED**
25 |
--------------------------------------------------------------------------------
/_app/_beginners-course/01-making-your-first-map.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Online Mapping for Beginners — Making your First Map"
3 | redirect_from: /courses/01-beginners-course/lesson-1.html
4 | permalink: /courses/beginners-course/making-your-first-map/
5 | permalink_next: /courses/beginners-course/your-first-choropleth-map/
6 | ---
7 |
--------------------------------------------------------------------------------
/_app/_beginners-course/03-thematic-maps-with-point-data.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Online Mapping for Beginners — Thematic Maps with Point Data"
3 | redirect_from: /courses/01-beginners-course/lesson-3.html
4 | permalink: /courses/beginners-course/thematic-maps-with-point-data/
5 | permalink_next: /courses/beginners-course/animated-maps-with-point-data/
6 | ---
7 |
--------------------------------------------------------------------------------
/_app/_beginners-course/04-animated-maps-with-point-data.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Online Mapping for Beginners — Animated Maps with Point Data"
3 | redirect_from: /courses/01-beginners-course/lesson-4.html
4 | permalink: /courses/beginners-course/animated-maps-with-point-data/
5 | permalink_next: /courses/beginners-course/multilayer-visualizations/
6 | ---
7 |
--------------------------------------------------------------------------------
/_app/_beginners-course/05-multilayer-visualizations.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Online Mapping for Beginners — Multilayer Visualizations"
3 | redirect_from: /courses/01-beginners-course/lesson-5.html
4 | permalink: /courses/beginners-course/multilayer-visualizations/
5 | ---
6 |
--------------------------------------------------------------------------------
/_app/_cartojs-ground-up/02-creating-basic-map-apps.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "CARTO.js from the ground up — Creating basic map apps"
3 | redirect_from: /courses/03-cartojs-ground-up/lesson-2.html
4 | permalink: /courses/cartojs-ground-up/creating-basic-map-apps/
5 | permalink_next: /courses/cartojs-ground-up/basic-interactivity/
6 | ---
7 |
--------------------------------------------------------------------------------
/_app/_community/01-odyssey-introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Community — Odyssey.js: An in-depth introduction to maps with narratives"
3 | permalink: /courses/community/odyssey-introduction/
4 | permalink_next: /courses/community/torque-bird-tracking/
5 | ---
6 |
7 |
8 |
9 |
10 |
This tutorial was written by Stace Maples, the Geospatial Manager at The Stanford Geospatial Center , Stanford University and the former GIS Specialist & Instruction Coordinator for Yale University. He provides support and collaboration to the Stanford research community in capturing and making sense of the "where" of their work. His work mapping the research interests of scholars has taken him from the beaches of Martha's Vineyard, to Kurdish Northeastern Syria, to the most remote areas of the Mongolian/Chinese border.
11 |
An archaeologist by training and a technologist by temperament, he is interested in all aspects of mapping, from the aerial imaging of archaeological sites using kites and balloons, to the development of platforms for the gathering of volunteer geographic information. He has over 18 years of experience using Geographic Information Systems and Geotechnology for research and teaching.
12 |
13 |
--------------------------------------------------------------------------------
/_app/_community/02-torque-bird-tracking.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Community — Visualizing bird tracking data"
3 | permalink: /courses/community/torque-bird-tracking/
4 | permalink_next: /courses/community/earthquake-risk/
5 | ---
6 |
7 |
8 |
9 |
10 |
This tutorial was written by Peter Desmet for LifeWatch INBO and is being released under the CC BY 4.0 license. It originally appeared on the LifeWatch INBO blog on September 1, 2015.
11 |
12 |
Peter is an open data and visualization geek working as team coordinator at LifeWatch INBO . He's been working in biodiversity informatics since 2006. His recent projects involve bird tracking and weather radars. He also makes amazing data visualizations, such as the one in the banner .
13 |
14 |
--------------------------------------------------------------------------------
/_app/_community/03-earthquake-risk.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Community — Identify schools at risk from Oklahoma's earthquakes"
3 | permalink: /courses/community/earthquake-risk/
4 | ---
5 |
6 |
7 |
8 |
9 |
This tutorial was written by Dan Nguyen. Dan was most recently the Head of Data for Skift in New York. He was previously a news application developer at the non-profit investigative newsroom, ProPublica , where he led the development of several of ProPublica’s most well-known online projects, including Dollars for Docs and the Bailout Tracker . Before joining ProPublica, he was an education reporter and the first newsroom developer in the Sacramento Bee’s multimedia department.
10 |
11 |
Dan's areas of expertise include public affairs journalism, programming, and visual design. He has self-published several books and guides on programming and journalism and taught data journalism at New York University.
12 |
13 |
Find him on Twitter @dancow .
14 |
15 |
--------------------------------------------------------------------------------
/_app/_data/menu.yml:
--------------------------------------------------------------------------------
1 | product:
2 | - title: Builder
3 | url: /builder/
4 | - title: Engine
5 | url: /engine/
6 | - title: Mobile
7 | url: /mobile/
8 | - title: Location Data Services
9 | url: /location-data-services/
10 | - title: Data Observatory
11 | url: /data-observatory/
12 | solutions:
13 | - title: Banking & Finance
14 | url: '/solutions/banking-and-finance/'
15 | - title: BI & Analytics
16 | url: '/solutions/business-intelligence-and-analytics/'
17 | - title: Government
18 | url: '/solutions/government/'
19 | - title: Real Estate
20 | url: '/solutions/real-estate/'
21 | - title: Web & mobile development
22 | title_short: Web Development
23 | url: '/solutions/web-mobile/'
24 | - title: Journalism
25 | title_short: Journalism
26 | url: '/solutions/journalism/'
27 | - title: Natural Resources
28 | url: '/solutions/natural-resources/'
29 | - title: Earth Observation & Space
30 | title_short: Earth Observation
31 | url: '/solutions/earth-observation-and-space/'
32 | - title: Non-Profits
33 | url: '/solutions/non-profits/'
34 | - title: Education & Research
35 | title_short: Education
36 | url: '/solutions/education-and-research/'
37 | discover:
38 | - title: Map Gallery
39 | url: '/gallery/'
40 | - title: Explore
41 | url: '/explore/'
42 | cartodbfor:
43 | - title: Dropbox
44 | url: '/connectors/dropbox/'
45 | - title: Google Drive
46 | url: '/connectors/google-drive/'
47 | - title: Twitter Maps
48 | url: '/connectors/twitter-maps/'
49 | - title: MailChimp
50 | url: '/connectors/mailchimp/'
51 | - title: Excel Data
52 | url: '/connectors/excel/'
53 | - title: ArcGIS™
54 | url: '/connectors/arcgis/'
55 | - title: Satellite Imagery
56 | url: '/connectors/satellite-imagery/'
57 | - title: Qlik®
58 | url: '/connectors/qlik/'
59 | - title: Splunk
60 | url: '/connectors/splunk/'
61 | - title: Alteryx
62 | url: '/connectors/alteryx/'
63 | learn:
64 | - title: Documentation
65 | url: 'https://carto.com/docs'
66 | - title: The Map Academy
67 | url: 'https://carto.com/academy'
68 | - title: Resources Center
69 | url: 'https://carto.com/resources/'
70 | - title: Webinars
71 | url: 'https://carto.com/webinars/'
72 | - title: Blog
73 | url: 'https://carto.com/blog'
74 |
--------------------------------------------------------------------------------
/_app/_includes/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {% if page.title_meta %}{{ page.title_meta }} — {{ site.title }}{% elsif page.title %}{{ page.title }} — {{ site.title }}{% else %}{{ site.title }}{% endif %}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | {% if page.cartodb.js %}
18 |
19 | {% endif %}
20 |
21 |
22 |
--------------------------------------------------------------------------------
/_app/_includes/mailchimp.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/_app/_includes/sitemap.html:
--------------------------------------------------------------------------------
1 | {% unless page.sitemap == false %}
2 |
3 | {{ site.url }}{{ page.url | remove: "index.html" }}
4 | {% if page.sitemap.lastmod %}
5 | {{ page.sitemap.lastmod | date: "%Y-%m-%d" }}
6 | {% else %}
7 | {{ site.time | date_to_xmlschema }}
8 | {% endif %}
9 | {% if page.sitemap.changefreq %}
10 | {{ page.sitemap.changefreq }}
11 | {% else %}
12 | monthly
13 | {% endif %}
14 | {% if page.sitemap.priority %}
15 | {{ page.sitemap.priority }}
16 | {% else %}
17 | 0.8
18 | {% endif %}
19 |
20 | {% endunless %}
--------------------------------------------------------------------------------
/_app/_includes/vendor_scripts.html:
--------------------------------------------------------------------------------
1 | {% if site.analytics_property_id %}
2 |
14 | {% endif %}
15 |
16 | {% if site.hubspot_id %}
17 |
25 | {% endif %}
26 |
27 | {% if site.inspectlet_id %}
28 |
29 |
37 |
38 | {% endif %}
39 |
40 | {% if page.cartodb.js %}
41 |
42 | {% endif %}
43 |
--------------------------------------------------------------------------------
/_app/_js/app.js:
--------------------------------------------------------------------------------
1 | window.App = {
2 | Models: {},
3 | Collections: {},
4 | Views: {},
5 | Routers: {}
6 | };
7 |
--------------------------------------------------------------------------------
/_app/_js/components/dropdown.js:
--------------------------------------------------------------------------------
1 | App.Views.Dropdown = Backbone.View.extend({
2 |
3 | events: {
4 | 'click': '_onClickDropdown',
5 | 'click .js-Dropdown-target': '_onClickDropdownLink'
6 | },
7 |
8 | initialize: function() {
9 | this.$dropdown = this.$('.js-Dropdown-inner');
10 |
11 | this.model = new Backbone.Model({ hidden: true });
12 |
13 | this.model.on("change:hidden", this._toggleDropdown, this);
14 | },
15 |
16 | _onClickDropdown: function(e) {
17 | if (!$(e.target).hasClass('js-Dropdown-link')) {
18 | e.preventDefault();
19 | e.stopPropagation();
20 | }
21 | },
22 |
23 | close: function() {
24 | if (!this.model.get('hidden')) {
25 | this.model.set('hidden', true);
26 | }
27 | },
28 |
29 | _onClickDropdownLink: function(e) {
30 | e.preventDefault();
31 |
32 | if (this.model.get('hidden')) {
33 | this.trigger('onclickdropdownlink');
34 | }
35 |
36 | this.model.set('hidden', !this.model.get('hidden'));
37 | },
38 |
39 | _toggleDropdown: function() {
40 | this.$dropdown.toggleClass('is-active', !this.model.get('hidden'));
41 | }
42 | });
43 |
--------------------------------------------------------------------------------
/_app/_js/components/navbar.js:
--------------------------------------------------------------------------------
1 | App.Views.Navbar = Backbone.View.extend({
2 |
3 | el: '.js-Offcanvas-inner',
4 |
5 | events: {
6 | 'click .js-Navbar-button': '_onClickNavbarButton'
7 | },
8 |
9 | initialize: function() {
10 | this.model = new Backbone.Model({ hidden: true });
11 |
12 | this.model.on("change:hidden", this._toggleNavbar, this);
13 | },
14 |
15 | _onClickNavbarButton: function(e) {
16 | e.preventDefault();
17 |
18 | this.model.set('hidden', !this.model.get('hidden'));
19 | },
20 |
21 | _toggleNavbar: function() {
22 | if (this.model.get('hidden')) {
23 | this.$el.removeClass('is-active');
24 | } else {
25 | this.$el.addClass('is-active');
26 | }
27 | }
28 | });
29 |
--------------------------------------------------------------------------------
/_app/_js/main.js:
--------------------------------------------------------------------------------
1 | App.Views.Main = Backbone.View.extend({
2 |
3 | el: 'body',
4 |
5 | events: {
6 | 'click': '_closeDropdowns',
7 | 'keydown': '_onKeyDown',
8 | 'click .js-Action--NAVbuilder': '_onClickNAVbuilder',
9 | 'click .js-Action--NAVengine': '_onClickNAVengine',
10 | 'click .js-Action--NAVsolutions': '_onClickNAVsolutions',
11 | 'click .js-Action--NAVpricing': '_onClickNAVpricing',
12 | 'click .js-Action--NAVblog': '_onClickNAVblog',
13 | 'click .js-Action--NAVlogin': '_onClickNAVlogin',
14 | 'click .js-Action--NAVcontact': '_onClickNAVcontact',
15 | },
16 |
17 | _onClickNAVbuilder: function () {
18 | ga('send', 'event', 'NAVbuilder', 'click', 'Builder')
19 | },
20 |
21 | _onClickNAVengine: function () {
22 | ga('send', 'event', 'NAVengine', 'click', 'Builder')
23 | },
24 |
25 | _onClickNAVsolutions: function () {
26 | ga('send', 'event', 'NAVsolutions', 'click', 'Builder')
27 | },
28 |
29 | _onClickNAVpricing: function () {
30 | ga('send', 'event', 'NAVpricing', 'click', 'Builder')
31 | },
32 |
33 | _onClickNAVblog: function () {
34 | ga('send', 'event', 'NAVblog', 'click', 'Builder')
35 | },
36 |
37 | _onClickNAVlogin: function () {
38 | ga('send', 'event', 'NAVlogin', 'click', 'Builder')
39 | },
40 |
41 | _onClickNAVcontact: function () {
42 | ga('send', 'event', 'NAVcontact', 'click', 'Builder')
43 | },
44 |
45 | initialize: function() {
46 | this._initViews();
47 | },
48 |
49 | _initViews: function() {
50 | this._initDropdowns();
51 | var navbar = new App.Views.Navbar();
52 | this._initHighlights();
53 | },
54 |
55 | _initHighlights: function() {
56 | _.each(this.$('.language-bash'), function(el) {
57 | $(el).closest('pre').addClass('Console');
58 | });
59 | },
60 |
61 | _onKeyDown: function(e) {
62 | switch (e.which) {
63 | // esc
64 | case 27 :
65 | this._closeDropdowns();
66 | break;
67 | }
68 | },
69 |
70 | _closeDropdowns: function() {
71 | this.trigger('closedropdowns');
72 | },
73 |
74 | _initDropdowns: function() {
75 | var _this = this;
76 |
77 | _.each(this.$('.js-Dropdown'), function(el) {
78 | var dropdown = new App.Views.Dropdown({
79 | el: $(el)
80 | });
81 |
82 | dropdown.bind('onclickdropdownlink', function() {
83 | _this._closeDropdowns();
84 | });
85 |
86 | _this.bind('closedropdowns', function() {
87 | dropdown.close();
88 | });
89 | });
90 | },
91 |
92 | });
93 |
94 | $(function() {
95 | window.main = new App.Views.Main();
96 | });
97 |
--------------------------------------------------------------------------------
/_app/_js/vendor/cookies.js:
--------------------------------------------------------------------------------
1 | /*\
2 | |*|
3 | |*| :: cookies.js ::
4 | |*|
5 | |*| A complete cookies reader/writer framework with full unicode support.
6 | |*|
7 | |*| Revision #1 - September 4, 2014
8 | |*|
9 | |*| https://developer.mozilla.org/en-US/docs/Web/API/document.cookie
10 | |*|
11 | |*| This framework is released under the GNU Public License, version 3 or later.
12 | |*| http://www.gnu.org/licenses/gpl-3.0-standalone.html
13 | |*|
14 | |*| Syntaxes:
15 | |*|
16 | |*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
17 | |*| * docCookies.getItem(name)
18 | |*| * docCookies.removeItem(name[, path[, domain]])
19 | |*| * docCookies.hasItem(name)
20 | |*| * docCookies.keys()
21 | |*|
22 | \*/
23 |
24 | var docCookies = {
25 | getItem: function (sKey) {
26 | if (!sKey) { return null; }
27 | return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
28 | },
29 | setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
30 | if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
31 | var sExpires = "";
32 | if (vEnd) {
33 | switch (vEnd.constructor) {
34 | case Number:
35 | sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
36 | break;
37 | case String:
38 | sExpires = "; expires=" + vEnd;
39 | break;
40 | case Date:
41 | sExpires = "; expires=" + vEnd.toUTCString();
42 | break;
43 | }
44 | }
45 | document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
46 | return true;
47 | },
48 | removeItem: function (sKey, sPath, sDomain) {
49 | if (!this.hasItem(sKey)) { return false; }
50 | document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "");
51 | return true;
52 | },
53 | hasItem: function (sKey) {
54 | if (!sKey) { return false; }
55 | return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
56 | },
57 | keys: function () {
58 | var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
59 | for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
60 | return aKeys;
61 | }
62 | };
63 |
--------------------------------------------------------------------------------
/_app/_layouts/course.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 | {% assign collection = false %}
5 |
6 | {% for collection_item in site.collections %}
7 | {% if collection_item.label == page.collection %}
8 | {% assign collection = collection_item %}
9 | {% endif %}
10 | {% endfor %}
11 |
12 |
15 |
16 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
56 |
57 |
58 |
59 |
60 |
61 | {{ content }}
62 |
63 |
64 |
65 |
66 | {% assign start_course = "#" %}
67 |
68 | {% for collection_item in collection.docs %}
69 | {% if forloop.first %}
70 | {% assign start_course = collection_item.url %}
71 | {% endif %}
72 |
73 |
74 | {{ collection_item.title }}
75 |
76 | {% endfor %}
77 |
78 |
79 |
80 |
81 | Start course
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 | {% comment %}
91 | {% include mailchimp.html %}
92 | {% endcomment %}
93 |
--------------------------------------------------------------------------------
/_app/_layouts/default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {% include head.html %}
5 |
6 |
7 |
10 |
11 |
12 |
13 | {{ content }}
14 |
15 | {% include footer.html %}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | {% include vendor_scripts.html %}
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/_app/_layouts/page.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
7 |
8 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
54 |
55 |
56 |
57 |
58 |
59 | {{ content }}
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | {% comment %}
69 | {% include mailchimp.html %}
70 | {% endcomment %}
71 |
--------------------------------------------------------------------------------
/_app/_scss/_academy.scss:
--------------------------------------------------------------------------------
1 | // Academy
2 | // --------------------------------------------------
3 |
4 | .Lesson-footer {
5 | margin-top: $spacing-unit * 3;
6 | padding-top: $spacing-unit * 3;
7 | border-top: 1px solid #eee;
8 | color: $grey9;
9 | }
10 |
--------------------------------------------------------------------------------
/_app/_scss/_base.scss:
--------------------------------------------------------------------------------
1 | * {
2 | box-sizing: border-box;
3 | }
4 | html,
5 | body {
6 | height: 100%;
7 | }
8 | body {
9 | background-color: $background-color;
10 | text-rendering: optimizeLegibility;
11 | -webkit-text-rendering: optimizeLegibility;
12 | -webkit-font-smoothing: antialiased;
13 | color: $text-color;
14 | font-weight: $font-weight-base;
15 | font-size: $font-size-base;
16 | line-height: $line-height-base;
17 | font-family: $font-family-base;
18 | }
19 | a {
20 | color: $blue1;
21 | text-decoration: none;
22 |
23 | &:hover {
24 | text-decoration: underline;
25 | }
26 | }
27 | strong {
28 | font-weight: 600;
29 | }
30 | em {
31 | font-style: italic;
32 | }
33 | abbr {
34 | border-bottom: 1px dotted #ddd;
35 | }
36 | button {
37 | margin: 0;
38 | border: 0;
39 | outline: none;
40 | cursor: pointer;
41 | font-family: $font-family-base;
42 | }
43 | img {
44 | max-width: 100%;
45 | vertical-align: bottom;
46 | }
47 | li {
48 | > ul,
49 | > ol {
50 | margin-bottom: 0;
51 | }
52 | }
53 | pre,
54 | code {
55 | font-family: 'PT Mono', monospace;
56 | border: 1px solid #ddd;
57 | border-radius: 3px;
58 | background-color: #f9f9f9;
59 | }
60 | code {
61 | padding: 1px 5px;
62 |
63 | &.language-bash {
64 | background-color: #292C34;
65 | }
66 | }
67 |
68 | pre {
69 | padding: 14px 18px;
70 | line-height: 19px;
71 | overflow-x: scroll;
72 |
73 | > code {
74 | border: 0;
75 | padding-right: 0;
76 | padding-left: 0;
77 | }
78 | }
79 | .Code-title--dark,
80 | .Code-body--dark pre,
81 | .Code-body--dark code,
82 | .Console {
83 | background: #292C34;
84 | color: #999;
85 | }
86 | .Code-title--dark,
87 | .Code-body--dark pre {
88 | border-color: #3C4048;
89 | }
90 |
--------------------------------------------------------------------------------
/_app/_scss/_components.scss:
--------------------------------------------------------------------------------
1 | // Components
2 | // --------------------------------------------------
3 |
4 | @import
5 | "components/grid",
6 | "components/sections",
7 | "components/buttons",
8 | "components/icons_carto",
9 | "components/icons",
10 | "components/titles",
11 | "components/header",
12 | "components/navbar",
13 | "components/breadcrumbs",
14 | "components/dropdown",
15 | "components/offcanvas",
16 | "components/logo",
17 | "components/lists",
18 | "components/sidebar",
19 | "components/content",
20 | "components/features",
21 | "components/separator",
22 | "components/cards",
23 | "components/footer"
24 | ;
25 |
26 | @import
27 | "components/circles",
28 | "components/subheader",
29 | "components/progress"
30 | ;
31 |
--------------------------------------------------------------------------------
/_app/_scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------------------------------
3 |
4 | @import
5 | "mixins/clearfix",
6 | "mixins/button",
7 | "mixins/ellipsis",
8 | "mixins/cover",
9 | "mixins/retina-background"
10 | ;
11 |
--------------------------------------------------------------------------------
/_app/_scss/_variables.scss:
--------------------------------------------------------------------------------
1 | // Variables
2 | // --------------------------------------------------
3 |
4 | // Layout
5 | $layout-xxxl: 1960px;
6 | $layout-xxl: 1280px;
7 | $layout-xl: 1480px;
8 | $layout-l: 980px;
9 | $layout-m: 750px;
10 | $layout-s: 400px;
11 | $layout-s--landscape: 520px;
12 | $layout-s--portrait: 360px;
13 | $spacing-unit: 20px;
14 |
15 | // Font
16 | $font-weight-base: 400;
17 | $font-size-base: 13px;
18 | $line-height-base: 22px;
19 | $font-family-base: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
20 | $text-color: #636D72;
21 | $background-color: #fff;
22 |
23 | // Colors
24 | $blue1: #3AA9E3;
25 | $blue2: #147BBF;
26 | $grey9: #979EA1;
27 | $grey6: #636D72;
28 | $grey2: #2E3C43;
29 |
30 | $orange1: #F19243;
31 | $orange2: #F99C4E;
32 |
33 | $green1: #85C77C;
34 | $green2: #1C9C9A;
35 | $green3: #397568;
36 | $green4: #8BBB71;
37 |
38 | $purple1: #373E66;
39 | $purple2: #812F87;
40 | $purple3: #34658A;
41 |
42 | $twitter: #55ACEE;
43 | $facebook: #3A5999;
44 | $linkedin: #007BB6;
45 |
--------------------------------------------------------------------------------
/_app/_scss/_vendor.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 |
3 | // Vendor
4 | @import
5 | "vendor/reset",
6 | "vendor/syntax-highlighting"
7 | ;
8 |
--------------------------------------------------------------------------------
/_app/_scss/components/_breadcrumbs.scss:
--------------------------------------------------------------------------------
1 | // Breadcrumb
2 | // --------------------------------------------------
3 |
4 | .Breadcrumbs-item {
5 | margin-left: $spacing-unit;
6 | font-size: 13px;
7 |
8 | @media (max-width: $layout-m) {
9 | width: 100%;
10 | margin-left: 0;
11 | }
12 | }
13 | .Breadcrumbs-link {
14 | color: $grey9;
15 |
16 | &:hover,
17 | &.is-active {
18 | color: $grey2;
19 | }
20 | }
21 | .Breadcrumb-arrow {
22 | position: relative;
23 | top: -1px;
24 | margin-left: $spacing-unit;
25 | color: #CBCED0;
26 | }
27 |
--------------------------------------------------------------------------------
/_app/_scss/components/_buttons.scss:
--------------------------------------------------------------------------------
1 | // Buttons
2 | // --------------------------------------------------
3 |
4 | .Button {
5 | display: inline-block;
6 | border-width: 2px;
7 | border-style: solid;
8 | text-align: center;
9 | white-space: nowrap;
10 | font-weight: 600;
11 | font-size: 12px;
12 | line-height: 1;
13 | border-radius: 50px;
14 | transition: all .3s;
15 | outline: none;
16 |
17 | &:hover {
18 | text-decoration: none;
19 | }
20 |
21 | > span {
22 | display: inline-block;
23 | }
24 | }
25 | .Button--responsive {
26 | width: 100%;
27 |
28 | > span {
29 | max-width: 100%;
30 | }
31 | }
32 |
33 | .Button--long {
34 | > span {
35 | min-width: 140px;
36 | }
37 | }
38 |
39 | // Sizes
40 | .Button--sSmall {
41 | > span {
42 | padding: 8px $spacing-unit;
43 | }
44 | }
45 | .Button--sMedium {
46 | > span {
47 | padding: $spacing-unit / 2 $spacing-unit;
48 | }
49 | }
50 | .Button--sLarge {
51 | > span {
52 | padding: 12px $spacing-unit;
53 | }
54 | }
55 | .Button--sXlarge {
56 | > span {
57 | padding: 14px $spacing-unit * 2;
58 | }
59 | }
60 |
61 | // Colors
62 | .Button--cWhite {
63 | @include button(#fff, $green1);
64 |
65 | &.is-highlight--dark {
66 | color: $grey2;
67 | }
68 |
69 | &.is-highlight--purple {
70 | color: $purple1;
71 | }
72 | }
73 | .Button--cBlue {
74 | @include button($blue1, #fff);
75 |
76 | &.is-highlight--fb {
77 | background: $facebook;
78 | border-color: $facebook;
79 |
80 | &:hover {
81 | background: darken($facebook, 5%);
82 | border-color: darken($facebook, 5%);
83 | }
84 | }
85 |
86 | &.is-highlight--tw {
87 | background: $twitter;
88 | border: 2px solid $twitter;
89 |
90 | &:hover {
91 | background: darken($twitter, 5%);
92 | border-color: darken($twitter, 5%);
93 | }
94 | }
95 |
96 | &.is-highlight--li {
97 | background: $linkedin;
98 | border: 2px solid $linkedin;
99 |
100 | &:hover {
101 | background: darken($linkedin, 5%);
102 | border-color: darken($linkedin, 5%);
103 | }
104 | }
105 |
106 | }
107 | .Button--cGrey {
108 | @include button($grey2, #fff);
109 |
110 | &.is-hover--dark {
111 | &:hover {
112 | color: #fff;
113 | }
114 | }
115 | }
116 | .Button--cGreen {
117 | @include button($green1, #fff);
118 | }
119 | .Button--cOrange {
120 | @include button($orange1, #fff);
121 | }
122 |
--------------------------------------------------------------------------------
/_app/_scss/components/_cards.scss:
--------------------------------------------------------------------------------
1 | // Cards
2 | // --------------------------------------------------
3 |
4 | .Card {
5 | min-height: 244px;
6 | }
7 | .Card--tall {
8 | min-height: 308px;
9 | }
10 | @media (max-width: $layout-m) {
11 | .Card {
12 | min-height: auto;
13 | }
14 | }
15 | .Card-inner {
16 | @include clearfix;
17 | padding: $spacing-unit;
18 | background: #fff;
19 | }
20 | .Card-picture {
21 | display: block;
22 | border-bottom: 1px solid rgba(#000, .1);
23 | width: 100%;
24 | padding: $spacing-unit;
25 | text-align: center;
26 | background-color: #f9f9f9;
27 | background-position: center;
28 | background-repeat: no-repeat;
29 | }
30 | .Card-picture--withpicture {
31 | height: 140px;
32 | background-size: cover;
33 | }
34 | .Card-title {
35 | font-size: 16px;
36 | color: $grey2;
37 | }
38 | .Card-title--withlink {
39 | a {
40 | color: $grey2;
41 | }
42 | }
43 | .Card-item {
44 | display: inline-block;
45 | font-size: 13px;
46 | color: $grey9;
47 |
48 | @media (max-width: $layout-m) {
49 | width: 100%;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/_app/_scss/components/_circles.scss:
--------------------------------------------------------------------------------
1 | // Circles
2 | // --------------------------------------------------
3 |
4 | .Circle {
5 | display: inline-block;
6 | width: $spacing-unit * 2;
7 | height: $spacing-unit * 2;
8 | border: 1px solid #DDD;
9 | font-size: 18px;
10 | line-height: 22px;
11 | text-align: center;
12 | color: #DDD;
13 | border-radius: 50%;
14 | transition: .2s all;
15 | }
16 | .Circle--fat {
17 | border-width: 2px;
18 | border-radius: 8px;
19 | }
20 | .Circle--square {
21 | border-radius: 8px;
22 | }
23 | .Circle--withlink {
24 | &:hover {
25 | text-decoration: none;
26 | border-color: #CCC;
27 | color: #CCC;
28 | }
29 | }
30 | .Circle--sep {
31 | position: absolute;
32 | z-index: 6;
33 | width: 80px;
34 | height: 80px;
35 | top: 50%;
36 | left: 50%;
37 | margin-left: -40px;
38 | margin-top: -40px;
39 | }
40 | // Sizes
41 | .Circle--sLarge {
42 | width: $spacing-unit * 3;
43 | height: $spacing-unit * 3;
44 | }
45 |
46 | // Colors
47 | .Circle--cBlue {
48 | border-color: $blue1;
49 | color: $blue1;
50 | }
51 | .Circle--cOrange {
52 | border-color: $orange1;
53 | color: $orange1;
54 | }
55 | .Circle--cGreen {
56 | border-color: $green1;
57 | color: $green1;
58 | }
59 | .Circle--cBlack {
60 | border-color: #0B161A;
61 | color: #0B161A;
62 |
63 | &.is-highlight {
64 | background: #0B161A;
65 | color: #fff;
66 | }
67 | }
68 |
69 | .Circle-inner--left {
70 | margin-left: -4px;
71 | }
72 | .Circle-inner--right {
73 | margin-right: -4px;
74 | }
--------------------------------------------------------------------------------
/_app/_scss/components/_content.scss:
--------------------------------------------------------------------------------
1 | // Content
2 | // --------------------------------------------------
3 | .Content {
4 | position: relative;
5 | background: $background-color;
6 | padding-bottom: $spacing-unit * 3;
7 | }
8 | .Content--withpadding {
9 | padding-top: $spacing-unit * 3;
10 | }
11 | .Content--cWhite {
12 | background: #fff;
13 | }
14 | .Content-inner {
15 | margin-top: $spacing-unit * 3;
16 |
17 | h1, h2, h3,
18 | p, blockquote, pre,
19 | ul, ol, dl, figure {
20 | margin-bottom: $spacing-unit;
21 | }
22 | p, blockquote, pre,
23 | ul, ol, dl, figure {
24 | &:last-child {
25 | margin-bottom: 0;
26 | }
27 | }
28 | // .Title
29 | h1, h2, h3, h4, h5, h6 {
30 | font-weight: 600;
31 | color: $grey2;
32 |
33 | &:hover {
34 | .Title-link {
35 | opacity: 1;
36 | }
37 | }
38 | }
39 | h1, h2, h3 {
40 | margin-top: $spacing-unit * 2;
41 | }
42 | h3, h4 {
43 | em {
44 | color: $grey9;
45 | }
46 | }
47 | h1 {
48 | margin-top: 0;
49 | margin-bottom: $spacing-unit;
50 | font-size: 22px;
51 | line-height: 30px;
52 | }
53 | h2 {
54 | margin-bottom: $spacing-unit / 2;
55 | font-size: 18px;
56 | line-height: 24px;
57 | }
58 | h3 {
59 | margin-bottom: 12px;
60 | font-size: 14px;
61 | line-height: 22px;
62 | }
63 | h4 {
64 | margin-top: $spacing-unit;
65 | margin-bottom: 8px;
66 | }
67 | h2 + h3 {
68 | margin-top: 0;
69 | }
70 | img {
71 | border-radius: 3px;
72 | }
73 | p + .highlight {
74 | margin-top: $spacing-unit;
75 | }
76 | ul, ol {
77 | margin-left: $spacing-unit;
78 | }
79 | li {
80 | margin-bottom: $spacing-unit / 2;
81 |
82 | &:last-child {
83 | margin-bottom: 0;
84 | }
85 | > p, > ul, > ol, table {
86 | margin-top: $spacing-unit / 2;
87 | margin-bottom: 0;
88 |
89 | + p {
90 | margin-top: $spacing-unit / 2;
91 | }
92 | }
93 | }
94 | ul {
95 | list-style-type: disc;
96 | }
97 | ol {
98 | list-style-type: decimal;
99 | }
100 | table {
101 | width: 100%;
102 | margin-bottom: $spacing-unit;
103 |
104 | + table {
105 | margin-top: -$spacing-unit - 1;
106 |
107 | thead {
108 | background: #fcfcfc;
109 | }
110 |
111 | th {
112 | font-weight: 400;
113 | }
114 | }
115 | thead {
116 | background: #f9f9f9;
117 | }
118 | th {
119 | font-weight: 600;
120 | font-family: $font-family-base;
121 | text-align: left;
122 | }
123 | th, td {
124 | padding: 13px 20px;
125 | border: 1px solid #ddd;
126 | }
127 | th, td:first-child {
128 | vertical-align: top;
129 | color: #333;
130 | }
131 | td {
132 | &:first-child {
133 | width: 30%;
134 | }
135 |
136 | code {
137 | word-break: break-word;
138 | }
139 | }
140 | }
141 | }
142 | .Content-inner--withsubheader {
143 | @media (min-width: $layout-m) {
144 | margin-top: $spacing-unit * 3 + 77px;
145 | }
146 | }
147 | .Content-inner--withlist {
148 | // margin-top: 0;
149 | margin-bottom: $spacing-unit * 2;
150 |
151 | h2 {
152 | margin-top: 0;
153 | }
154 | }
155 | .Content-inner--afterlist {
156 | margin-top: 0;
157 | }
158 | .Content-meta {
159 | color: $grey9;
160 | }
161 |
--------------------------------------------------------------------------------
/_app/_scss/components/_dropdown.scss:
--------------------------------------------------------------------------------
1 | // Dropdown
2 | // --------------------------------------------------
3 |
4 | .Dropdown {
5 | position: relative;
6 | }
7 | .Dropdown-arrow {
8 | vertical-align: middle;
9 | }
10 | .Dropdown-inner {
11 | display: none;
12 | position: absolute;
13 | z-index: 10;
14 | top: 32px;
15 | right: -114px;
16 | min-width: 220px;
17 | background: #fff;
18 | box-shadow: 0 1px 3px rgba(#000, .2);
19 | border-radius: 4px;
20 | transition: all .3s;
21 | z-index: 30;
22 |
23 | &:before {
24 | content: "";
25 | position: absolute;
26 | width: 0;
27 | height: 0;
28 | left: 50%;
29 | margin-left: -14px;
30 | top: -16px;
31 | border: 8px solid transparent;
32 | border-bottom: 8px solid rgba(#000, .1);
33 | }
34 |
35 | &:after {
36 | content: "";
37 | position: absolute;
38 | width: 0;
39 | height: 0;
40 | left: 50%;
41 | margin-left: -12px;
42 | top: -12px;
43 | border: 6px solid transparent;
44 | border-bottom: 6px solid #fff;
45 | }
46 |
47 | &.is-active {
48 | display: block;
49 | }
50 | }
51 | .Dropdown-content {
52 | padding: 12px 20px;
53 | }
54 | .Dropdown-item {
55 | line-height: 26px;
56 | font-size: 13px;
57 |
58 | &.is-active {
59 | .Dropdown-link {
60 | color: $grey2;
61 | border-radius: 3px;
62 | }
63 | }
64 | }
65 | .Dropdown-link {
66 | display: inline-block;
67 | color: $blue1;
68 | transition: color .2s ease;
69 |
70 | &:hover {
71 | text-decoration: none;
72 | color: $grey2;
73 | }
74 | }
75 | @media (max-width: $layout-m) {
76 | .Dropdown-item {
77 | &.is-active {
78 | .Dropdown-link {
79 | color: lighten($grey9, 5%);
80 | }
81 | }
82 | }
83 | .Dropdown-link {
84 | color: $grey9;
85 |
86 | &:hover {
87 | color: lighten($grey9, 5%);
88 | }
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/_app/_scss/components/_features.scss:
--------------------------------------------------------------------------------
1 | // Features
2 | // --------------------------------------------------
3 |
4 | .Feature-item {
5 | display: block;
6 | padding: 0 $spacing-unit;
7 | width: 100%;
8 | margin-bottom: $spacing-unit * 3;
9 | color: $grey9;
10 |
11 | &.is-active {
12 | .Feature-inner--withlink {
13 | transition: all .2s;
14 |
15 | &:hover {
16 | .Feature-circle {
17 | border-color: #2ca8e1;
18 | color: #2ca8e1;
19 | }
20 |
21 | .Feature-text {
22 | color: $grey2;
23 | }
24 | }
25 |
26 | .Feature-circle {
27 | border-color: #2ca8e1;
28 | color: #2ca8e1;
29 | }
30 |
31 | .Feature-text {
32 | color: $grey2;
33 | }
34 | }
35 | }
36 |
37 | @media (max-width: $layout-m) {
38 | margin-bottom: $spacing-unit;
39 | }
40 | }
41 | .Feature-item--short {
42 | margin-bottom: $spacing-unit;
43 | }
44 | .Feature-inner {
45 | display: block;
46 | }
47 | .Feature-inner--withlink {
48 | transition: all .2s;
49 |
50 | &:hover {
51 | text-decoration: none;
52 |
53 | .Feature-text {
54 | color: $grey6;
55 | }
56 |
57 | .Feature-circle {
58 | border-color: #ccc;
59 | color: #ccc;
60 | }
61 | }
62 |
63 | .Feature-text {
64 | color: $grey9;
65 | }
66 | }
67 | .Feature-inner--withborder {
68 | transition: all .2s;
69 | border: 1px solid #ddd;
70 | border-radius: 4px;
71 | overflow: hidden;
72 |
73 | &.Feature-inner--withlink {
74 | &:hover {
75 | border: 1px solid #ccc;
76 | }
77 | }
78 | }
79 | .Feature-media {
80 | width: 48px;
81 | height: 48px;
82 | margin-bottom: $spacing-unit * 2;
83 | }
84 | .Feature-text {
85 | font-size: 15px;
86 | line-height: 26px;
87 | color: $grey6;
88 | transition: all .2s;
89 | }
90 | .Feature-text--cWhite {
91 | color: #fff;
92 | }
93 |
94 | @media (max-width: $layout-m) {
95 | .Features {
96 | margin-bottom: 40px;
97 | }
98 |
99 | .Feature-media,
100 | .Feature-content {
101 | float: left;
102 | }
103 | .Feature-media {
104 | margin-bottom: 0;
105 | margin-right: $spacing-unit;
106 | }
107 | .Feature-content {
108 | width: calc(100% - 68px);
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/_app/_scss/components/_footer.scss:
--------------------------------------------------------------------------------
1 | // Footer
2 | // --------------------------------------------------
3 |
4 | .Footer {
5 | background: #fff;
6 | padding-top: 120px;
7 |
8 | @media (max-width: $layout-l) {
9 | padding-top: 60px;
10 | }
11 | }
12 | .Footer--cGrey {
13 | background: #f9f9f9;
14 | }
15 | .Footer-column {
16 | padding-bottom: 40px;
17 | }
18 | .Footer-column--mobile {
19 | border-top: 1px solid #eee;
20 | }
21 | .Footer-title {
22 | font-weight: 600;
23 | color: $grey2;
24 | }
25 | .Footer-item {
26 | position: relative;
27 | margin-bottom: 6px;
28 | }
29 | .Footer-social {
30 | line-height: 40px;
31 |
32 | @media (max-width: $layout-m) {
33 | margin-top: 20px;
34 | }
35 | }
36 | .Newsletter {
37 | position: relative;
38 |
39 | .hs-form {
40 | margin-right: 0 !important;
41 | padding-left: 0;
42 |
43 | .input {
44 | margin-right: 0;
45 | margin-bottom: 0;
46 | }
47 |
48 | .hs-input {
49 | padding-right: 88px;
50 | }
51 | }
52 | }
53 | .hs-newsletter {
54 | position: absolute;
55 | top: 0px;
56 | right: 0;
57 | bottom: 0px;
58 | width: 100px;
59 | border: 0;
60 | font: 400 13px $font-family-base;
61 | text-transform: uppercase;
62 | background: #3AA9E3;
63 | color: #fff;
64 | border-radius: 0 4px 4px 0;
65 | transition: all .15s;
66 | cursor: pointer;
67 | outline: none;
68 | text-transform: none;
69 |
70 | &:hover {
71 | background: darken($blue1, 5%);
72 | color: #fff;
73 | }
74 | }
75 | .Footer-item--mobile {
76 | border-bottom: 1px solid #eee;
77 | display: block;
78 | padding: 13px 0;
79 | margin-bottom: 0;
80 |
81 | .Footer-link {
82 | display: block;
83 | }
84 | }
85 | .Footer-link {
86 | transition: color .2s ease;
87 |
88 | &:hover {
89 | color: $grey2;
90 | text-decoration: none;
91 | }
92 | }
93 | .Footer-logo,
94 | .Footer-credits {
95 | display: inline-block;
96 | vertical-align: middle;
97 | }
98 | .Footer-credits {
99 | line-height: 18px;
100 | text-align: left;
101 | color: $grey9;
102 | }
103 | .Colophon {
104 | padding-top: 13px;
105 | text-align: right;
106 |
107 | @media (max-width: $layout-m) {
108 | padding-top: 0;
109 | text-align: left;
110 | }
111 | }
112 | .Colophon-item {
113 | display: inline-block;
114 | }
115 | .Footer-arrow {
116 | position: absolute;
117 | right: 0;
118 | top: 18px;
119 | color: #ddd;
120 | }
121 |
--------------------------------------------------------------------------------
/_app/_scss/components/_grid.scss:
--------------------------------------------------------------------------------
1 | // Grid
2 | //
3 | // - max-width is needed for IE
4 | //
5 | // --------------------------------------------------
6 |
7 | .Grid {
8 | display: flex;
9 | }
10 | .Grid-inner {
11 | display: flex;
12 | flex-wrap: wrap;
13 | flex: 1;
14 | max-width: calc(100% + 40px);
15 | margin-right: -$spacing-unit;
16 | margin-left: -$spacing-unit;
17 | }
18 | .Grid-inner--hcenter {
19 | justify-content: center;
20 | }
21 | .Grid-inner--vcenter {
22 | align-items: center;
23 | }
24 | .Grid-inner--between {
25 | align-items: center;
26 | justify-content: space-between;
27 | }
28 | .Grid-cell {
29 | padding-right: $spacing-unit;
30 | padding-left: $spacing-unit;
31 | }
32 | .Grid-cell--padding {
33 | padding-top: $spacing-unit * 2;
34 | padding-bottom: $spacing-unit * 2;
35 | }
36 | .Grid-inner--nopadding {
37 | margin-right: 0;
38 | margin-left: 0;
39 |
40 | > .Grid-cell {
41 | padding-left: 0;
42 | padding-right: 0;
43 | }
44 | }
45 | .Grid-inner--shortpadding {
46 | margin-right: -$spacing-unit / 2;
47 | margin-left: -$spacing-unit / 2;
48 |
49 | > .Grid-cell {
50 | padding-right: $spacing-unit / 2;
51 | padding-left: $spacing-unit / 2;
52 | }
53 | }
54 | .Grid-cell--col1 {
55 | flex: 0 0 8.3334%;
56 | max-width: 8.3334%;
57 | }
58 | .Grid-cell--col2 {
59 | flex: 0 0 16.6667%;
60 | max-width: 16.6667%;
61 | }
62 | .Grid-cell--col3 {
63 | flex: 0 0 25%;
64 | max-width: 25%;
65 | }
66 | .Grid-cell--col4 {
67 | flex: 0 0 33.3334%;
68 | max-width: 33.3334%;
69 | }
70 | .Grid-cell--col5 {
71 | flex: 0 0 41.6665%;
72 | max-width: 41.6665%;
73 | }
74 | .Grid-cell--col6 {
75 | flex: 0 0 50%;
76 | max-width: 50%;
77 | }
78 | .Grid-cell--col7 {
79 | flex: 0 0 58.3331%;
80 | max-width: 58.331%;
81 | }
82 | .Grid-cell--col8 {
83 | flex: 0 0 66.6666%;
84 | max-width: 66.6666%;
85 | }
86 | .Grid-cell--col9 {
87 | flex: 0 0 75%;
88 | max-width: 75%;
89 | }
90 | .Grid-cell--col10 {
91 | flex: 0 0 83.333%;
92 | max-width: 83.33%;
93 | }
94 | .Grid-cell--col11 {
95 | flex: 0 0 91.6666%;
96 | max-width: 91.6666%;
97 | }
98 | .Grid-cell--col12 {
99 | flex: 0 0 100%;
100 | max-width: 100%;
101 | }
102 |
103 | @media (max-width: $layout-l) {
104 | .Grid-cell--col4--tablet {
105 | flex: 0 0 33.3334%;
106 | max-width: 33.3334%;
107 | }
108 | .Grid-cell--col6--tablet {
109 | flex: 0 0 50%;
110 | max-width: 50%;
111 | }
112 | .Grid-cell--col8--tablet {
113 | flex: 0 0 66.6666%;
114 | max-width: 66.6666%;
115 | }
116 | .Grid-cell--col12--tablet {
117 | flex: 0 0 100%;
118 | max-width: 100%;
119 | }
120 | }
121 | @media (max-width: $layout-m) {
122 | .Grid-cell--col6--mobile {
123 | flex: 0 0 50%;
124 | max-width: 50%;
125 | }
126 | .Grid-cell--col12--mobile {
127 | flex: 0 0 100%;
128 | max-width: 100%;
129 | }
130 | }
131 | @media (max-width: $layout-s) {
132 | .Grid-cell--col6--mobile {
133 | flex: 0 0 100%;
134 | max-width: 100%;
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/_app/_scss/components/_header.scss:
--------------------------------------------------------------------------------
1 | // Header
2 | // --------------------------------------------------
3 |
4 | .Header {
5 | display: flex;
6 | flex-direction: column;
7 | position: relative;
8 | min-height: 500px;
9 | background: $blue1;
10 | }
11 |
12 | // Sizes
13 | .Header--short {
14 | min-height: 0;
15 | }
16 | .Header--tall {
17 | min-height: 550px;
18 | }
19 | .Header--full80 {
20 | height: 80vh;
21 | }
22 | .Header--full100 {
23 | height: 100vh;
24 | }
25 | .Header--withbrands {
26 | height: calc(100vh - 86px);
27 | }
28 |
29 | // Colors
30 | .Header--dark {
31 | background: $grey2;
32 | }
33 | .Header--cGreen {
34 | background: $green1;
35 | }
36 | .Header--cBlue {
37 | background: $blue1;
38 | }
39 | .Header--cWhite {
40 | background: #f9f9f9;
41 | }
42 | .Header--gBlue {
43 | background-image: linear-gradient(-45deg, $blue1 0%, $blue2 100%);
44 | }
45 | .Header--gSkyBlue {
46 | background-image: linear-gradient(-45deg, $blue2 0%, $green2 100%);
47 | }
48 | .Header--gPurple {
49 | background-image: linear-gradient(135deg, $purple1 0%, $purple2 100%);
50 | }
51 | .Header--gGreen {
52 | background-image: linear-gradient(135deg, $green3 0%, $green4 100%);
53 | }
54 | .Header-background {
55 | @include cover;
56 | }
57 | .Header-background--cover {
58 | background-size: cover;
59 | background-position: center;
60 | }
61 | .Header-background--academy {
62 | background: url("../img/backgrounds/academy.svg") center 77px repeat-x;
63 | opacity: .25;
64 |
65 | .no-svg {
66 | background-image: url("../img/backgrounds/academy.png");
67 | }
68 | }
69 | .Header-inner {
70 | padding: $spacing-unit * 4 0;
71 | }
72 | .Header-inner--vcenter {
73 | display: flex;
74 | flex-grow: 1;
75 | align-items: center;
76 | margin-top: -31px;
77 | }
78 |
--------------------------------------------------------------------------------
/_app/_scss/components/_icons.scss:
--------------------------------------------------------------------------------
1 | // Icons
2 | // --------------------------------------------------
3 |
4 | // Sizes
5 | $sizes: (3, 5, 6, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 36, 48, 60);
6 |
7 | @each $size in $sizes {
8 | .Icon--s#{$size} {
9 | font-size: #{$size}px;
10 | }
11 | }
12 |
13 | // Colors
14 | .Icon--cWhite {
15 | color: #FFF;
16 | }
17 | .Icon--cBlue {
18 | color: #3AA9E3;
19 | }
20 | .Icon--cGreen {
21 | color: #9CCC65;
22 | }
23 | .Icon--cGrey {
24 | color: #ccc;
25 | }
26 | .Icon--cGrey2 {
27 | color: $grey2;
28 | }
29 | .Icon--cGrey9 {
30 | color: $grey9;
31 | }
32 |
33 | // Shame
34 | .Icon--close {
35 | position: relative;
36 | top: -6px;
37 | }
38 | .Icon--twitter,
39 | .Icon--facebook,
40 | .Icon--linkedin {
41 | position: relative;
42 | top: -2px;
43 | }
44 |
--------------------------------------------------------------------------------
/_app/_scss/components/_lists.scss:
--------------------------------------------------------------------------------
1 | // Lists
2 | // --------------------------------------------------
3 |
4 | .List {
5 | margin-bottom: $spacing-unit * 2;
6 |
7 | &:last-child {
8 | margin-bottom: 0;
9 | }
10 | }
11 | .List-item {
12 | border-top: 1px solid #EEE;
13 |
14 | &:last-child {
15 | border-bottom: 1px solid #EEE;
16 | }
17 | }
18 | .List-link {
19 | @include clearfix;
20 | display: block;
21 | line-height: 58px;
22 | transition: all .2s;
23 |
24 | &:hover {
25 | text-decoration: none;
26 | color: $grey2;
27 | }
28 | }
29 | .List-icon {
30 | position: relative;
31 | top: -2px;
32 | margin-right: $spacing-unit;
33 | vertical-align: middle;
34 | }
35 | .List-content {
36 | @include ellipsis;
37 | float: left;
38 | width: calc(100% - 130px);
39 | overflow: hidden;
40 | }
41 | .List-info {
42 | float: right;
43 | width: 80px;
44 | text-align: right;
45 | color: $grey9;
46 | }
47 |
--------------------------------------------------------------------------------
/_app/_scss/components/_logo.scss:
--------------------------------------------------------------------------------
1 | // Logo
2 | // --------------------------------------------------
3 |
4 | .Logo {
5 | display: inline-block;
6 | width: 96px;
7 | height: 36px;
8 | line-height: 40px;
9 | text-align: center;
10 | border-radius: 4px;
11 | }
12 | .Logo--light {
13 | color: #FFF;
14 | }
15 | .Logo--dark {
16 | color: $grey2;
17 | }
18 | .Logo--header {
19 | margin-right: $spacing-unit * 2;
20 |
21 | @media (max-width: $layout-l) {
22 | margin-right: $spacing-unit;
23 | }
24 | }
25 | .Logo--footer {
26 | margin-right: $spacing-unit;
27 | }
28 |
--------------------------------------------------------------------------------
/_app/_scss/components/_navbar.scss:
--------------------------------------------------------------------------------
1 | // Navbar
2 | // --------------------------------------------------
3 | .Navbar,
4 | .Breadcrumbs {
5 | @include clearfix;
6 | position: relative;
7 | z-index: 30;
8 | padding: $spacing-unit 0;
9 | font-size: 13px;
10 | line-height: 14px;
11 | }
12 | .Navbar-header {
13 | float: left;
14 |
15 | @media (max-width: $layout-m) {
16 | width: 100%;
17 | }
18 | }
19 | .Navbar-item,
20 | .Breadcrumbs-item {
21 | position: relative;
22 | display: inline-block;
23 |
24 | &:first-child {
25 | margin-left: 0;
26 | }
27 | }
28 | .Navbar-item {
29 | margin-left: $spacing-unit * 2;
30 | font-size: 13px;
31 |
32 | @media (max-width: $layout-l) {
33 | margin-left: $spacing-unit;
34 | }
35 | }
36 | .Breadcrumbs-item {
37 | margin-left: $spacing-unit;
38 | font-size: 13px;
39 | font-weight: 500;
40 |
41 | @media (max-width: $layout-m) {
42 | width: 100%;
43 | margin-left: 0;
44 | }
45 | }
46 | .Navbar-link,
47 | .Breadcrumbs-link {
48 | display: inline-block;
49 | line-height: 1;
50 | color: #fff;
51 | transition: all .2s;
52 |
53 | &:hover {
54 | text-decoration: none;
55 | color: rgba(#fff, .6);
56 | }
57 |
58 | span {
59 | display: inline-block;
60 | padding-bottom: 12px;
61 | padding-top: 12px;
62 | }
63 | }
64 | .Navbar-link { font-weight: 600; }
65 |
66 | .Navbar-button,
67 | .Navbar-signup {
68 | display: none;
69 | float: right;
70 |
71 | @media (max-width: $layout-m) {
72 | display: block;
73 | }
74 | }
75 | .Navbar-button {
76 | margin-top: 8px;
77 | }
78 | .Navbar-inner--left,
79 | .Breadcrumbs-inner--left {
80 | float: left;
81 | }
82 | .Navbar-inner--right,
83 | .Breadcrumbs-inner--right {
84 | float: right;
85 |
86 | @media (max-width: $layout-m) {
87 | float: left;
88 | }
89 | }
90 | .Navbar--cWhite {
91 | .Logo--header {
92 | color: $grey2;
93 | }
94 | .Navbar-link {
95 | color: $grey2;
96 |
97 | &:hover {
98 | color: rgba($grey2, .6);
99 | }
100 |
101 | &.is-hover--dark {
102 | &:hover {
103 | color: #fff;
104 | }
105 | }
106 | }
107 | }
108 |
109 | // Navbar fixed
110 | .Navbar--fixed {
111 | position: fixed;
112 | top: -80px;
113 | z-index: 30;
114 | width: 100%;
115 | border-bottom: 1px solid #eee;
116 | background: #fff;
117 | opacity: 0;
118 | transition: all .2s;
119 |
120 | &.is-active {
121 | top: 0;
122 | opacity: 1;
123 | }
124 |
125 | @media (max-width: $layout-m) {
126 | .Navbar-collapse {
127 | display: none;
128 | }
129 | }
130 | }
131 |
132 | @media (max-width: $layout-m) {
133 | .Navbar-collapse {
134 | position: absolute;
135 | top: 0;
136 | right: -80%;
137 | width: 80%;
138 | padding: 0 $spacing-unit;
139 | }
140 | .Navbar-inner {
141 | display: none;
142 | }
143 | .Navbar-button {
144 | display: block;
145 | }
146 | .Navbar-header {
147 | float: none;
148 | }
149 | .Navbar-inner--button {
150 | border-bottom: 1px solid rgba(#fff, .1);
151 | margin-bottom: 10px;
152 | padding-bottom: 18px;
153 | }
154 | .Navbar-item--menu {
155 | display: block;
156 | margin: 0 0 $spacing-unit;
157 | }
158 | .Navbar-item--button {
159 | float: left;
160 | width: 50%;
161 | margin-left: 0;
162 | }
163 | .Navbar-link--button {
164 | display: block;
165 | text-align: center;
166 | }
167 | }
168 |
--------------------------------------------------------------------------------
/_app/_scss/components/_offcanvas.scss:
--------------------------------------------------------------------------------
1 | // Offcanvas
2 | // --------------------------------------------------
3 | .Offcanvas {
4 | background-color: $grey2;
5 | }
6 | @media (max-width: $layout-m) {
7 | .Offcanvas-inner {
8 | position: relative;
9 | right: 0;
10 | width: 100%;
11 | transition: all .2s ease-out;
12 |
13 | &.is-active {
14 | right: 80%;
15 |
16 | .Navbar--cWhite {
17 | .Button--cGrey {
18 | border-color: rgba(#fff, .3);
19 |
20 | &:hover {
21 | background: #fff;
22 | }
23 | }
24 | .Navbar-link {
25 | color: #fff;
26 |
27 | &:hover {
28 | color: rgba(#fff, .6);
29 | }
30 |
31 | &.is-hover--dark {
32 | &:hover {
33 | color: $grey2;
34 | }
35 | }
36 | }
37 | }
38 | .Navbar-inner {
39 | display: block;
40 | width: 100%;
41 | }
42 | .Navbar-inner--buttons {
43 | border-bottom: 1px solid rgba(#fff, .1);
44 | margin-bottom: 10px;
45 | padding-bottom: 18px;
46 | }
47 | .Dropdown-inner {
48 | display: block;
49 | position: relative;
50 | top: 0;
51 | right: 0;
52 | min-width: 0;
53 | background: transparent;
54 | box-shadow: none;
55 | border-radius: 0;
56 |
57 | &:before,
58 | &:after {
59 | display: none;
60 | }
61 | }
62 | .Dropdown-content {
63 | padding: 0;
64 | }
65 | .Dropdown-arrow {
66 | display: none;
67 | }
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/_app/_scss/components/_progress.scss:
--------------------------------------------------------------------------------
1 | // Progress
2 | // --------------------------------------------------
3 |
4 | .Progress,
5 | .Progress-inner {
6 | height: 4px;
7 | }
8 | .Progress {
9 | display: inline-block;
10 | width: 220px;
11 | margin-right: 12px;
12 | vertical-align: middle;
13 | background: #DDD;
14 | border-radius: 4px;
15 | overflow:hidden;
16 | }
17 | .Progress-inner {
18 | background: #85C77C;
19 | }
--------------------------------------------------------------------------------
/_app/_scss/components/_sections.scss:
--------------------------------------------------------------------------------
1 | // Sections
2 | // --------------------------------------------------
3 |
4 | .Section {
5 | position: relative;
6 | padding: $spacing-unit * 6 0;
7 | background: #fff;
8 | overflow: hidden;
9 |
10 | @media (max-width: $layout-m) {
11 | padding: $spacing-unit * 3 0;
12 | }
13 | }
14 | .Section--short {
15 | padding: $spacing-unit * 3 0 $spacing-unit * 6;
16 | }
17 | .Section--sLarge {
18 | min-height: 720px;
19 | }
20 | .Section--sMedium {
21 | min-height: 480px;
22 | }
23 | .Section--withFeatures {
24 | padding-bottom: $spacing-unit * 3;
25 |
26 | @media (max-width: $layout-m) {
27 | padding-bottom: $spacing-unit * 2;
28 | }
29 | }
30 | .Section--withoutBottom {
31 | padding-bottom: 0;
32 | }
33 | .Section--nopadding {
34 | padding-top: 0;
35 | }
36 |
37 | // Sizes
38 | .Section--brands {
39 | padding: $spacing-unit 0;
40 | }
41 |
42 | // Colors
43 | .Section--cDark {
44 | background: $grey2;
45 | }
46 | .Section--cGrey {
47 | background: #f9f9f9;
48 | }
49 | .Section--gMap {
50 | background-image: url('../img/backgrounds/signup/map.svg'), linear-gradient(0deg, #3BA9E2 0%, #2A7BBF 100%);
51 | background-size: cover;
52 | background-position: center;
53 | }
54 | .Section-background {
55 | @include cover;
56 | }
57 | .Section-text {
58 | font-size: 18px;
59 | line-height: 32px;
60 | color: $grey6;
61 | }
62 | .Section-list {
63 | list-style-type: disc;
64 | margin-left: 20px;
65 | }
66 | .Section-text--cWhite {
67 | color: #fff;
68 | }
69 | .Section-sep {
70 | height: 1px;
71 | background: #ddd;
72 | }
73 | .Section-offset--left {
74 | transform: translateX(-80px);
75 | }
76 | .Section-offset--left--double {
77 | transform: translateX(-160px);
78 | }
79 | .Section-offset--left--triple {
80 | transform: translateX(-320px);
81 | }
82 | .Section-offset--right {
83 | transform: translateX(80px);
84 | }
85 | .Section-offset--right--double {
86 | transform: translateX(160px);
87 | }
88 | .Section-offset--right--triple {
89 | transform: translateX(320px);
90 | }
91 |
92 | @media (max-width: $layout-l) {
93 | .Section-offset--left,
94 | .Section-offset--right,
95 | .Section-offset--left--double,
96 | .Section-offset--right--double,
97 | .Section-offset--left--triple,
98 | .Section-offset--right--triple {
99 | transform: none;
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/_app/_scss/components/_separator.scss:
--------------------------------------------------------------------------------
1 | // Separator
2 | // --------------------------------------------------
3 |
4 | hr, .Sep {
5 | display: block;
6 | border: 0;
7 | height: 1px;
8 | background: #eee;
9 | margin-top: 40px;
10 | margin-bottom: 0;
11 | }
12 |
--------------------------------------------------------------------------------
/_app/_scss/components/_sidebar.scss:
--------------------------------------------------------------------------------
1 | // Sidebar
2 | // --------------------------------------------------
3 |
4 | .Sidebar {
5 | padding-top: $spacing-unit * 3;
6 | }
7 | .Sidebar.Sidebar--withsubheader {
8 | @media (min-width: $layout-m) {
9 | padding-top: $spacing-unit * 3 + 77px;
10 | }
11 | }
12 | .Sidebar-title {
13 | margin-top: $spacing-unit;
14 |
15 | @media (max-width: $layout-m) {
16 | margin-top: 0;
17 | }
18 | }
19 | .Sidebar-content {
20 | margin-bottom: $spacing-unit * 2;
21 | }
22 | .Sidebar-media {
23 | margin-bottom: $spacing-unit;
24 | }
25 | .Sidebar-icon {
26 | margin-right: $spacing-unit / 2;
27 | }
28 | .Sidebar-item {
29 | &.is-active {
30 | > .Sidebar-link {
31 | color: $grey2;
32 | }
33 | }
34 | }
35 | .Sidebar-link {
36 | @include ellipsis;
37 | display: block;
38 | transition: all .2s;
39 |
40 | &:hover {
41 | text-decoration: none;
42 | color: $grey2;
43 | }
44 | }
45 | .Sidebar-link.Sidebar-link--folder {
46 | font-weight: 600;
47 | margin-bottom: $spacing-unit / 2;
48 | }
49 | .Sidebar-list {
50 | margin-bottom: $spacing-unit * 2;
51 |
52 | &:last-child {
53 | margin-bottom: 0;
54 | }
55 | }
56 | .Sidebar-list--notitle {
57 | padding-top: 8px;
58 | }
59 | .Subsidebar {
60 | margin-left: $spacing-unit;
61 | margin-top: $spacing-unit / 2;
62 | margin-bottom: $spacing-unit / 2;
63 | }
64 | .Subsidebar-list {
65 | display: none;
66 | margin-left: $spacing-unit;
67 | margin-top: $spacing-unit / 2;
68 | margin-bottom: $spacing-unit / 2;
69 |
70 | &.is-active {
71 | display: block;
72 | }
73 | }
74 | // https://github.com/wilddeer/stickyfill
75 | .sticky {
76 | position: -webkit-sticky;
77 | position: sticky;
78 | top: 0;
79 | }
80 |
--------------------------------------------------------------------------------
/_app/_scss/components/_sidemenu.scss:
--------------------------------------------------------------------------------
1 | // Sidemenu
2 | // --------------------------------------------------
3 |
4 | .Sidemenu-title,
5 | .Sidemenu-itemLink {
6 | font-size: 12px;
7 | font-weight: 300;
8 | text-transform: uppercase;
9 | }
10 |
11 | .Sidemenu-title {
12 | color: #333;
13 | margin-top: 40px;
14 | }
15 |
16 | .Sidemenu-itemLink {
17 | padding: 10px 0;
18 | text-decoration: none;
19 |
20 | &:hover {
21 | color: #3992C0;
22 | text-decoration: none;
23 | }
24 | }
--------------------------------------------------------------------------------
/_app/_scss/components/_subheader.scss:
--------------------------------------------------------------------------------
1 | // Header
2 | // --------------------------------------------------
3 |
4 | .Subheader {
5 | position: relative;
6 | z-index: 20;
7 | border-bottom: 1px solid #EEE;
8 | background: #F9F9F9;
9 | }
10 | .Subheader.Subheader--fixed {
11 | @media (min-width: $layout-m) {
12 | position: absolute;
13 | top: 0;
14 | width: 100%;
15 |
16 | &.is-fixed {
17 | position: fixed;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/_app/_scss/components/_titles.scss:
--------------------------------------------------------------------------------
1 | // Titles
2 | // --------------------------------------------------
3 |
4 | .Title {
5 | color: $grey2;
6 |
7 | span {
8 | font-weight: 300;
9 | color: $grey9;
10 | }
11 | }
12 |
13 | // Sizes
14 | .Title--header {
15 | font-size: 44px;
16 | line-height: 56px;
17 | letter-spacing: 1px;
18 | color: #fff;
19 |
20 | @media (max-width: $layout-l) {
21 | font-size: 32px;
22 | line-height: 48px;
23 | }
24 | }
25 | .Title--sectionLarge {
26 | font-size: 32px;
27 | line-height: 48px;
28 |
29 | @media (max-width: $layout-l) {
30 | font-size: 24px;
31 | line-height: 36px;
32 | }
33 | }
34 | .Title--sectionMedium {
35 | margin-bottom: $spacing-unit;
36 | font-size: 24px;
37 | line-height: 36px;
38 | }
39 | .Title--feature {
40 | margin-bottom: $spacing-unit / 2;
41 | font-size: 18px;
42 | line-height: 26px;
43 | }
44 | .Title--card {
45 | font-size: 16px;
46 | line-height: 24px;
47 |
48 | // @media (max-width: $layout-l) {
49 | // font-size: 13px;
50 | // line-height: 20px;
51 | // }
52 | }
53 | .Title--small {
54 | font-size: 13px;
55 | line-height: 19px;
56 | letter-spacing: 1px;
57 | color: rgba(#fff, .6);
58 | text-transform: uppercase;
59 | }
60 | .Title-link {
61 | color: $grey2;
62 | transition: all .2s;
63 |
64 | &:hover {
65 | text-decoration: none;
66 | color: darken($grey2, 5%);
67 | }
68 | }
69 | .Title--quote {
70 | font-weight: 300;
71 | font-style: italic;
72 | }
73 | // Colors
74 | .Title--cWhite {
75 | color: #fff;
76 | }
77 | .Title--cGrey9 {
78 | color: $grey9;
79 | }
80 | .Title--cGrey2 {
81 | color: $grey2;
82 | }
83 | .Title-permalink {
84 | position: relative;
85 | left: .5em;
86 | opacity: 0;
87 | font-size: 12px;
88 | transition: opacity .2s ease-in-out .1s;
89 | }
90 |
--------------------------------------------------------------------------------
/_app/_scss/main.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 |
3 | // Non-rendering scss
4 | @import
5 | "variables",
6 | "mixins"
7 | ;
8 |
9 | // Layout
10 | @import
11 | "vendor",
12 | "base",
13 | "components",
14 | "academy"
15 | ;
16 |
17 | // Utilities
18 | @import "utilities";
19 |
--------------------------------------------------------------------------------
/_app/_scss/mixins/_button.scss:
--------------------------------------------------------------------------------
1 | // Button
2 | // --------------------------------------------------
3 |
4 | @mixin button($color1, $color2) {
5 | color: $color1;
6 | border-color: rgba($color1, .3);
7 |
8 | &:hover {
9 | border-color: rgba($color1, .4);
10 | }
11 |
12 | &.is-highlight {
13 | background: $color1;
14 | color: $color2;
15 |
16 | &:hover {
17 | opacity: .9;
18 | }
19 | }
20 |
21 | &.is-hover {
22 | &:hover {
23 | background: $color1;
24 | color: $color2;
25 | }
26 | }
27 |
28 | &.is-hover--dark {
29 | &:hover {
30 | color: $grey2;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/_app/_scss/mixins/_clearfix.scss:
--------------------------------------------------------------------------------
1 | // Clearfix
2 | // --------------------------------------------------
3 |
4 | @mixin clearfix {
5 | &:after {
6 | content: "";
7 | display: table;
8 | clear: both;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/_app/_scss/mixins/_cover.scss:
--------------------------------------------------------------------------------
1 | // Cover
2 | // --------------------------------------------------
3 |
4 | @mixin cover {
5 | position: absolute;
6 | top: 0;
7 | right: 0;
8 | bottom: 0;
9 | left: 0;
10 | }
11 |
--------------------------------------------------------------------------------
/_app/_scss/mixins/_ellipsis.scss:
--------------------------------------------------------------------------------
1 | // Ellipsis
2 | // --------------------------------------------------
3 |
4 | @mixin ellipsis {
5 | white-space: nowrap;
6 | overflow: hidden;
7 | text-overflow: ellipsis;
8 | }
9 |
--------------------------------------------------------------------------------
/_app/_scss/mixins/_retina-background.scss:
--------------------------------------------------------------------------------
1 | // Retina background
2 | // --------------------------------------------------
3 |
4 | @mixin retina-background($image) {
5 | @media (min--moz-device-pixel-ratio: 1.3),
6 | (-o-min-device-pixel-ratio: 2.6/2),
7 | (-webkit-min-device-pixel-ratio: 1.3),
8 | (min-device-pixel-ratio: 1.3),
9 | (min-resolution: 1.3dppx) {
10 | background-image: url($image);
11 | }
12 | }
13 |
14 | @mixin retina-background-size($image, $width, $height) {
15 | @media (min--moz-device-pixel-ratio: 1.3),
16 | (-o-min-device-pixel-ratio: 2.6/2),
17 | (-webkit-min-device-pixel-ratio: 1.3),
18 | (min-device-pixel-ratio: 1.3),
19 | (min-resolution: 1.3dppx) {
20 | background-image: url($image);
21 | background-size: $width $height;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/_app/_scss/vendor/_reset.scss:
--------------------------------------------------------------------------------
1 | /* http://meyerweb.com/eric/tools/css/reset/
2 | v2.0 | 20110126
3 | License: none (public domain)
4 | */
5 |
6 | html, body, div, span, applet, object, iframe,
7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
8 | a, abbr, acronym, address, big, cite, code,
9 | del, dfn, em, img, ins, kbd, q, s, samp,
10 | small, strike, strong, sub, sup, tt, var,
11 | b, u, i, center,
12 | dl, dt, dd, ol, ul, li,
13 | fieldset, form, label, legend,
14 | table, caption, tbody, tfoot, thead, tr, th, td,
15 | article, aside, canvas, details, embed,
16 | figure, figcaption, footer, header, hgroup,
17 | menu, nav, output, ruby, section, summary,
18 | time, mark, audio, video {
19 | margin: 0;
20 | padding: 0;
21 | border: 0;
22 | font-size: 100%;
23 | font: inherit;
24 | vertical-align: baseline;
25 | }
26 | /* HTML5 display-role reset for older browsers */
27 | article, aside, details, figcaption, figure,
28 | footer, header, hgroup, menu, nav, section {
29 | display: block;
30 | }
31 | body {
32 | line-height: 1;
33 | }
34 | ol, ul {
35 | list-style: none;
36 | }
37 | blockquote, q {
38 | quotes: none;
39 | }
40 | blockquote:before, blockquote:after,
41 | q:before, q:after {
42 | content: '';
43 | content: none;
44 | }
45 | table {
46 | border-collapse: collapse;
47 | border-spacing: 0;
48 | }
49 |
--------------------------------------------------------------------------------
/_app/_scss/vendor/_syntax-highlighting.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Syntax highlighting styles
3 | */
4 | .highlight {
5 | background: #fff;
6 | margin-bottom: $spacing-unit;
7 |
8 | .c { color: #998; font-style: italic } // Comment
9 | .err { color: #a61717; background-color: #e3d2d2 } // Error
10 | .k { font-weight: bold } // Keyword
11 | .o { font-weight: bold } // Operator
12 | .cm { color: #998; font-style: italic } // Comment.Multiline
13 | .cp { color: #999; font-weight: bold } // Comment.Preproc
14 | .c1 { color: #998; font-style: italic } // Comment.Single
15 | .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
16 | .gd { color: #000; background-color: #fdd } // Generic.Deleted
17 | .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
18 | .ge { font-style: italic } // Generic.Emph
19 | .gr { color: #a00 } // Generic.Error
20 | .gh { color: #999 } // Generic.Heading
21 | .gi { color: #000; background-color: #dfd } // Generic.Inserted
22 | .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
23 | .go { color: #888 } // Generic.Output
24 | .gp { color: #555 } // Generic.Prompt
25 | .gs { font-weight: bold } // Generic.Strong
26 | .gu { color: #aaa } // Generic.Subheading
27 | .gt { color: #a00 } // Generic.Traceback
28 | .kc { font-weight: bold } // Keyword.Constant
29 | .kd { font-weight: bold } // Keyword.Declaration
30 | .kp { font-weight: bold } // Keyword.Pseudo
31 | .kr { font-weight: bold } // Keyword.Reserved
32 | .kt { color: #458; font-weight: bold } // Keyword.Type
33 | .m { color: #099 } // Literal.Number
34 | .s { color: #d14 } // Literal.String
35 | .na { color: #008080 } // Name.Attribute
36 | .nb { color: #0086B3 } // Name.Builtin
37 | .nc { color: #458; font-weight: bold } // Name.Class
38 | .no { color: #008080 } // Name.Constant
39 | .ni { color: #800080 } // Name.Entity
40 | .ne { color: #900; font-weight: bold } // Name.Exception
41 | .nf { color: #900; font-weight: bold } // Name.Function
42 | .nn { color: #555 } // Name.Namespace
43 | .nt { color: #000080 } // Name.Tag
44 | .nv { color: #008080 } // Name.Variable
45 | .ow { font-weight: bold } // Operator.Word
46 | .w { color: #bbb } // Text.Whitespace
47 | .mf { color: #099 } // Literal.Number.Float
48 | .mh { color: #099 } // Literal.Number.Hex
49 | .mi { color: #099 } // Literal.Number.Integer
50 | .mo { color: #099 } // Literal.Number.Oct
51 | .sb { color: #d14 } // Literal.String.Backtick
52 | .sc { color: #d14 } // Literal.String.Char
53 | .sd { color: #d14 } // Literal.String.Doc
54 | .s2 { color: #d14 } // Literal.String.Double
55 | .se { color: #d14 } // Literal.String.Escape
56 | .sh { color: #d14 } // Literal.String.Heredoc
57 | .si { color: #d14 } // Literal.String.Interpol
58 | .sx { color: #d14 } // Literal.String.Other
59 | .sr { color: #009926 } // Literal.String.Regex
60 | .s1 { color: #d14 } // Literal.String.Single
61 | .ss { color: #990073 } // Literal.String.Symbol
62 | .bp { color: #999 } // Name.Builtin.Pseudo
63 | .vc { color: #008080 } // Name.Variable.Class
64 | .vg { color: #008080 } // Name.Variable.Global
65 | .vi { color: #008080 } // Name.Variable.Instance
66 | .il { color: #099 } // Literal.Number.Integer.Long
67 | }
68 |
--------------------------------------------------------------------------------
/_app/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | redirect_from: /about.html
4 | title: "About the Map Academy"
5 | ---
6 | ## What is this?
7 |
8 | The Map Academy is an open source project, which serves as a resource for people creating maps on the web. Being open source means that the content that is here, will be free for everyone to access and build upon.
9 |
10 | Although is an initiative of [CARTO](https://carto.com), it is not only a guide to this specific software. While we do think that CARTO is a great tool to start learning online mapping, it is only one part of a growing network of mapping tools. It is our hope that as the program expands, you will find more and more content that is not related directly with CARTO, and that will allow you to build your skills as a mapper. This means that at the Map Academy we will start to teach you skills you can use in other technologies such as ESRI, Google Maps, or Mapbox.
11 |
12 | The Map Academy is designed for self-learners, but can also be used in traditional teaching environments. Since it's open source, re-publication, adaptations into product manuals, and any other creative usage of the Map Academy is permitted. When possible, we appreciate attribution to the Map Academy.
13 |
14 |
15 | ## How can I contribute?
16 |
17 | Contributing on the Map Academy is easy. The content on the Map Academy is written in the Markdown and is rendered into a full interactive website. This means that you can add any link or even code to your content.
18 |
19 | The structure of the website is defined by folders on the "courses" folder. For each course there is a .md file (named with a number and the short name of the course), and a folder which contains the different lessons of the course. The structure of the lessons is defined by headings, which are h2 or h3.
20 |
21 | We highly recommend to use any of the existing courses as a template when preparing a new course and reading the [contributing guide](http://github.com/CartoDB/academy/blob/master/CONTRIBUTING.md) before starting to work on the content.
22 |
23 |
24 | ## Why should I contribute?
25 |
26 | Maps are a very powerful tool for understanding and changing the world. Map users and creators include everyone from big corporations to individuals, international organizations and research institutions. Each day, more and more people sit in front of their computer with great ideas and the objective of creating a web map. We believe that helping them in the process of learning is key for a better and a more informed world. Through your contributions to the Map Academy, you can help build a body of knowledge to empower mappers - from beginners to experts - around the world. We are sure that you have plenty of ideas and tricks than you can share with the community, so don't be shy. Spread the word!
27 |
--------------------------------------------------------------------------------
/_app/courses/academy-lite.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: course
3 | title: "Academy Lite"
4 | redirect_from: /courses/05-academy-lite.html
5 | collection: academy-lite
6 | mailchimp_id: 6ae533ab3c
7 | ---
8 | # Academy Lite
9 |
10 | These quick-start lessons will give you the basic skills needed for creating maps in CARTO.
11 |
--------------------------------------------------------------------------------
/_app/courses/beginners-course.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: course
3 | title: "Online Mapping for Beginners"
4 | redirect_from: /courses/01-beginners-course.html
5 | collection: beginners-course
6 | mailchimp_id: 39c07c0ec2
7 | ---
8 | # Online Mapping for Beginners
9 |
10 | In this lesson, you will learn how to work with datasets to create interactive map visualizations. You will
11 | explore styling your map, adding multiple datasets, and experimenting with different ways to display your data,
12 | including animated maps. You'll learn how to share your new visualizations with friends, family, and the world.
13 |
--------------------------------------------------------------------------------
/_app/courses/cartojs-and-external-apis.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: course
3 | collection: cartojs-and-external-apis
4 | mailchimp_id: 62856bf9d1
5 | ---
6 | # CARTO.js and External APIs
7 |
8 | This course shows how to use CARTO's JavaScript library CARTO.js with external libraries and APIs.
9 |
--------------------------------------------------------------------------------
/_app/courses/cartojs-ground-up.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: course
3 | title: "CARTO.js from the ground up"
4 | redirect_from: /courses/03-cartojs-ground-up.html
5 | collection: cartojs-ground-up
6 | mailchimp_id: 62856bf9d1
7 | ---
8 | # CARTO.js from the ground up
9 |
10 | This introduction to CARTO.js from the ground up will take you through the common uses of the library. You'll start out by pulling your maps from CARTO with only a few lines of code. Later you'll customize your maps with JavaScript, interact with the data, add custom SQL queries, integrate other features, and much more.
11 |
--------------------------------------------------------------------------------
/_app/courses/community.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: community
3 | title: "Community lessons and tutorials"
4 | collection: community
5 | mailchimp_id: eb9ddf4108
6 | ---
7 | # Community lessons and tutorials
8 |
9 | There are countless lessons and tutorials written for CARTO. Here we collect some contributed by the community or ones we found and want to include. **See the stellar list of entries below.**
10 |
--------------------------------------------------------------------------------
/_app/courses/design-for-beginners.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: course
3 | title: "Introduction to Map Design"
4 | redirect_from: /courses/02-design-for-beginners.html
5 | collection: design-for-beginners
6 | mailchimp_id: 9f65372776
7 | ---
8 | # Introduction to Map Design
9 |
10 | In this lesson, you will start learning the basics of design with data and maps. You will begin to explore map design by learning about the use of colors, data, and labels. When you finish the course, you will have developed a set of tools that you can use in any map visualization.
11 |
--------------------------------------------------------------------------------
/_app/courses/intermediate-design.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: course
3 | title: "Intermediate Map Design"
4 | redirect_from: /courses/06-intermediate-design.html
5 | collection: intermediate-design
6 | mailchimp_id: 7b12ebacde
7 | ---
8 | # Intermediate Map Design
9 |
10 | In this lesson you'll learn how to choose the type of thematic map that communicates your dataset's information best. You'll also learn how to use color and typography to make it beautiful! When you have finished this course, you will have built upon the skills you gained in Introduction to Map Design.
11 |
--------------------------------------------------------------------------------
/_app/courses/sql-postgis.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: course
3 | title: "SQL and PostGIS in CARTO"
4 | redirect_from: /courses/04-sql-postgis.html
5 | collection: sql-postgis
6 | mailchimp_id: eb9ddf4108
7 | ---
8 | # SQL and PostGIS in CARTO
9 |
10 | CARTO is a great tool for introducing the power of SQL and PostGIS. You will be walked through the basics of these languages, building towards more and more complex data analysis and manipulation that will allow you to tell even more powerful stories with your maps.
11 |
--------------------------------------------------------------------------------
/_app/d/1.0_month.geojson.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/d/1.0_month.geojson.zip
--------------------------------------------------------------------------------
/_app/d/academy_torque_stork.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/d/academy_torque_stork.zip
--------------------------------------------------------------------------------
/_app/d/all_month.csv.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/d/all_month.csv.zip
--------------------------------------------------------------------------------
/_app/d/counties.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/d/counties.zip
--------------------------------------------------------------------------------
/_app/d/tornadoes.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/d/tornadoes.zip
--------------------------------------------------------------------------------
/_app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/favicon.ico
--------------------------------------------------------------------------------
/_app/fonts/carto-icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/fonts/carto-icons.eot
--------------------------------------------------------------------------------
/_app/fonts/carto-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/fonts/carto-icons.ttf
--------------------------------------------------------------------------------
/_app/fonts/carto-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/fonts/carto-icons.woff
--------------------------------------------------------------------------------
/_app/google776764e6f35123b2.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/google776764e6f35123b2.html
--------------------------------------------------------------------------------
/_app/img/backgrounds/academy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/backgrounds/academy.png
--------------------------------------------------------------------------------
/_app/img/course1/lesson2/choropleth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course1/lesson2/choropleth.png
--------------------------------------------------------------------------------
/_app/img/course1/lesson2/infowindow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course1/lesson2/infowindow.png
--------------------------------------------------------------------------------
/_app/img/course1/lesson2/newtableURL.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course1/lesson2/newtableURL.jpg
--------------------------------------------------------------------------------
/_app/img/course1/lesson2/newtableURL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course1/lesson2/newtableURL.png
--------------------------------------------------------------------------------
/_app/img/course1/lesson2/polygonfill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course1/lesson2/polygonfill.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson1/badmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson1/badmap.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson2/customizecss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson2/customizecss.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson2/dataimport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson2/dataimport.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson2/hexvalue.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson2/hexvalue.jpg
--------------------------------------------------------------------------------
/_app/img/course2/lesson2/multiply.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson2/multiply.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson2/styledmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson2/styledmap.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson3/alltogether.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson3/alltogether.gif
--------------------------------------------------------------------------------
/_app/img/course2/lesson3/bubbleviz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson3/bubbleviz.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson3/mag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson3/mag.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson3/stamen.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson3/stamen.gif
--------------------------------------------------------------------------------
/_app/img/course2/lesson3/time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson3/time.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson3/together1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson3/together1.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson4/addlabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson4/addlabels.png
--------------------------------------------------------------------------------
/_app/img/course2/lesson4/labelsize.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course2/lesson4/labelsize.png
--------------------------------------------------------------------------------
/_app/img/course3/lesson1/example-map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course3/lesson1/example-map.png
--------------------------------------------------------------------------------
/_app/img/course3/lesson1/json-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course3/lesson1/json-view.png
--------------------------------------------------------------------------------
/_app/img/course3/lesson1/share-panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course3/lesson1/share-panel.png
--------------------------------------------------------------------------------
/_app/img/course3/lesson3/cartocss-simple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course3/lesson3/cartocss-simple.png
--------------------------------------------------------------------------------
/_app/img/course3/lesson5/img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course3/lesson5/img1.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson1/filters-sql.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson1/filters-sql.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson1/filters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson1/filters.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson1/select-columns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson1/select-columns.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson2/buffer-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson2/buffer-demo.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson2/buffer-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson2/buffer-example.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson2/makeline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson2/makeline.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson2/stdistance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson2/stdistance.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson3/img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson3/img1.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson3/img2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson3/img2.png
--------------------------------------------------------------------------------
/_app/img/course4/lesson3/img3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course4/lesson3/img3.png
--------------------------------------------------------------------------------
/_app/img/course5/data-observatory-baltimore/obs_search_with_gini_index.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course5/data-observatory-baltimore/obs_search_with_gini_index.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/australia_cat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/australia_cat.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/bubble.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/bubble.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/cluster_zoom.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/cluster_zoom.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/cluster_zoom_2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/cluster_zoom_2.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/cluster_zoom_3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/cluster_zoom_3.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/crime_incidents.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/crime_incidents.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/crime_rate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/crime_rate.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/density_labels.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/density_labels.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/divergent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/divergent.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/earthquakes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/earthquakes.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/earthquakes_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/earthquakes_1.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/earthquakes_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/earthquakes_2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/equal_int.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/equal_int.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/filter.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/green_cyan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/green_cyan.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/heatmap.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/heatmap.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/intensity.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/intensity.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/larger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/larger.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/larger_center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/larger_center.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/line_layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/line_layer.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/oneclick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/oneclick.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/point_layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/point_layer.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/polygon_layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/polygon_layer.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/popup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/popup.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/rainbow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/rainbow.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/seq_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/seq_color.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/storm_density.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/storm_density.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/storms_usa_2014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/storms_usa_2014.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/storms_usa_2014_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/storms_usa_2014_2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/torque.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/torque.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/torque_cat.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/torque_cat.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson1/torque_cu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson1/torque_cu.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/brightness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/brightness.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/color1-rgTxt-fix_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/color1-rgTxt-fix_2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/color1-rgTxt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/color1-rgTxt.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/color_wheel_itten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/color_wheel_itten.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/handle.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/hue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/hue.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/lighter_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/lighter_red.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/lighter_red_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/lighter_red_2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/lighter_red_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/lighter_red_3.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/low_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/low_contrast.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/reduction1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/reduction1.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/reduction2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/reduction2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/saturation_brightness0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/saturation_brightness0.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/saturation_brightness100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/saturation_brightness100.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/saturation_brightness50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/saturation_brightness50.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/sim_cnt_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/sim_cnt_1.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/sim_cnt_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/sim_cnt_2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/simultaneous_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/simultaneous_contrast.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/size_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/size_contrast.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson2/size_contrast2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson2/size_contrast2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/abel_picker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/abel_picker.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/blue_33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/blue_33.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/blue_full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/blue_full.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/cdb_rb_divergent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/cdb_rb_divergent.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/cdb_seq_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/cdb_seq_green.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/color_brewer_red_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/color_brewer_red_blue.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/color_wheel_itten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/color_wheel_itten.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/divergent_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/divergent_default.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/editor_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/editor_default.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/editor_lighten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/editor_lighten.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/perceptual_rainbow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/perceptual_rainbow.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/rainbow_brighter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/rainbow_brighter.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/rb_divergent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/rb_divergent.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/red_66.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/red_66.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/red_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/red_blue.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/red_full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/red_full.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/red_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/red_green.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/uneven_rainbow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/uneven_rainbow.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/valencia_lighten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/valencia_lighten.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson3/valencia_value_15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson3/valencia_value_15.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/clear.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/color-burn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/color-burn.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/color-dodge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/color-dodge.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/color.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/color_burn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/color_burn.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/color_dodge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/color_dodge.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/contrast.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/darken-use-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/darken-use-case.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/darken.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/darken.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/difference.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/difference.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/dst-atop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/dst-atop.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/dst-in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/dst-in.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/dst-out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/dst-out.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/dst-over.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/dst-over.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/dst.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/dst.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/exclusion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/exclusion.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/grain-extract.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/grain-extract.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/grain-merge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/grain-merge.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/hard-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/hard-light.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/hue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/hue.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/invert-rgb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/invert-rgb.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/invert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/invert.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/lighten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/lighten.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/london_crime_incidents.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/london_crime_incidents.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/minus.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/multiply.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/multiply.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/multiply_anim.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/multiply_anim.gif
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/overlay-use-case-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/overlay-use-case-1.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/overlay-use-case-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/overlay-use-case-2.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/overlay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/overlay.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/plus.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/saturation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/saturation.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/screen-use-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/screen-use-case.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/screen.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/soft-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/soft-light.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/src-atop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/src-atop.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/src-in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/src-in.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/src-out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/src-out.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/src-over.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/src-over.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/src.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/src.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/value.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/value.png
--------------------------------------------------------------------------------
/_app/img/course6/lesson4/xor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/course6/lesson4/xor.png
--------------------------------------------------------------------------------
/_app/img/icons/academy-lite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/academy-lite.png
--------------------------------------------------------------------------------
/_app/img/icons/academy-lite.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 4
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/_app/img/icons/beginners-course.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/beginners-course.png
--------------------------------------------------------------------------------
/_app/img/icons/beginners-course.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/_app/img/icons/cartojs-and-external-apis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/cartojs-and-external-apis.png
--------------------------------------------------------------------------------
/_app/img/icons/cartojs-and-external-apis.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 5
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/_app/img/icons/cartojs-ground-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/cartojs-ground-up.png
--------------------------------------------------------------------------------
/_app/img/icons/cartojs-ground-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 5
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/_app/img/icons/community.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/community.png
--------------------------------------------------------------------------------
/_app/img/icons/community.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/_app/img/icons/design-for-beginners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/design-for-beginners.png
--------------------------------------------------------------------------------
/_app/img/icons/design-for-beginners.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/_app/img/icons/intermediate-design.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/intermediate-design.png
--------------------------------------------------------------------------------
/_app/img/icons/intermediate-design.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 6
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/_app/img/icons/sql-postgis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/img/icons/sql-postgis.png
--------------------------------------------------------------------------------
/_app/img/icons/sql-postgis.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 3
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/_app/sitemap.xml:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | sitemap: false
4 | ---
5 |
6 |
7 |
10 |
11 | {% for page in site.pages %}
12 | {% include sitemap.html %}
13 | {% endfor %}
14 | {% for collection in site.collections %}
15 | {% capture label %}{{ collection.label }}{% endcapture %}
16 | {% for page in site[label] %}
17 | {% include sitemap.html %}
18 | {% endfor %}
19 | {% endfor %}
20 |
21 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-1/CartoDB-js-lesson1-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Lesson 1 | CARTO.js | CartoDB
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-1/jsfiddle_demo/demo.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | #map {
8 | border: 1px solid black;
9 | height: 480px;
10 | margin: 25px auto;
11 | width: 600px;
12 | }
13 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-1/jsfiddle_demo/demo.details:
--------------------------------------------------------------------------------
1 | ---
2 | name: CARTO.js Lesson 1
3 | description: First map using createLayer
4 | authors:
5 | - Andy Eschbacher
6 | resources:
7 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/cartodb.js
8 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/themes/css/cartodb.css
9 | normalize_css: no
10 | wrap: b
11 | ...
12 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-1/jsfiddle_demo/demo.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-1/jsfiddle_demo/demo.js:
--------------------------------------------------------------------------------
1 | window.onload = function() {
2 | var vizjson = 'https://documentation.carto.com/api/v2/viz/23f2abd6-481b-11e4-8fb1-0e4fddd5de28/viz.json';
3 |
4 | // Choose center and zoom level
5 | var options = {
6 | center: [41.8369, -87.6847], // Chicago
7 | zoom: 7
8 | }
9 |
10 | // Instantiate map on specified DOM element
11 | var map_object = new L.Map('map', options);
12 |
13 | // Add a basemap to the map object just created
14 | L.tileLayer('http://tile.stamen.com/toner/{z}/{x}/{y}.png', {
15 | attribution: 'Stamen'
16 | }).addTo(map_object);
17 |
18 | // Add CartoDB data layers
19 | cartodb.createLayer(map_object,vizjson)
20 | .addTo(map_object);
21 | }
22 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/CartoDB-js-lesson2-multilayer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Lesson 2 | CARTO.js | CartoDB
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
CARTO.js from the ground up, Lesson 2
55 |
56 |
57 |
58 |
59 |
60 |
61 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/CartoDB-js-lesson2-ondone.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Lesson 2 | CARTO.js | CartoDB
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
CARTO.js from the ground up, Lesson 2
55 |
56 |
57 |
58 |
59 |
60 |
61 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/CartoDB-js-lesson2-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Lesson 2 | CARTO.js | CartoDB
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
CARTO.js from the ground up, Lesson 2
55 |
56 |
57 |
58 |
59 |
60 |
61 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_layercontrols/demo.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | #map {
8 | height: 480px;
9 | margin: 25px auto;
10 | width: 600px;
11 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_layercontrols/demo.details:
--------------------------------------------------------------------------------
1 | ---
2 | name: CARTO.js Lesson 2
3 | description: Layer controls using .hide() and .show()
4 | authors:
5 | - Andy Eschbacher
6 | resources:
7 | - https://carto.com/academy/css/cdbui.css
8 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/cartodb.js
9 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/themes/css/cartodb.css
10 | normalize_css: no
11 | wrap: b
12 | ...
13 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_layercontrols/demo.html:
--------------------------------------------------------------------------------
1 |
2 | Layer controls
3 |
4 | Toggle Countries
5 | Toggle Lakes
6 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_layercontrols/demo.js:
--------------------------------------------------------------------------------
1 | window.onload = function() {
2 | // Instantiate new map object, place it in 'map' element
3 | var map_object = new L.Map('map', {
4 | center: [43,0], // Southern France
5 | zoom: 3
6 | });
7 |
8 | // Put layer data into a JS object
9 | var layerSource = {
10 | user_name: 'documentation',
11 | type: 'cartodb',
12 | sublayers: [{
13 | sql: "SELECT * FROM africa_adm0", // African countries
14 | cartocss: '#africa_adm0{polygon-fill:#FF6600;polygon-opacity:0.7;line-color:#FFF;line-width:1;line-opacity:1;}'
15 | },
16 | {
17 | sql: "SELECT * FROM ne_50m_lakes", // Natural and artificial lakes
18 | cartocss: '#ne_50m_lakes {polygon-fill:#0000FF;}'
19 | }]
20 | }
21 |
22 | // For storing the sublayers
23 | var sublayers = [];
24 |
25 | // Pull tiles from OpenStreetMap
26 | L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
27 | attribution: '© OpenStreetMap contributors'
28 | }).addTo(map_object);
29 |
30 | // Add data layer to your map
31 | cartodb.createLayer(map_object,layerSource)
32 | .addTo(map_object)
33 | .done(function(layer) {
34 | for (var i = 0; i < layer.getSubLayerCount(); i++) {
35 | sublayers[i] = layer.getSubLayer(i);
36 | alert("Congrats, you added sublayer #" + i + "!");
37 | }
38 | })
39 | .error(function(err) {
40 | console.log("error: " + err);
41 | });
42 |
43 | var sublayer0Shown = true;
44 | $("#sublayer0").on('click', function() {
45 | if (sublayer0Shown) {
46 | sublayers[0].hide();
47 | } else {
48 | sublayers[0].show();
49 | }
50 | sublayer0Shown = !sublayer0Shown;
51 | });
52 |
53 | var sublayer1Shown = true;
54 | $("#sublayer1").on('click', function() {
55 | if (sublayer1Shown) {
56 | sublayers[1].hide();
57 | } else {
58 | sublayers[1].show();
59 | }
60 | sublayer1Shown = !sublayer1Shown;
61 | });
62 | }
63 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_multilayer/demo.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | #map {
8 | height: 480px;
9 | margin: 25px auto;
10 | width: 600px;
11 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_multilayer/demo.details:
--------------------------------------------------------------------------------
1 | ---
2 | name: CARTO.js Lesson 2
3 | description: Testing out multiple layer maps in CARTO.js
4 | authors:
5 | - Andy Eschbacher
6 | resources:
7 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/cartodb.js
8 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/themes/css/cartodb.css
9 | normalize_css: no
10 | wrap: b
11 | ...
12 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_multilayer/demo.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_multilayer/demo.js:
--------------------------------------------------------------------------------
1 | window.onload = function() {
2 | // Instantiate new map object, place it in 'map' element
3 | var map_object = new L.Map('map', {
4 | center: [43,0], // Southern France
5 | zoom: 3
6 | });
7 |
8 | // Put layer data into a JS object
9 | var layerSource = {
10 | user_name: 'documentation',
11 | type: 'cartodb',
12 | sublayers: [{
13 | sql: "SELECT * FROM africa_adm0", // African countries
14 | cartocss: '#africa_adm0{polygon-fill:#FF6600;polygon-opacity:0.7;line-color:#FFF;line-width:1;line-opacity:1;}'
15 | },
16 | {
17 | sql: "SELECT * FROM ne_50m_lakes", // Natural and artificial lakes
18 | cartocss: '#ne_50m_lakes {polygon-fill: #0000FF;}'
19 | }]
20 | }
21 |
22 | // For storing the sublayers
23 | var sublayers = [];
24 |
25 | // Pull tiles from OpenStreetMap
26 | L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
27 | attribution: '© OpenStreetMap contributors'
28 | }).addTo(map_object);
29 |
30 | // Add data layer to your map
31 | cartodb.createLayer(map_object,layerSource)
32 | .addTo(map_object)
33 | .done(function(layer) {
34 | for (var i = 0; i < layer.getSubLayerCount(); i++) {
35 | sublayers[i] = layer.getSubLayer(i);
36 | alert("Congrats, you added sublayer #" + i + "!");
37 | }
38 | })
39 | .error(function(err) {
40 | console.log("error: " + err);
41 | });
42 | }
43 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_ondone/demo.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | #map {
8 | border: 1px solid black;
9 | height: 480px;
10 | margin: 25px auto;
11 | width: 600px;
12 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_ondone/demo.details:
--------------------------------------------------------------------------------
1 | ---
2 | name: CARTO.js Lesson 2 | .ondone demo
3 | description: Testing out .done and .error
4 | authors:
5 | - Andy Eschbacher
6 | resources:
7 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/cartodb.js
8 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/themes/css/cartodb.css
9 | normalize_css: no
10 | wrap: b
11 | ...
12 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_ondone/demo.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_ondone/demo.js:
--------------------------------------------------------------------------------
1 | window.onload = function() {
2 | var vizjson_url = 'https://documentation.carto.com/api/v2/viz/23f2abd6-481b-11e4-8fb1-0e4fddd5de28/viz.json';
3 |
4 | cartodb.createVis('map', vizjson_url)
5 | .done(function(vis, layers) {
6 | // do stuff
7 | alert("Layers has " + layers.length + " layers.");
8 | })
9 | .error(function(err) {
10 | // report error
11 | console.log("An error occurred: " + err);
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_toggles_and_slider/demo.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | #map {
8 | height: 480px;
9 | margin: 25px auto;
10 | width: 600px;
11 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_toggles_and_slider/demo.details:
--------------------------------------------------------------------------------
1 | ---
2 | name: CARTO.js Lesson 2
3 | description: Opacity Slider and Layer Toggles
4 | authors:
5 | - Andy Eschbacher
6 | resources:
7 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/themes/css/cartodb.css
8 | - http://code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css
9 | - https://carto.com/academy/css/cdbui.css
10 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/cartodb.js
11 | - http://code.jquery.com/jquery-1.10.2.js
12 | - http://code.jquery.com/ui/1.11.1/jquery-ui.js
13 | normalize_css: no
14 | wrap: b
15 | ...
16 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_toggles_and_slider/demo.html:
--------------------------------------------------------------------------------
1 |
2 | Layer controls
3 |
4 | Toggle Countries
5 | Toggle Lakes
6 |
7 |
8 |
9 | Opacity:
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-2/jsfiddle_demo_toggles_and_slider/demo.js:
--------------------------------------------------------------------------------
1 | window.onload = function() {
2 | // Instantiate new map object, place it in 'map' element
3 | var map_object = new L.Map('map', {
4 | center: [43,0], // Southern France
5 | zoom: 3
6 | });
7 |
8 | // Put layer data into a JS object
9 | var layerSource = {
10 | user_name: 'documentation',
11 | type: 'cartodb',
12 | sublayers: [{
13 | sql: "SELECT * FROM africa_adm0", // African countries
14 | cartocss: '#africa_adm0{polygon-fill:#FF6600;polygon-opacity:0.7;line-color:#FFF;line-width:1;line-opacity:1;}'
15 | },
16 | {
17 | sql: "SELECT * FROM ne_50m_lakes", // Natural and artificial lakes
18 | cartocss: '#ne_50m_lakes {polygon-fill:#0000FF;}'
19 | }]
20 | }
21 |
22 | // For storing the sublayers
23 | var sublayers = [];
24 |
25 | // Pull tiles from OpenStreetMap
26 | L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
27 | attribution: '© OpenStreetMap contributors'
28 | }).addTo(map_object);
29 |
30 | // Add data layer to your map
31 | cartodb.createLayer(map_object,layerSource)
32 | .addTo(map_object)
33 | .done(function(layer) {
34 | for (var i = 0; i < layer.getSubLayerCount(); i++) {
35 | sublayers[i] = layer.getSubLayer(i);
36 | alert("Congrats, you added sublayer #" + i + "!");
37 | }
38 | var op = 0.7;
39 | layer.setOpacity(op);
40 |
41 | $(function() {
42 | $( "#slider-range-min" ).slider({
43 | range: "min",
44 | value: 70,
45 | min: 0,
46 | max: 100,
47 | slide: function( event, ui ) {
48 | $( "#amount" ).val(ui.value + "%" );
49 | // scale to [0,1] from [0,100]
50 | op = $( "#slider-range-min" ).slider( "value" ) / 100;
51 | layer.setOpacity(op);
52 | }
53 | });
54 | $( "#amount" ).val( $( "#slider-range-min" ).slider( "value" ) + "%");
55 | });
56 | })
57 | .error(function(err) {
58 | console.log("error: " + err);
59 | });
60 |
61 | var sublayer0Shown = true;
62 | $("#sublayer0").on('click', function() {
63 | if (sublayer0Shown) {
64 | sublayers[0].hide();
65 | } else {
66 | sublayers[0].show();
67 | }
68 | sublayer0Shown = !sublayer0Shown;
69 | });
70 |
71 | var sublayer1Shown = true;
72 | $("#sublayer1").on('click', function() {
73 | if (sublayer1Shown) {
74 | sublayers[1].hide();
75 | } else {
76 | sublayers[1].show();
77 | }
78 | sublayer1Shown = !sublayer1Shown;
79 | });
80 | }
81 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-3/CartoDB-js-lesson3-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Lesson 3 | CARTO.js | CartoDB
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
68 |
69 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-3/jsfiddle_demo_cartocss/demo.css:
--------------------------------------------------------------------------------
1 | html, body, #map {
2 | height: 100%;
3 | padding: 0;
4 | margin: 0;
5 | }
6 | #cartocss {
7 | position: absolute;
8 | top: 20px;
9 | right: 20px;
10 | }
11 | #sql {
12 | position: absolute;
13 | top: 20px;
14 | right: 292px;
15 | }
16 | .layer_selector {
17 | background: rgba(255,255,255,0.9);
18 | border-radius: 5px;
19 | padding: 0;
20 | border: 1px solid #999;
21 | width: 250px;
22 | }
23 |
24 | .layer_selector > p {
25 | padding: 15px 30px;
26 | border-bottom: 1px solid #999;
27 | }
28 |
29 | .layer_selector ul {
30 | padding: 0; margin: 0;
31 | list-style-type: none;
32 | }
33 | .layer_selector li {
34 | padding: 15px 30px;
35 | font-family: Helvetica, Arial;
36 | font-size: 13px;
37 | color: #444;
38 | cursor: pointer;
39 | }
40 | .layer_selector li:not(:last-child) {
41 | border-bottom: 1px solid #999;
42 | }
43 | .layer_selector li:hover {
44 | background-color: #F0F0F0;
45 | cursor: pointer;
46 | }
47 | .layer_selector li.sql_selected,
48 | .layer_selector li.cartocss_selected {
49 | background-color: #A6CEE3;
50 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-3/jsfiddle_demo_cartocss/demo.details:
--------------------------------------------------------------------------------
1 | ---
2 | name: CARTO.js Lesson 3 | CartoCSS Demo
3 | description: Changing CartoCSS in CARTO.js
4 | authors:
5 | - Andy Eschbacher
6 | resources:
7 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/cartodb.js
8 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/themes/css/cartodb.css
9 | normalize_css: no
10 | wrap: b
11 | ...
12 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-3/jsfiddle_demo_cartocss/demo.js:
--------------------------------------------------------------------------------
1 | window.onload = function() {
2 |
3 | var tableName = "earthquakes_cdbjs_lesson3";
4 |
5 | var layerSource = {
6 | user_name: 'documentation',
7 | type: 'cartodb',
8 | sublayers: [{
9 | sql: "SELECT * FROM " + tableName, // Earthquake data
10 | cartocss: $("#simple").html() // Simple visualization
11 | }]
12 | }
13 |
14 | // Instantiate new map object, place it in 'map' element
15 | var map_object = new L.Map('map', {
16 | center: [37.7741154,-122.4437914], // San Francisco
17 | zoom: 2
18 | });
19 |
20 | // Create layer selector
21 | function createSelector(layer) {
22 | var cartocss = "";
23 | var $options = $(".layer_selector").find("li");
24 | $options.click(function(e) {
25 | var $li = $(e.target);
26 | var selected = $li.attr('data');
27 |
28 | $options.removeClass('cartocss_selected');
29 | $li.addClass('cartocss_selected');
30 |
31 | cartocss = $('#'+selected).text();
32 |
33 | layer.setCartoCSS(cartocss);
34 | });
35 | }
36 |
37 | // Pull tiles from CartoDB's basemaps
38 | L.tileLayer('http://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}.png', {
39 | attribution: '© OpenStreetMap<\/a> contributors'
40 | }).addTo(map_object);
41 |
42 | // for storing sublayer outside of createlayer
43 | var sublayers;
44 |
45 | // Add data layer to your map
46 | cartodb.createLayer(map_object,layerSource)
47 | .addTo(map_object)
48 | .done(function(layer) {
49 | sublayer = layer.getSubLayer(0);
50 | createSelector(sublayer);
51 | })
52 | .error(function(err) {
53 | console.log("error: " + err);
54 | });
55 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-3/jsfiddle_demo_cartocss_sql/demo.css:
--------------------------------------------------------------------------------
1 | html, body, #map {
2 | height: 100%;
3 | padding: 0;
4 | margin: 0;
5 | }
6 | #cartocss {
7 | position: absolute;
8 | top: 20px;
9 | right: 20px;
10 | }
11 | #sql {
12 | position: absolute;
13 | top: 20px;
14 | right: 292px;
15 | }
16 | .layer_selector {
17 | background: rgba(255,255,255,0.9);
18 | border-radius: 5px;
19 | padding: 0;
20 | border: 1px solid #999;
21 | width: 250px;
22 | }
23 |
24 | .layer_selector > p {
25 | padding: 15px 30px;
26 | border-bottom: 1px solid #999;
27 | }
28 |
29 | .layer_selector ul {
30 | padding: 0; margin: 0;
31 | list-style-type: none;
32 | }
33 | .layer_selector li {
34 | padding: 15px 30px;
35 | font-family: Helvetica, Arial;
36 | font-size: 13px;
37 | color: #444;
38 | cursor: pointer;
39 | }
40 | .layer_selector li:not(:last-child) {
41 | border-bottom: 1px solid #999;
42 | }
43 | .layer_selector li:hover {
44 | background-color: #F0F0F0;
45 | cursor: pointer;
46 | }
47 | .layer_selector li.sql_selected,
48 | .layer_selector li.cartocss_selected {
49 | background-color: #A6CEE3;
50 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-3/jsfiddle_demo_cartocss_sql/demo.details:
--------------------------------------------------------------------------------
1 | ---
2 | name: CARTO.js Lesson 3 | CartoCSS Demo
3 | description: Changing CartoCSS in CARTO.js
4 | authors:
5 | - Andy Eschbacher
6 | resources:
7 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/cartodb.js
8 | - http://libs.cartocdn.com/cartodb.js/v3/3.14/themes/css/cartodb.css
9 | normalize_css: no
10 | wrap: b
11 | ...
12 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-3/jsfiddle_demo_cartocss_sql/demo.js:
--------------------------------------------------------------------------------
1 | window.onload = function() {
2 |
3 | var tableName = "earthquakes_cdbjs_lesson3";
4 |
5 | var layerSource = {
6 | user_name: 'documentation',
7 | type: 'cartodb',
8 | sublayers: [{
9 | sql: "SELECT * FROM " + tableName, // Earthquake data
10 | cartocss: $("#simple").html() // Simple visualization
11 | }]
12 | }
13 |
14 | // Instantiate new map object, place it in 'map' element
15 | var map_object = new L.Map('map', {
16 | center: [37.7741154,-122.4437914], // San Francisco
17 | zoom: 2
18 | });
19 |
20 | // Create layer selector
21 | function createSelector(layer) {
22 | var condition = "";
23 | var $options = $(".layer_selector").find("li");
24 | $options.click(function(e) {
25 | var $li = $(e.target);
26 | var selected = $li.attr('data');
27 | var type = $li.data('type');
28 |
29 | if (type === "cartocss") {
30 | $options.removeClass('cartocss_selected');
31 | if (selected !== "simple") {
32 | $li.addClass('cartocss_selected');
33 | }
34 | condition = $('#'+selected).text();
35 | layer.setCartoCSS(condition);
36 | } else {
37 | $options.removeClass('sql_selected');
38 | if (selected !== "") {
39 | $li.addClass('sql_selected');
40 | }
41 | if (selected.indexOf('guinea') !== -1) {
42 | map_object.setView(L.latLng([-9.5, 147.116667]),6);
43 | } else {
44 | map_object.setView(L.latLng([37.7741154,-122.4437914]),2);
45 | }
46 | layer.setSQL("SELECT * FROM " + tableName + selected);
47 | }
48 | });
49 | }
50 |
51 | // Pull tiles from CartoDB's basemaps
52 | L.tileLayer('http://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}.png', {
53 | attribution: '© OpenStreetMap<\/a> contributors'
54 | }).addTo(map_object);
55 |
56 | // for storing sublayer outside of createlayer
57 | var sublayers;
58 |
59 | // Add data layer to your map
60 | cartodb.createLayer(map_object,layerSource)
61 | .addTo(map_object)
62 | .done(function(layer) {
63 | sublayer = layer.getSubLayer(0);
64 | createSelector(sublayer);
65 | })
66 | .error(function(err) {
67 | console.log("error: " + err);
68 | });
69 | }
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-4/template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Map Academy | CARTO.js & Torque.js
5 |
6 |
7 |
8 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-5/named-maps-example.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Named Maps Tutorial | CartoDB
5 |
6 |
7 |
8 |
9 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/_app/t/03-cartodbjs-ground-up/lesson-5/named-maps-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Named Maps Tutorial | CartoDB
5 |
6 |
7 |
8 |
9 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/_app/t/06-intermediate-design/lesson-2/color1-rgTxt-fix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/t/06-intermediate-design/lesson-2/color1-rgTxt-fix.png
--------------------------------------------------------------------------------
/_app/t/06-intermediate-design/lesson-2/color1-rgTxt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/t/06-intermediate-design/lesson-2/color1-rgTxt.png
--------------------------------------------------------------------------------
/_app/t/06-intermediate-design/lesson-2/handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CartoDB/academy/dc9db2e0c0d8b9de36dea5c2e10f394bdb089c35/_app/t/06-intermediate-design/lesson-2/handle.png
--------------------------------------------------------------------------------
/_app/t/06-intermediate-design/lesson-2/imgslider-2.0.1-min.css:
--------------------------------------------------------------------------------
1 | .slider{width:100%;height:auto;padding:0;position:relative}.slider .right.image{position:absolute;z-index:1;top:0;left:0}.slider .left.image{position:relative;z-index:2;border-right:3px solid #fff;margin-right:-5px;overflow:hidden}.slider .instruction{position:absolute;top:50%;z-index:1000;width:95%}.slider .instruction p{background:#fff;display:inline;padding:1%;font-size:1em;text-transform:uppercase}
--------------------------------------------------------------------------------
/_app/t/06-intermediate-design/lesson-2/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Slider Test
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/_app/t/07-cartojs-and-external-apis/lesson-1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Google Street View
5 |
6 |
7 |
8 |
9 |
33 |
34 |
35 |
36 |
37 |
38 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/_app/t/07-cartojs-and-external-apis/lesson-1/template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CARTO.js | Google Street View
5 |
6 |
7 |
8 |
9 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/_app/t/07-cartojs-and-external-apis/lesson-2/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Driving directions to clicked point | CARTO.js
5 |
6 |
7 |
8 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/_app/t/07-cartojs-and-external-apis/lesson-2/template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CARTO.js | Google Driving Directions
5 |
6 |
7 |
8 |
9 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/_config-prod.yml:
--------------------------------------------------------------------------------
1 | baseurl: '/academy'
2 | url: 'https://carto.com'
3 |
4 | analytics_property_id: UA-20934186-25
5 | hubspot_id: 474999
6 |
--------------------------------------------------------------------------------
/_config-staging.yml:
--------------------------------------------------------------------------------
1 | baseurl: '/academy'
2 | url: 'https://carto-staging.com'
3 |
4 | cartodb-baseurl: 'https://carto-staging.com'
5 | blog-baseurl: 'https://carto-staging.com/blog'
6 | github-baseurl: 'http://github.com/CartoDB/academy'
7 |
8 | analytics_property_id: ''
9 | hubspot_id: ''
10 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cartodb-docs",
3 | "private": true,
4 | "devDependencies": {
5 | "modernizr": "~2.8.3",
6 | "jquery": "~2.1.4",
7 | "underscore": "~1.8.3",
8 | "backbone": "~1.2.3"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/grunt-aws.development.json:
--------------------------------------------------------------------------------
1 | {
2 | "accessKeyId": "...",
3 | "secretAccessKey": "...",
4 | "bucket": "...",
5 | "fastly": "..."
6 | }
7 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cartodb-academy",
3 | "version": "0.1.0",
4 | "author": "Carlos Matallín",
5 | "dependencies": {
6 | "autoprefixer": "^6.0.3",
7 | "grunt": "^0.4.5",
8 | "grunt-aws-s3": "^0.14.0",
9 | "grunt-babel": "^5.0.3",
10 | "grunt-browser-sync": "^2.1.3",
11 | "grunt-concurrent": "^2.0.3",
12 | "grunt-contrib-clean": "^0.6.0",
13 | "grunt-contrib-compress": "^0.13.0",
14 | "grunt-contrib-concat": "^0.5.1",
15 | "grunt-contrib-copy": "^0.8.1",
16 | "grunt-contrib-cssmin": "^0.14.0",
17 | "grunt-contrib-htmlmin": "^0.5.0",
18 | "grunt-contrib-imagemin": "^0.9.4",
19 | "grunt-contrib-uglify": "^0.9.2",
20 | "grunt-contrib-watch": "^0.6.1",
21 | "grunt-filerev": "^2.3.1",
22 | "grunt-modernizr": "^1.0.0",
23 | "grunt-postcss": "^0.6.0",
24 | "grunt-sass": "^1.0.0",
25 | "grunt-shell": "^1.1.2",
26 | "grunt-svgmin": "^2.0.1",
27 | "grunt-usemin": "^3.1.1",
28 | "jit-grunt": "^0.9.1",
29 | "time-grunt": "^1.2.1"
30 | },
31 | "scripts": {
32 | "build": "grunt build --target=${NODE_ENV:=production} && echo ${NODE_ENV}"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/robots.production.txt:
--------------------------------------------------------------------------------
1 | # https://support.google.com/webmasters/answer/6062608
2 |
3 | User-agent: *
4 | Disallow:
5 |
6 | Sitemap: https://carto.com/academy/sitemap.xml
7 |
--------------------------------------------------------------------------------
/robots.staging.txt:
--------------------------------------------------------------------------------
1 | # https://support.google.com/webmasters/answer/6062608
2 |
3 | User-agent: *
4 | Disallow: /
5 |
--------------------------------------------------------------------------------