From 940fd13c13f5349f4cc0ebecc11e66324a76f539 Mon Sep 17 00:00:00 2001 From: Thomas Bui Date: Fri, 9 Oct 2020 14:57:05 -0700 Subject: [PATCH 1/5] Updated the CONTRIBUTING.md, README.md and code doc --- .github/scripts/build_assets/filehandler.py | 11 +- CONTRIBUTING.md | 233 +++++++++++++++++--- README.md | 6 +- 3 files changed, 214 insertions(+), 36 deletions(-) diff --git a/.github/scripts/build_assets/filehandler.py b/.github/scripts/build_assets/filehandler.py index ee57f3f0..42c8cafa 100644 --- a/.github/scripts/build_assets/filehandler.py +++ b/.github/scripts/build_assets/filehandler.py @@ -9,8 +9,8 @@ import re def find_new_icons(devicon_json_path: str, icomoon_json_path: str) -> List[dict]: """ Find the newly added icons by finding the difference between - the devicon_test.json and the icomoon_test.json. - :param devicon_json_path, the path to the devicon_test.json. + the devicon.json and the icomoon.json. + :param devicon_json_path, the path to the devicon.json. :param icomoon_json_path: a path to the iconmoon.json. :return: a list of the new icons as JSON objects. """ @@ -33,8 +33,8 @@ def is_not_in_icomoon_json(icon, icomoon_json) -> bool: Checks whether the icon's name is not in the icomoon_json. :param icon: the icon object we are searching for. :param icomoon_json: the icomoon json object parsed from - icomoon_test.json. - :return: True if icon's name is not in the icomoon_test.json, else False. + icomoon.json. + :return: True if icon's name is not in the icomoon.json, else False. """ pattern = re.compile(f"^{icon['name']}-") @@ -46,7 +46,7 @@ def is_not_in_icomoon_json(icon, icomoon_json) -> bool: def get_svgs_paths(new_icons: List[dict], icons_folder_path: str) -> List[str]: """ - Get all the suitable svgs file path listed in the devicon_test.json. + Get all the suitable svgs file path listed in the devicon.json. :param new_icons, a list containing the info on the new icons. :param icons_folder_path, the path where the function can find the listed folders. @@ -66,6 +66,7 @@ def get_svgs_paths(new_icons: List[dict], icons_folder_path: str) -> List[str]: aliases = [] # create empty list of aliases if not provided in devicon.json for font_version in icon_info["versions"]["font"]: + # if it's an alias, we don't want to make it into an icon if is_alias(font_version, aliases): continue diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 91a0aad8..99e8a5ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,50 +2,227 @@

First of all, thanks for taking the time to contribute! This project can only grow and live by your countless contributions. To keep this project maintable we developed some guidelines for contributions.

-

Submitting icon

+ +

Table of Content

-

Icon formats and naming conventions

-

Each icon comes in different variations:

+ +
+

Overview on Submitting Icon

+

Here is an overview of what you have to do to submit your icons to the repo.

+
    +
  1. Create the svgs for each logo versions that you have
  2. +
  3. Put the svgs for each logo into its own folders in /fonts
  4. +
  5. Update the devicon.json to include the new icon
  6. +
  7. Create a separated pull request (PR) for each icon (no matter how many versions).
  8. +
  9. Include the name of the icon in the pull request title. Follow this format: new icon: {{logoName}} ({{versions}})
  10. +
  11. Optional: Add images of the new icon(s) to the description of the pull request. This would help speed up the review process
  12. +
  13. Optional: Reference the issues regarding the new icon.
  14. +
  15. Wait for a repo maintainer to review your changes. Once they are satisfied, they will build your repo . This will create a PR into your branch.
  16. +
  17. Review the PR. It should contain the icon versions of your svgs. Accept the changes if you are satisfied
  18. +
  19. Once you accept the changes, a maintainer will accept your PR into the repo.
  20. +
+ +
+

Icon Formats and Naming Conventions

+

Each icon can come in different versions. So far, we have:

-This is not mandatory, an icon can only have one or two variations available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). +It is not mandatory to have 6 versions for each icon. An icon can only have one or two variations available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon.

-The plain and line variations (with or without wordmark) are designed to be available in the final icon font. So they need to stay as simple as possible (one color and ensure that the paths are united before to export to svg). You can use a service like compressor or SVG Editor in order to optimize the svg file. +The plain and line versions (with or without wordmark) are designed to be available in the final icon font. This means they need to stay as simple as possible (one color and ensure that the paths are united before to export to svg). You can use a service like compressor or SVG Editor in order to optimize the svg file.

-The original versions are only available in svg format, so they do not need to be as simple and they can contain numerous colors. +The original versions are only available in svg format, so they do not need to be as simple and can contain numerous colors.

-Some icons are really simple (like the apple one), so the original version can be used for the icon font. In this case, I'll add an alias so they can be found with the "original" or "plain" naming convention. +Some icons are really simple (like the Apple one), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make only one of the version (either "original" or "plain"). You can then add an alias in the devicon.json so they can be found with either the "original" or "plain" naming convention.

-

Organizational guidelines

+ +
+

Organizational Guidelines

-

Requesting a icon

+ +
+

Update the devicon.json

+

+ Before you open a PR into Devicon, you'd have to update the devicon.json. This is essential for our build script to work and to document your work. +

+

+ Here is the object that each of your logo must have: +

+ +
+  
+    {
+        "name": string, // the official name of the technology. Must be lower case, no space or use the dash '-' character.
+        "tags": string[], // list of tags relating to the technology for search purpose
+        "versions": {
+            "svg": VersionString[], // list the svgs that you have 
+            "font": VersionString[] // list the fonts acceptable versions that you have
+        },
+        "color": string, // the main color of the logo. Only track 1 color
+        "aliases": AliasObj[] // keeps track of the aliases
+    }
+  
+
+ +

+ Here is the AliasObj interface: +

+
+     
+    {
+        "base": VersionString, // the base version
+        "alias": VersionString // the alias version that's similar to the base version
+    }
+  
+
+ +

+ Here is what VersionString means: +

+
    +
  1. If you have "html5-original", the version string would be "original"
  2. +
  3. If you have "react-line-wordmark", the version string would be "line-wordmark"
  4. +
  5. See Icon Formats and Naming Conventions for more details
  6. +
+ +
+

Example

+

+As an example, let's assume you have created the svgs for Amazon Web Services and Redhat logos. +

+

For the Amazon Web Services svgs, you have the following versions: "original", "original-wordmark", "plain-wordmark". However, the "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.

+

For the Redhat svg, you have the "original", "original-wordmark", "plain", "plain-wordmark" versions.

+
    +
  1. + Put the svgs for each logo that you have into its own folders in /fonts +
      +
    • This means you would create two folders: one for amazonwebservices and one for redhat
    • +
    • Note: don't do this in the same commits. We want to have each logo in its own PR so don't create these two folders in the same commit
    • +
    +
  2. +
  3. + Update the devicon.json to include the icon (or variations) +
      +
    • For the amazonwebservices, you would do this +
      +          
      +            {
      +              "name": "amazonwebservices", 
      +              "tags": [
      +                "cloud",
      +                "hosting",
      +                "server"
      +              ],
      +              "versions": {
      +                "svg": [ // here are the versions that are available in svgs
      +                  "original",
      +                  "original-wordmark",
      +                  "plain-wordmark"
      +                ],
      +                "font": [ // here are the versions that are available as font icons
      +                  "original", // original is simple enough to be used as plain
      +                  "plain-wordmark"
      +                ]
      +              },
      +              "color": "#F7A80D", // note the '#' character
      +              "aliases": [
      +                {
      +                    "base": "original", // here is the base version aka the one that we will upload to Icomoon
      +                    "alias": "plain" // this is its alias. Our script will create a reference so we can search using "original" or "plain"
      +                }
      +              ]
      +            }
      +          
      +        
      +
    • +
    • For the redhat, you would do this +
      +          
      +            {
      +              "name": "redhat",
      +              "tags": [
      +                "server",
      +                "linux"
      +              ],
      +              "versions": {
      +                "svg": [
      +                  "original",
      +                  "original-wordmark",
      +                  "plain",
      +                  "plain-wordmark"
      +                ],
      +                "font": [
      +                  "plain",
      +                  "plain-wordmark"
      +                ]
      +              },
      +              "color": "#e93442",
      +              "aliases": [] // no aliases
      +            },
      +          
      +        
      +
    • +
    • Note: again, don't do this in the same commits. We want to have each logo in its own PR so don't create two folders in the same commit
    • +
    +
  4. +
  5. Create a separated pull request (PR) for each icon (no matter how many variations). +
      +
    • This means you would have to create two PRs
    • +
    • For Amazon Web Services, the branch name would be icons/amazonwebservices.
    • +
    • For Redhat, the branch name would be icons/redhat.
    • +
    • +
    +
  6. +
  7. + Include the name of the icon in the pull request. Follow this format: "new icon: {{logoName}} ({{versions}})" +
      +
    • For Amazon Web Services, your PR title should be "new icon: amazonwebservices (original, original-wordmark, plain-wordmark)"
    • +
    • For Redhat, your PR title should be "new icon: redhat (original, original-wordmark, plain, plain-wordmark)"
    • +
    +
  8. +
  9. For the rest of the steps, you can follow Overview on Submitting Icon
  10. +
+ +
+

Requesting an Icon

When you want to request a new icon please feel free to create a issue following some simple guidelines:

+ +
+

Regarding The Build Script

+

To make adding icons easier for repo maintainers, we rely on GitHub Actions, Python, Selenium, and Gulp to automate our tasks.

+

So far, the tasks that we have automated are:

+ \ No newline at end of file diff --git a/README.md b/README.md index 9e8b2a0a..b3d0f31b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Devicon aims to gather all logos representing development languages and tools. Each icon comes in several versions: font/svg, original/plain/line, colored/not colored, wordmark/no wordmark. -Devicon it's 80+ icons and 200+ versions. And it's growing! +Devicon has 80+ icons and 200+ versions. And it's growing! See all available icons on the [new website](https://devicons.github.io/devicon/). @@ -104,10 +104,10 @@ if you like to restore the settings stored in the configuration file. The next step is to click on **Generate font** and download the resulting archive. Extract it contents and you will find a [fonts](./fonts) directory next to a `style.css`. Replace the content of the `fonts` folder, -merge the `style.css` with [devicon.css](./devicon.css) and follow the next step to build the final stylesheet. +rename the `style.css` to [devicon.css](./devicon.css) and follow the next step to build the final stylesheet. ### Build and minify stylesheet Run the following command to build the resulting file `devicon.min.css` ```bash -gulp default +npm run build-css ``` From 318e2df2b7b35442b36fd4165614eb751624cd65 Mon Sep 17 00:00:00 2001 From: Thomas Bui Date: Fri, 9 Oct 2020 15:03:30 -0700 Subject: [PATCH 2/5] Added colored class and change README.md --- README.md | 8 +++----- gulpfile.js | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index b3d0f31b..e8101010 100644 --- a/README.md +++ b/README.md @@ -43,13 +43,11 @@ _2 ways of using devicon:_ #### Icons font -- Upload devicon.css and font files to your project +- Upload devicon.min.css and font files to your project +- Note: the `devicon.css` file is not the same as the `devicon.min.css`. It doesn't contain any colors or aliases. ```html - - - - + ``` - Add icon using `` tag diff --git a/gulpfile.js b/gulpfile.js index 35429a3a..29fded8e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -107,7 +107,7 @@ function createColorsCSS(deviconJson) { console.log(`This object doesn't have a font or a color: ${name}`); return ""; } - let cssClasses = fonts.map(font => `.devicon-${name}-${font}`); + let cssClasses = fonts.map(font => `.devicon-${name}-${font}.colored`); return `${cssClasses.join(",")}{color: ${color}}`; }).join(" "); From b7a8a0a4ed79cd94d3d072fcf24938a04e677ca2 Mon Sep 17 00:00:00 2001 From: Thomas Bui Date: Fri, 9 Oct 2020 15:24:27 -0700 Subject: [PATCH 3/5] Added code to ensure we always get run log --- .github/workflows/build_icons.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_icons.yml b/.github/workflows/build_icons.yml index b8511b74..d0b8c0b8 100644 --- a/.github/workflows/build_icons.yml +++ b/.github/workflows/build_icons.yml @@ -27,6 +27,7 @@ jobs: ./icomoon.json ./devicon.json ./icons ./ --headless - name: Upload geckodriver.log for debugging purposes uses: actions/upload-artifact@v2 + if: ${{always()}} with: name: geckodriver-log path: ./geckodriver.log From f5a247fa17779280abeb206b93ee0d6cea188dcc Mon Sep 17 00:00:00 2001 From: Thomas-Boi Date: Fri, 9 Oct 2020 22:36:23 +0000 Subject: [PATCH 4/5] Built new icons, icomoon.json and devicon.css --- devicon.min.css | 2 +- fonts/devicon.eot | Bin 219836 -> 219836 bytes fonts/devicon.ttf | Bin 219672 -> 219672 bytes fonts/devicon.woff | Bin 219748 -> 219748 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/devicon.min.css b/devicon.min.css index 18583ede..772f4ccd 100644 --- a/devicon.min.css +++ b/devicon.min.css @@ -1 +1 @@ -@font-face{font-family:"devicon";src:url("fonts/devicon.eot?yl3aib");src:url("fonts/devicon.eot?yl3aib#iefix") format("embedded-opentype"),url("fonts/devicon.ttf?yl3aib") format("truetype"),url("fonts/devicon.woff?yl3aib") format("woff"),url("fonts/devicon.svg?yl3aib#devicon") format("svg");font-weight:normal;font-style:normal;font-display:block}[class^=devicon-],[class*=" devicon-"]{font-family:"devicon" !important;speak:never;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.devicon-haskell-plain:before{content:""}.devicon-haskell-plain-wordmark:before{content:""}.devicon-codepen-original-wordmark:before{content:""}.devicon-codepen-plain:before,.devicon-codepen-original:before{content:""}.devicon-groovy-plain:before{content:""}.devicon-rust-plain:before{content:""}.devicon-scala-plain-wordmark:before{content:""}.devicon-scala-plain:before{content:""}.devicon-grails-plain:before{content:""}.devicon-sketch-line-wordmark:before{content:""}.devicon-sketch-line:before{content:""}.devicon-npm-original-wordmark:before{content:""}.devicon-ionic-original-wordmark:before{content:""}.devicon-ionic-original:before{content:""}.devicon-ember-original-wordmark:before{content:""}.devicon-electron-original-wordmark:before{content:""}.devicon-electron-original:before{content:""}.devicon-vagrant-plain-wordmark:before{content:""}.devicon-vagrant-plain:before{content:""}.devicon-yarn-plain-wordmark:before{content:""}.devicon-yarn-plain:before{content:""}.devicon-handlebars-plain-wordmark:before{content:""}.devicon-handlebars-plain:before{content:""}.devicon-couchdb-plain-wordmark:before{content:""}.devicon-couchdb-plain:before{content:""}.devicon-behance-plain-wordmark:before{content:""}.devicon-behance-plain:before{content:""}.devicon-linkedin-plain-wordmark:before{content:""}.devicon-linkedin-plain:before{content:""}.devicon-ceylon-plain:before{content:""}.devicon-elm-plain-wordmark:before{content:""}.devicon-elm-plain:before{content:""}.devicon-cakephp-plain-wordmark:before{content:""}.devicon-cakephp-plain:before{content:""}.devicon-stylus-original:before{content:""}.devicon-express-original-wordmark:before{content:""}.devicon-express-original:before{content:""}.devicon-devicon-plain-wordmark:before{content:""}.devicon-devicon-plain:before{content:""}.devicon-intellij-plain-wordmark:before{content:""}.devicon-intellij-plain:before{content:""}.devicon-pycharm-plain-wordmark:before{content:""}.devicon-pycharm-plain:before{content:""}.devicon-rubymine-plain-wordmark:before{content:""}.devicon-rubymine-plain:before{content:""}.devicon-webstorm-plain-wordmark:before{content:""}.devicon-webstorm-plain:before{content:""}.devicon-tomcat-line-wordmark:before{content:""}.devicon-tomcat-line:before{content:""}.devicon-vuejs-line-wordmark:before{content:""}.devicon-vuejs-line:before{content:""}.devicon-vuejs-plain-wordmark:before{content:""}.devicon-vuejs-plain:before{content:""}.devicon-swift-plain-wordmark:before{content:""}.devicon-swift-plain:before{content:""}.devicon-webpack-plain-wordmark:before{content:""}.devicon-webpack-plain:before{content:""}.devicon-visualstudio-plain-wordmark:before{content:""}.devicon-visualstudio-plain:before{content:""}.devicon-slack-plain-wordmark:before{content:""}.devicon-slack-plain:before{content:""}.devicon-sequelize-plain-wordmark:before{content:""}.devicon-sequelize-plain:before{content:""}.devicon-typescript-plain:before,.devicon-typescript-original:before{content:""}.devicon-babel-plain:before,.devicon-babel-original:before{content:""}.devicon-facebook-plain:before,.devicon-facebook-original:before{content:""}.devicon-google-plain-wordmark:before,.devicon-google-original-wordmark:before{content:""}.devicon-google-plain:before,.devicon-google-original:before{content:""}.devicon-twitter-original:before{content:""}.devicon-mocha:before{content:""}.devicon-jasmine-plain:before{content:""}.devicon-jasmine-wordmark:before{content:""}.devicon-gatling-plain:before{content:""}.devicon-gatling-plain-wordmark:before{content:""}.devicon-phpstorm-plain:before{content:""}.devicon-phpstorm-plain-wordmark:before{content:""}.devicon-sourcetree-original:before{content:""}.devicon-sourcetree-original-wordmark:before{content:""}.devicon-ssh-original:before{content:""}.devicon-ssh-original-wordmark:before{content:""}.devicon-jeet-plain:before{content:""}.devicon-jeet-plain-wordmark:before{content:""}.devicon-gitlab-plain:before{content:""}.devicon-gitlab-plain-wordmark:before{content:""}.devicon-github-original:before{content:""}.devicon-github-original-wordmark:before{content:""}.devicon-d3js-plain:before{content:""}.devicon-d3js-original:before{content:""}.devicon-confluence-original:before{content:""}.devicon-confluence-original-wordmark:before{content:""}.devicon-bitbucket-original:before{content:""}.devicon-bitbucket-original-wordmark:before{content:""}.devicon-gradle-plain:before{content:""}.devicon-gradle-plain-wordmark:before{content:""}.devicon-cucumber-plain:before{content:""}.devicon-cucumber-plain-wordmark:before{content:""}.devicon-protractor-plain:before{content:""}.devicon-protractor-plain-wordmark:before{content:""}.devicon-safari-line-wordmark:before{content:""}.devicon-safari-line:before{content:""}.devicon-safari-plain-wordmark:before{content:""}.devicon-safari-plain:before{content:""}.devicon-jetbrains-plain:before,.devicon-jetbrains-line:before,.devicon-jetbrains-line-wordmark:before,.devicon-jetbrains-plain-wordmark:before{content:""}.devicon-django-line:before,.devicon-django-line-wordmark:before{content:""}.devicon-django-plain:before,.devicon-django-plain-wordmark:before{content:""}.devicon-gimp-plain:before{content:""}.devicon-redhat-plain-wordmark:before{content:""}.devicon-redhat-plain:before{content:""}.devicon-cplusplus-line:before,.devicon-cplusplus-line-wordmark:before{content:""}.devicon-cplusplus-plain:before,.devicon-cplusplus-plain-wordmark:before{content:""}.devicon-csharp-line:before,.devicon-csharp-line-wordmark:before{content:""}.devicon-csharp-plain:before,.devicon-csharp-plain-wordmark:before{content:""}.devicon-c-line:before,.devicon-c-line-wordmark:before{content:""}.devicon-c-plain:before,.devicon-c-plain-wordmark:before{content:""}.devicon-nodewebkit-line-wordmark:before{content:""}.devicon-nodewebkit-line:before{content:""}.devicon-nodewebkit-plain-wordmark:before{content:""}.devicon-nodewebkit-plain:before{content:""}.devicon-nginx-original:before,.devicon-nginx-original-wordmark:before,.devicon-nginx-plain:before,.devicon-nginx-plain-wordmark:before{content:""}.devicon-erlang-plain-wordmark:before{content:""}.devicon-erlang-plain:before{content:""}.devicon-doctrine-line-wordmark:before{content:""}.devicon-doctrine-line:before{content:""}.devicon-doctrine-plain-wordmark:before{content:""}.devicon-doctrine-plain:before{content:""}.devicon-apache-line-wordmark:before{content:""}.devicon-apache-line:before{content:""}.devicon-apache-plain-wordmark:before{content:""}.devicon-apache-plain:before{content:""}.devicon-go-line:before{content:""}.devicon-redis-plain-wordmark:before{content:""}.devicon-redis-plain:before{content:""}.devicon-meteor-plain-wordmark:before{content:""}.devicon-meteor-plain:before{content:""}.devicon-heroku-line-wordmark:before,.devicon-heroku-original-wordmark:before{content:""}.devicon-heroku-line:before,.devicon-heroku-original:before{content:""}.devicon-heroku-plain-wordmark:before{content:""}.devicon-heroku-plain:before{content:""}.devicon-go-plain:before{content:""}.devicon-docker-plain-wordmark:before{content:""}.devicon-docker-plain:before{content:""}.devicon-symfony-original-wordmark:before,.devicon-symfony-plain-wordmark:before{content:""}.devicon-symfony-original:before,.devicon-symfony-plain:before{content:""}.devicon-react-original-wordmark:before,.devicon-react-plain-wordmark:before{content:""}.devicon-react-original:before,.devicon-react-plain:before{content:""}.devicon-amazonwebservices-original:before,.devicon-amazonwebservices-plain:before{content:""}.devicon-amazonwebservices-plain-wordmark:before{content:""}.devicon-android-plain-wordmark:before{content:""}.devicon-android-plain:before{content:""}.devicon-angularjs-plain-wordmark:before{content:""}.devicon-angularjs-plain:before{content:""}.devicon-appcelerator-original:before,.devicon-appcelerator-plain:before{content:""}.devicon-appcelerator-plain-wordmark:before{content:""}.devicon-apple-original:before,.devicon-apple-plain:before{content:""}.devicon-atom-original-wordmark:before,.devicon-atom-plain-wordmark:before{content:""}.devicon-atom-original:before,.devicon-atom-plain:before{content:""}.devicon-backbonejs-plain-wordmark:before{content:""}.devicon-backbonejs-plain:before{content:""}.devicon-bootstrap-plain-wordmark:before{content:""}.devicon-bootstrap-plain:before{content:""}.devicon-bower-line-wordmark:before{content:""}.devicon-bower-line:before{content:""}.devicon-bower-plain-wordmark:before{content:""}.devicon-bower-plain:before{content:""}.devicon-chrome-plain-wordmark:before{content:""}.devicon-chrome-plain:before{content:""}.devicon-codeigniter-plain-wordmark:before{content:""}.devicon-codeigniter-plain:before{content:""}.devicon-coffeescript-original-wordmark:before,.devicon-coffeescript-plain-wordmark:before{content:""}.devicon-coffeescript-original:before,.devicon-coffeescript-plain:before{content:""}.devicon-css3-plain-wordmark:before{content:""}.devicon-css3-plain:before{content:""}.devicon-debian-plain-wordmark:before{content:""}.devicon-debian-plain:before{content:""}.devicon-dot-net-plain-wordmark:before{content:""}.devicon-dot-net-plain:before{content:""}.devicon-drupal-plain-wordmark:before{content:""}.devicon-drupal-plain:before{content:""}.devicon-firefox-plain-wordmark:before{content:""}.devicon-firefox-plain:before{content:""}.devicon-foundation-plain-wordmark:before{content:""}.devicon-foundation-plain:before{content:""}.devicon-git-plain-wordmark:before{content:""}.devicon-git-plain:before{content:""}.devicon-grunt-line-wordmark:before{content:""}.devicon-grunt-line:before{content:""}.devicon-grunt-plain-wordmark:before{content:""}.devicon-grunt-plain:before{content:""}.devicon-gulp-plain:before{content:""}.devicon-html5-plain-wordmark:before{content:""}.devicon-html5-plain:before{content:""}.devicon-ie10-original:before,.devicon-ie10-plain:before{content:""}.devicon-illustrator-line:before{content:""}.devicon-illustrator-plain:before{content:""}.devicon-inkscape-plain-wordmark:before{content:""}.devicon-inkscape-plain:before{content:""}.devicon-java-plain-wordmark:before{content:""}.devicon-java-plain:before{content:""}.devicon-javascript-plain:before{content:""}.devicon-jquery-plain-wordmark:before{content:""}.devicon-jquery-plain:before{content:""}.devicon-krakenjs-plain-wordmark:before{content:""}.devicon-krakenjs-plain:before{content:""}.devicon-laravel-plain-wordmark:before{content:""}.devicon-laravel-plain:before{content:""}.devicon-less-plain-wordmark:before{content:""}.devicon-linux-plain:before{content:""}.devicon-mongodb-plain-wordmark:before{content:""}.devicon-mongodb-plain:before{content:""}.devicon-moodle-plain-wordmark:before{content:""}.devicon-moodle-plain:before{content:""}.devicon-mysql-plain-wordmark:before{content:""}.devicon-mysql-plain:before{content:""}.devicon-nodejs-plain-wordmark:before{content:""}.devicon-nodejs-plain:before{content:""}.devicon-oracle-original:before,.devicon-oracle-plain:before{content:""}.devicon-photoshop-line:before{content:""}.devicon-photoshop-plain:before{content:""}.devicon-php-plain:before{content:""}.devicon-postgresql-plain-wordmark:before{content:""}.devicon-postgresql-plain:before{content:""}.devicon-python-plain-wordmark:before{content:""}.devicon-python-plain:before{content:""}.devicon-rails-plain-wordmark:before{content:""}.devicon-rails-plain:before{content:""}.devicon-ruby-plain-wordmark:before{content:""}.devicon-ruby-plain:before{content:""}.devicon-sass-original:before,.devicon-sass-plain:before{content:""}.devicon-travis-plain-wordmark:before{content:""}.devicon-travis-plain:before{content:""}.devicon-trello-plain-wordmark:before{content:""}.devicon-trello-plain:before{content:""}.devicon-ubuntu-plain-wordmark:before{content:""}.devicon-ubuntu-plain:before{content:""}.devicon-vim-plain:before{content:""}.devicon-windows8-original-wordmark:before,.devicon-windows8-plain-wordmark:before{content:""}.devicon-windows8-original:before,.devicon-windows8-plain:before{content:""}.devicon-wordpress-plain-wordmark:before{content:""}.devicon-wordpress-plain:before{content:""}.devicon-yii-plain-wordmark:before{content:""}.devicon-yii-plain:before{content:""}.devicon-zend-plain-wordmark:before{content:""}.devicon-zend-plain:before{content:""}.devicon-amazonwebservices-original,.devicon-amazonwebservices-plain-wordmark{color:#f7a80d}.devicon-android-plain,.devicon-android-plain-wordmark{color:#a4c439}.devicon-angularjs-plain,.devicon-angularjs-plain-wordmark{color:#c4473a}.devicon-apache-plain,.devicon-apache-plain-wordmark,.devicon-apache-line,.devicon-apache-line-wordmark{color:#303284}.devicon-appcelerator-original,.devicon-appcelerator-plain-wordmark{color:#ac162c}.devicon-apple-original{color:#000}.devicon-atom-original,.devicon-atom-original-wordmark{color:#67595d}.devicon-babel-plain{color:#f9dc3e}.devicon-backbonejs-plain,.devicon-backbonejs-plain-wordmark{color:#002a41}.devicon-behance-plain,.devicon-behance-plain-wordmark{color:#0071e0}.devicon-bitbucket-plain,.devicon-bitbucket-plain-wordmark{color:#205081}.devicon-bootstrap-plain,.devicon-bootstrap-plain-wordmark{color:#59407f}.devicon-bower-plain,.devicon-bower-plain-wordmark,.devicon-bower-line,.devicon-bower-line-wordmark{color:#ef5734}.devicon-c-plain,.devicon-c-plain-wordmark,.devicon-c-line,.devicon-c-line-wordmark{color:#03599c}.devicon-cakephp-plain,.devicon-cakephp-plain-wordmark{color:#d43d44}.devicon-ceylon-plain{color:#ab710a}.devicon-chrome-plain,.devicon-chrome-plain-wordmark{color:#ce4e4e}.devicon-codeigniter-plain,.devicon-codeigniter-plain-wordmark{color:#ee4323}.devicon-codepen-plain,.devicon-codepen-plain-wordmark{color:#231f20}.devicon-coffeescript-original,.devicon-coffeescript-original-wordmark{color:#28334c}.devicon-confluence-plain,.devicon-confluence-plain-wordmark{color:#205081}.devicon-couchdb-plain,.devicon-couchdb-plain-wordmark{color:#e42528}.devicon-cplusplus-plain,.devicon-cplusplus-plain-wordmark,.devicon-cplusplus-line,.devicon-cplusplus-line-wordmark{color:#9c033a}.devicon-csharp-plain,.devicon-csharp-plain-wordmark,.devicon-csharp-line,.devicon-csharp-line-wordmark{color:#68217a}.devicon-css3-plain,.devicon-css3-plain-wordmark{color:#3d8fc6}.devicon-cucumber-plain,.devicon-cucumber-plain-wordmark{color:#00a818}.devicon-d3js-plain{color:#f7974e}.devicon-debian-plain,.devicon-debian-plain-wordmark{color:#a80030}.devicon-devicon-plain,.devicon-devicon-plain-wordmark{color:#60be86}.devicon-django-plain,.devicon-django-plain-wordmark,.devicon-django-line,.devicon-django-line-wordmark{color:#003a2b}.devicon-docker-plain,.devicon-docker-plain-wordmark{color:#019bc6}.devicon-doctrine-plain,.devicon-doctrine-plain-wordmark,.devicon-doctrine-line,.devicon-doctrine-line-wordmark{color:#f56d39}.devicon-dot-net-plain,.devicon-dot-net-plain-wordmark{color:#1384c8}.devicon-drupal-plain,.devicon-drupal-plain-wordmark{color:#0073ba}.devicon-electron-original,.devicon-electron-original-wordmark{color:#47848f}.devicon-elm-plain,.devicon-elm-plain-wordmark{color:#34495e}.devicon-ember-original-wordmark{color:#dd3f24}.devicon-erlang-plain,.devicon-erlang-plain-wordmark{color:#a90533}.devicon-express-original,.devicon-express-original-wordmark{color:#444}.devicon-facebook-plain{color:#3d5a98}.devicon-firefox-plain,.devicon-firefox-plain-wordmark{color:#dd732a}.devicon-foundation-plain,.devicon-foundation-plain-wordmark{color:#008cba}.devicon-gatling-plain,.devicon-gatling-plain-wordmark{color:#e77500}.devicon-gimp-plain{color:#716955}.devicon-git-plain,.devicon-git-plain-wordmark{color:#f34f29}.devicon-github-plain,.devicon-github-plain-wordmark{color:#181616}.devicon-gitlab-plain,.devicon-gitlab-plain-wordmark{color:#e24329}.devicon-go-plain,.devicon-go-line{color:#000}.devicon-google-plain,.devicon-google-plain-wordmark{color:#587dbd}.devicon-gradle-plain,.devicon-gradle-plain-wordmark{color:#02303a}.devicon-grails-plain{color:#feb672}.devicon-groovy-plain{color:#619cbc}.devicon-grunt-plain,.devicon-grunt-plain-wordmark,.devicon-grunt-line,.devicon-grunt-line-wordmark{color:#fcaa1a}.devicon-gulp-plain{color:#eb4a4b}.devicon-haskell-plain,.devicon-haskell-plain-wordmark{color:#5e5185}.devicon-handlebars-plain,.devicon-handlebars-plain-wordmark{color:#000}.devicon-heroku-original,.devicon-heroku-original-wordmark,.devicon-heroku-plain,.devicon-heroku-plain-wordmark,.devicon-heroku-line,.devicon-heroku-line-wordmark{color:#6762a6}.devicon-html5-plain,.devicon-html5-plain-wordmark{color:#e54d26}.devicon-ie10-original{color:#1ebbee}.devicon-illustrator-plain,.devicon-illustrator-line{color:#faa625}.devicon-inkscape-plain,.devicon-inkscape-plain-wordmark{color:#000}.devicon-intellij-plain,.devicon-intellij-plain-wordmark{color:#136ba2}.devicon-ionic-original,.devicon-ionic-original-wordmark{color:#4e8ef7}.devicon-jasmine-plain,.devicon-jasmine-plain-wordmark{color:#8a4182}.devicon-java-plain,.devicon-java-plain-wordmark{color:#ea2d2e}.devicon-javascript-plain{color:#f0db4f}.devicon-jeet-plain,.devicon-jeet-plain-wordmark{color:#ff664a}.devicon-jetbrains-plain,.devicon-jetbrains-plain-wordmark,.devicon-jetbrains-line,.devicon-jetbrains-line-wordmark{color:#f68b1f}.devicon-jquery-plain,.devicon-jquery-plain-wordmark{color:#0769ad}.devicon-krakenjs-plain,.devicon-krakenjs-plain-wordmark{color:#0081c2}.devicon-laravel-plain,.devicon-laravel-plain-wordmark{color:#fd4f31}.devicon-less-plain-wordmark{color:#2a4d80}.devicon-linkedin-plain,.devicon-linkedin-plain-wordmark{color:#0076b2}.devicon-linux-plain{color:#000}.devicon-meteor-plain,.devicon-meteor-plain-wordmark{color:#df5052}.devicon-mongodb-plain,.devicon-mongodb-plain-wordmark{color:#4faa41}.devicon-moodle-plain,.devicon-moodle-plain-wordmark{color:#f7931e}.devicon-mysql-plain,.devicon-mysql-plain-wordmark{color:#00618a}.devicon-nginx-original,.devicon-nginx-original-wordmark,.devicon-nginx-plain,.devicon-nginx-plain-wordmark{color:#090}.devicon-nodejs-plain,.devicon-nodejs-plain-wordmark{color:#83cd29}.devicon-nodewebkit-plain,.devicon-nodewebkit-plain-wordmark,.devicon-nodewebkit-line,.devicon-nodewebkit-line-wordmark{color:#3d3b47}.devicon-npm-original-wordmark{color:#cb3837}.devicon-oracle-original{color:#ea1b22}.devicon-photoshop-plain,.devicon-photoshop-line{color:#80b5e2}.devicon-php-plain{color:#6181b6}.devicon-phpstorm-plain,.devicon-phpstorm-plain-wordmark{color:#5058a6}.devicon-postgresql-plain,.devicon-postgresql-plain-wordmark{color:#336791}.devicon-protractor-plain,.devicon-protractor-plain-wordmark{color:#b7111d}.devicon-pycharm-plain,.devicon-pycharm-plain-wordmark{color:#4d8548}.devicon-python-plain,.devicon-python-plain-wordmark{color:#ffd845}.devicon-rails-plain,.devicon-rails-plain-wordmark{color:#a62c46}.devicon-react-original,.devicon-react-original-wordmark{color:#61dafb}.devicon-redhat-plain,.devicon-redhat-plain-wordmark{color:#e93442}.devicon-redis-plain,.devicon-redis-plain-wordmark{color:#d82c20}.devicon-ruby-plain,.devicon-ruby-plain-wordmark{color:#d91404}.devicon-rubymine-plain,.devicon-rubymine-plain-wordmark{color:#c12c4c}.devicon-rust-plain{color:#000}.devicon-safari-plain,.devicon-safari-plain-wordmark,.devicon-safari-line-wordmark,.devicon-safari-line{color:#1b88ca}.devicon-sass-original{color:#c69}.devicon-scala-plain,.devicon-scala-plain-wordmark{color:#de3423}.devicon-sequelize-plain,.devicon-sequelize-plain-wordmark{color:#3b4b72}.devicon-sketch-line,.devicon-sketch-line-wordmark{color:#fdad00}.devicon-slack-plain,.devicon-slack-plain-wordmark{color:#2d333a}.devicon-sourcetree-plain,.devicon-sourcetree-plain-wordmark{color:#205081}.devicon-ssh-plain,.devicon-ssh-plain-wordmark{color:#231f20}.devicon-stylus-original{color:#333}.devicon-swift-plain,.devicon-swift-plain-wordmark{color:#f05138}.devicon-symfony-original,.devicon-symfony-original-wordmark{color:#1a171b}.devicon-tomcat-line,.devicon-tomcat-line-wordmark{color:#d1a41a}.devicon-travis-plain,.devicon-travis-plain-wordmark{color:#bb2031}.devicon-trello-plain,.devicon-trello-plain-wordmark{color:#23719f}.devicon-twitter-plain{color:#1da1f2}.devicon-typescript-plain{color:#007acc}.devicon-ubuntu-plain,.devicon-ubuntu-plain-wordmark{color:#dd4814}.devicon-vagrant-plain,.devicon-vagrant-plain-wordmark{color:#127eff}.devicon-vim-plain{color:#179a33}.devicon-visualstudio-plain,.devicon-visualstudio-plain-wordmark{color:#68217a}.devicon-vuejs-plain,.devicon-vuejs-plain-wordmark,.devicon-vuejs-line,.devicon-vuejs-line-wordmark{color:#41b883}.devicon-webpack-plain,.devicon-webpack-plain-wordmark{color:#1c78c0}.devicon-webstorm-plain,.devicon-webstorm-plain-wordmark{color:#2788b5}.devicon-windows8-original,.devicon-windows8-original-wordmark{color:#00adef}.devicon-wordpress-plain,.devicon-wordpress-plain-wordmark{color:#494949}.devicon-yarn-plain,.devicon-yarn-plain-wordmark{color:#2c8ebb}.devicon-yii-plain,.devicon-yii-plain-wordmark{color:#0073bb}.devicon-zend-plain,.devicon-zend-plain-wordmark{color:#68b604} \ No newline at end of file +@font-face{font-family:"devicon";src:url("fonts/devicon.eot?yl3aib");src:url("fonts/devicon.eot?yl3aib#iefix") format("embedded-opentype"),url("fonts/devicon.ttf?yl3aib") format("truetype"),url("fonts/devicon.woff?yl3aib") format("woff"),url("fonts/devicon.svg?yl3aib#devicon") format("svg");font-weight:normal;font-style:normal;font-display:block}[class^=devicon-],[class*=" devicon-"]{font-family:"devicon" !important;speak:never;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.devicon-haskell-plain:before{content:""}.devicon-haskell-plain-wordmark:before{content:""}.devicon-codepen-original-wordmark:before{content:""}.devicon-codepen-plain:before,.devicon-codepen-original:before{content:""}.devicon-groovy-plain:before{content:""}.devicon-rust-plain:before{content:""}.devicon-scala-plain-wordmark:before{content:""}.devicon-scala-plain:before{content:""}.devicon-grails-plain:before{content:""}.devicon-sketch-line-wordmark:before{content:""}.devicon-sketch-line:before{content:""}.devicon-npm-original-wordmark:before{content:""}.devicon-ionic-original-wordmark:before{content:""}.devicon-ionic-original:before{content:""}.devicon-ember-original-wordmark:before{content:""}.devicon-electron-original-wordmark:before{content:""}.devicon-electron-original:before{content:""}.devicon-vagrant-plain-wordmark:before{content:""}.devicon-vagrant-plain:before{content:""}.devicon-yarn-plain-wordmark:before{content:""}.devicon-yarn-plain:before{content:""}.devicon-handlebars-plain-wordmark:before{content:""}.devicon-handlebars-plain:before{content:""}.devicon-couchdb-plain-wordmark:before{content:""}.devicon-couchdb-plain:before{content:""}.devicon-behance-plain-wordmark:before{content:""}.devicon-behance-plain:before{content:""}.devicon-linkedin-plain-wordmark:before{content:""}.devicon-linkedin-plain:before{content:""}.devicon-ceylon-plain:before{content:""}.devicon-elm-plain-wordmark:before{content:""}.devicon-elm-plain:before{content:""}.devicon-cakephp-plain-wordmark:before{content:""}.devicon-cakephp-plain:before{content:""}.devicon-stylus-original:before{content:""}.devicon-express-original-wordmark:before{content:""}.devicon-express-original:before{content:""}.devicon-devicon-plain-wordmark:before{content:""}.devicon-devicon-plain:before{content:""}.devicon-intellij-plain-wordmark:before{content:""}.devicon-intellij-plain:before{content:""}.devicon-pycharm-plain-wordmark:before{content:""}.devicon-pycharm-plain:before{content:""}.devicon-rubymine-plain-wordmark:before{content:""}.devicon-rubymine-plain:before{content:""}.devicon-webstorm-plain-wordmark:before{content:""}.devicon-webstorm-plain:before{content:""}.devicon-tomcat-line-wordmark:before{content:""}.devicon-tomcat-line:before{content:""}.devicon-vuejs-line-wordmark:before{content:""}.devicon-vuejs-line:before{content:""}.devicon-vuejs-plain-wordmark:before{content:""}.devicon-vuejs-plain:before{content:""}.devicon-swift-plain-wordmark:before{content:""}.devicon-swift-plain:before{content:""}.devicon-webpack-plain-wordmark:before{content:""}.devicon-webpack-plain:before{content:""}.devicon-visualstudio-plain-wordmark:before{content:""}.devicon-visualstudio-plain:before{content:""}.devicon-slack-plain-wordmark:before{content:""}.devicon-slack-plain:before{content:""}.devicon-sequelize-plain-wordmark:before{content:""}.devicon-sequelize-plain:before{content:""}.devicon-typescript-plain:before,.devicon-typescript-original:before{content:""}.devicon-babel-plain:before,.devicon-babel-original:before{content:""}.devicon-facebook-plain:before,.devicon-facebook-original:before{content:""}.devicon-google-plain-wordmark:before,.devicon-google-original-wordmark:before{content:""}.devicon-google-plain:before,.devicon-google-original:before{content:""}.devicon-twitter-original:before{content:""}.devicon-mocha:before{content:""}.devicon-jasmine-plain:before{content:""}.devicon-jasmine-wordmark:before{content:""}.devicon-gatling-plain:before{content:""}.devicon-gatling-plain-wordmark:before{content:""}.devicon-phpstorm-plain:before{content:""}.devicon-phpstorm-plain-wordmark:before{content:""}.devicon-sourcetree-original:before{content:""}.devicon-sourcetree-original-wordmark:before{content:""}.devicon-ssh-original:before{content:""}.devicon-ssh-original-wordmark:before{content:""}.devicon-jeet-plain:before{content:""}.devicon-jeet-plain-wordmark:before{content:""}.devicon-gitlab-plain:before{content:""}.devicon-gitlab-plain-wordmark:before{content:""}.devicon-github-original:before{content:""}.devicon-github-original-wordmark:before{content:""}.devicon-d3js-plain:before{content:""}.devicon-d3js-original:before{content:""}.devicon-confluence-original:before{content:""}.devicon-confluence-original-wordmark:before{content:""}.devicon-bitbucket-original:before{content:""}.devicon-bitbucket-original-wordmark:before{content:""}.devicon-gradle-plain:before{content:""}.devicon-gradle-plain-wordmark:before{content:""}.devicon-cucumber-plain:before{content:""}.devicon-cucumber-plain-wordmark:before{content:""}.devicon-protractor-plain:before{content:""}.devicon-protractor-plain-wordmark:before{content:""}.devicon-safari-line-wordmark:before{content:""}.devicon-safari-line:before{content:""}.devicon-safari-plain-wordmark:before{content:""}.devicon-safari-plain:before{content:""}.devicon-jetbrains-plain:before,.devicon-jetbrains-line:before,.devicon-jetbrains-line-wordmark:before,.devicon-jetbrains-plain-wordmark:before{content:""}.devicon-django-line:before,.devicon-django-line-wordmark:before{content:""}.devicon-django-plain:before,.devicon-django-plain-wordmark:before{content:""}.devicon-gimp-plain:before{content:""}.devicon-redhat-plain-wordmark:before{content:""}.devicon-redhat-plain:before{content:""}.devicon-cplusplus-line:before,.devicon-cplusplus-line-wordmark:before{content:""}.devicon-cplusplus-plain:before,.devicon-cplusplus-plain-wordmark:before{content:""}.devicon-csharp-line:before,.devicon-csharp-line-wordmark:before{content:""}.devicon-csharp-plain:before,.devicon-csharp-plain-wordmark:before{content:""}.devicon-c-line:before,.devicon-c-line-wordmark:before{content:""}.devicon-c-plain:before,.devicon-c-plain-wordmark:before{content:""}.devicon-nodewebkit-line-wordmark:before{content:""}.devicon-nodewebkit-line:before{content:""}.devicon-nodewebkit-plain-wordmark:before{content:""}.devicon-nodewebkit-plain:before{content:""}.devicon-nginx-original:before,.devicon-nginx-original-wordmark:before,.devicon-nginx-plain:before,.devicon-nginx-plain-wordmark:before{content:""}.devicon-erlang-plain-wordmark:before{content:""}.devicon-erlang-plain:before{content:""}.devicon-doctrine-line-wordmark:before{content:""}.devicon-doctrine-line:before{content:""}.devicon-doctrine-plain-wordmark:before{content:""}.devicon-doctrine-plain:before{content:""}.devicon-apache-line-wordmark:before{content:""}.devicon-apache-line:before{content:""}.devicon-apache-plain-wordmark:before{content:""}.devicon-apache-plain:before{content:""}.devicon-go-line:before{content:""}.devicon-redis-plain-wordmark:before{content:""}.devicon-redis-plain:before{content:""}.devicon-meteor-plain-wordmark:before{content:""}.devicon-meteor-plain:before{content:""}.devicon-heroku-line-wordmark:before,.devicon-heroku-original-wordmark:before{content:""}.devicon-heroku-line:before,.devicon-heroku-original:before{content:""}.devicon-heroku-plain-wordmark:before{content:""}.devicon-heroku-plain:before{content:""}.devicon-go-plain:before{content:""}.devicon-docker-plain-wordmark:before{content:""}.devicon-docker-plain:before{content:""}.devicon-symfony-original-wordmark:before,.devicon-symfony-plain-wordmark:before{content:""}.devicon-symfony-original:before,.devicon-symfony-plain:before{content:""}.devicon-react-original-wordmark:before,.devicon-react-plain-wordmark:before{content:""}.devicon-react-original:before,.devicon-react-plain:before{content:""}.devicon-amazonwebservices-original:before,.devicon-amazonwebservices-plain:before{content:""}.devicon-amazonwebservices-plain-wordmark:before{content:""}.devicon-android-plain-wordmark:before{content:""}.devicon-android-plain:before{content:""}.devicon-angularjs-plain-wordmark:before{content:""}.devicon-angularjs-plain:before{content:""}.devicon-appcelerator-original:before,.devicon-appcelerator-plain:before{content:""}.devicon-appcelerator-plain-wordmark:before{content:""}.devicon-apple-original:before,.devicon-apple-plain:before{content:""}.devicon-atom-original-wordmark:before,.devicon-atom-plain-wordmark:before{content:""}.devicon-atom-original:before,.devicon-atom-plain:before{content:""}.devicon-backbonejs-plain-wordmark:before{content:""}.devicon-backbonejs-plain:before{content:""}.devicon-bootstrap-plain-wordmark:before{content:""}.devicon-bootstrap-plain:before{content:""}.devicon-bower-line-wordmark:before{content:""}.devicon-bower-line:before{content:""}.devicon-bower-plain-wordmark:before{content:""}.devicon-bower-plain:before{content:""}.devicon-chrome-plain-wordmark:before{content:""}.devicon-chrome-plain:before{content:""}.devicon-codeigniter-plain-wordmark:before{content:""}.devicon-codeigniter-plain:before{content:""}.devicon-coffeescript-original-wordmark:before,.devicon-coffeescript-plain-wordmark:before{content:""}.devicon-coffeescript-original:before,.devicon-coffeescript-plain:before{content:""}.devicon-css3-plain-wordmark:before{content:""}.devicon-css3-plain:before{content:""}.devicon-debian-plain-wordmark:before{content:""}.devicon-debian-plain:before{content:""}.devicon-dot-net-plain-wordmark:before{content:""}.devicon-dot-net-plain:before{content:""}.devicon-drupal-plain-wordmark:before{content:""}.devicon-drupal-plain:before{content:""}.devicon-firefox-plain-wordmark:before{content:""}.devicon-firefox-plain:before{content:""}.devicon-foundation-plain-wordmark:before{content:""}.devicon-foundation-plain:before{content:""}.devicon-git-plain-wordmark:before{content:""}.devicon-git-plain:before{content:""}.devicon-grunt-line-wordmark:before{content:""}.devicon-grunt-line:before{content:""}.devicon-grunt-plain-wordmark:before{content:""}.devicon-grunt-plain:before{content:""}.devicon-gulp-plain:before{content:""}.devicon-html5-plain-wordmark:before{content:""}.devicon-html5-plain:before{content:""}.devicon-ie10-original:before,.devicon-ie10-plain:before{content:""}.devicon-illustrator-line:before{content:""}.devicon-illustrator-plain:before{content:""}.devicon-inkscape-plain-wordmark:before{content:""}.devicon-inkscape-plain:before{content:""}.devicon-java-plain-wordmark:before{content:""}.devicon-java-plain:before{content:""}.devicon-javascript-plain:before{content:""}.devicon-jquery-plain-wordmark:before{content:""}.devicon-jquery-plain:before{content:""}.devicon-krakenjs-plain-wordmark:before{content:""}.devicon-krakenjs-plain:before{content:""}.devicon-laravel-plain-wordmark:before{content:""}.devicon-laravel-plain:before{content:""}.devicon-less-plain-wordmark:before{content:""}.devicon-linux-plain:before{content:""}.devicon-mongodb-plain-wordmark:before{content:""}.devicon-mongodb-plain:before{content:""}.devicon-moodle-plain-wordmark:before{content:""}.devicon-moodle-plain:before{content:""}.devicon-mysql-plain-wordmark:before{content:""}.devicon-mysql-plain:before{content:""}.devicon-nodejs-plain-wordmark:before{content:""}.devicon-nodejs-plain:before{content:""}.devicon-oracle-original:before,.devicon-oracle-plain:before{content:""}.devicon-photoshop-line:before{content:""}.devicon-photoshop-plain:before{content:""}.devicon-php-plain:before{content:""}.devicon-postgresql-plain-wordmark:before{content:""}.devicon-postgresql-plain:before{content:""}.devicon-python-plain-wordmark:before{content:""}.devicon-python-plain:before{content:""}.devicon-rails-plain-wordmark:before{content:""}.devicon-rails-plain:before{content:""}.devicon-ruby-plain-wordmark:before{content:""}.devicon-ruby-plain:before{content:""}.devicon-sass-original:before,.devicon-sass-plain:before{content:""}.devicon-travis-plain-wordmark:before{content:""}.devicon-travis-plain:before{content:""}.devicon-trello-plain-wordmark:before{content:""}.devicon-trello-plain:before{content:""}.devicon-ubuntu-plain-wordmark:before{content:""}.devicon-ubuntu-plain:before{content:""}.devicon-vim-plain:before{content:""}.devicon-windows8-original-wordmark:before,.devicon-windows8-plain-wordmark:before{content:""}.devicon-windows8-original:before,.devicon-windows8-plain:before{content:""}.devicon-wordpress-plain-wordmark:before{content:""}.devicon-wordpress-plain:before{content:""}.devicon-yii-plain-wordmark:before{content:""}.devicon-yii-plain:before{content:""}.devicon-zend-plain-wordmark:before{content:""}.devicon-zend-plain:before{content:""}.devicon-amazonwebservices-original.colored,.devicon-amazonwebservices-plain-wordmark.colored{color:#f7a80d}.devicon-android-plain.colored,.devicon-android-plain-wordmark.colored{color:#a4c439}.devicon-angularjs-plain.colored,.devicon-angularjs-plain-wordmark.colored{color:#c4473a}.devicon-apache-plain.colored,.devicon-apache-plain-wordmark.colored,.devicon-apache-line.colored,.devicon-apache-line-wordmark.colored{color:#303284}.devicon-appcelerator-original.colored,.devicon-appcelerator-plain-wordmark.colored{color:#ac162c}.devicon-apple-original.colored{color:#000}.devicon-atom-original.colored,.devicon-atom-original-wordmark.colored{color:#67595d}.devicon-babel-plain.colored{color:#f9dc3e}.devicon-backbonejs-plain.colored,.devicon-backbonejs-plain-wordmark.colored{color:#002a41}.devicon-behance-plain.colored,.devicon-behance-plain-wordmark.colored{color:#0071e0}.devicon-bitbucket-plain.colored,.devicon-bitbucket-plain-wordmark.colored{color:#205081}.devicon-bootstrap-plain.colored,.devicon-bootstrap-plain-wordmark.colored{color:#59407f}.devicon-bower-plain.colored,.devicon-bower-plain-wordmark.colored,.devicon-bower-line.colored,.devicon-bower-line-wordmark.colored{color:#ef5734}.devicon-c-plain.colored,.devicon-c-plain-wordmark.colored,.devicon-c-line.colored,.devicon-c-line-wordmark.colored{color:#03599c}.devicon-cakephp-plain.colored,.devicon-cakephp-plain-wordmark.colored{color:#d43d44}.devicon-ceylon-plain.colored{color:#ab710a}.devicon-chrome-plain.colored,.devicon-chrome-plain-wordmark.colored{color:#ce4e4e}.devicon-codeigniter-plain.colored,.devicon-codeigniter-plain-wordmark.colored{color:#ee4323}.devicon-codepen-plain.colored,.devicon-codepen-plain-wordmark.colored{color:#231f20}.devicon-coffeescript-original.colored,.devicon-coffeescript-original-wordmark.colored{color:#28334c}.devicon-confluence-plain.colored,.devicon-confluence-plain-wordmark.colored{color:#205081}.devicon-couchdb-plain.colored,.devicon-couchdb-plain-wordmark.colored{color:#e42528}.devicon-cplusplus-plain.colored,.devicon-cplusplus-plain-wordmark.colored,.devicon-cplusplus-line.colored,.devicon-cplusplus-line-wordmark.colored{color:#9c033a}.devicon-csharp-plain.colored,.devicon-csharp-plain-wordmark.colored,.devicon-csharp-line.colored,.devicon-csharp-line-wordmark.colored{color:#68217a}.devicon-css3-plain.colored,.devicon-css3-plain-wordmark.colored{color:#3d8fc6}.devicon-cucumber-plain.colored,.devicon-cucumber-plain-wordmark.colored{color:#00a818}.devicon-d3js-plain.colored{color:#f7974e}.devicon-debian-plain.colored,.devicon-debian-plain-wordmark.colored{color:#a80030}.devicon-devicon-plain.colored,.devicon-devicon-plain-wordmark.colored{color:#60be86}.devicon-django-plain.colored,.devicon-django-plain-wordmark.colored,.devicon-django-line.colored,.devicon-django-line-wordmark.colored{color:#003a2b}.devicon-docker-plain.colored,.devicon-docker-plain-wordmark.colored{color:#019bc6}.devicon-doctrine-plain.colored,.devicon-doctrine-plain-wordmark.colored,.devicon-doctrine-line.colored,.devicon-doctrine-line-wordmark.colored{color:#f56d39}.devicon-dot-net-plain.colored,.devicon-dot-net-plain-wordmark.colored{color:#1384c8}.devicon-drupal-plain.colored,.devicon-drupal-plain-wordmark.colored{color:#0073ba}.devicon-electron-original.colored,.devicon-electron-original-wordmark.colored{color:#47848f}.devicon-elm-plain.colored,.devicon-elm-plain-wordmark.colored{color:#34495e}.devicon-ember-original-wordmark.colored{color:#dd3f24}.devicon-erlang-plain.colored,.devicon-erlang-plain-wordmark.colored{color:#a90533}.devicon-express-original.colored,.devicon-express-original-wordmark.colored{color:#444}.devicon-facebook-plain.colored{color:#3d5a98}.devicon-firefox-plain.colored,.devicon-firefox-plain-wordmark.colored{color:#dd732a}.devicon-foundation-plain.colored,.devicon-foundation-plain-wordmark.colored{color:#008cba}.devicon-gatling-plain.colored,.devicon-gatling-plain-wordmark.colored{color:#e77500}.devicon-gimp-plain.colored{color:#716955}.devicon-git-plain.colored,.devicon-git-plain-wordmark.colored{color:#f34f29}.devicon-github-plain.colored,.devicon-github-plain-wordmark.colored{color:#181616}.devicon-gitlab-plain.colored,.devicon-gitlab-plain-wordmark.colored{color:#e24329}.devicon-go-plain.colored,.devicon-go-line.colored{color:#000}.devicon-google-plain.colored,.devicon-google-plain-wordmark.colored{color:#587dbd}.devicon-gradle-plain.colored,.devicon-gradle-plain-wordmark.colored{color:#02303a}.devicon-grails-plain.colored{color:#feb672}.devicon-groovy-plain.colored{color:#619cbc}.devicon-grunt-plain.colored,.devicon-grunt-plain-wordmark.colored,.devicon-grunt-line.colored,.devicon-grunt-line-wordmark.colored{color:#fcaa1a}.devicon-gulp-plain.colored{color:#eb4a4b}.devicon-haskell-plain.colored,.devicon-haskell-plain-wordmark.colored{color:#5e5185}.devicon-handlebars-plain.colored,.devicon-handlebars-plain-wordmark.colored{color:#000}.devicon-heroku-original.colored,.devicon-heroku-original-wordmark.colored,.devicon-heroku-plain.colored,.devicon-heroku-plain-wordmark.colored,.devicon-heroku-line.colored,.devicon-heroku-line-wordmark.colored{color:#6762a6}.devicon-html5-plain.colored,.devicon-html5-plain-wordmark.colored{color:#e54d26}.devicon-ie10-original.colored{color:#1ebbee}.devicon-illustrator-plain.colored,.devicon-illustrator-line.colored{color:#faa625}.devicon-inkscape-plain.colored,.devicon-inkscape-plain-wordmark.colored{color:#000}.devicon-intellij-plain.colored,.devicon-intellij-plain-wordmark.colored{color:#136ba2}.devicon-ionic-original.colored,.devicon-ionic-original-wordmark.colored{color:#4e8ef7}.devicon-jasmine-plain.colored,.devicon-jasmine-plain-wordmark.colored{color:#8a4182}.devicon-java-plain.colored,.devicon-java-plain-wordmark.colored{color:#ea2d2e}.devicon-javascript-plain.colored{color:#f0db4f}.devicon-jeet-plain.colored,.devicon-jeet-plain-wordmark.colored{color:#ff664a}.devicon-jetbrains-plain.colored,.devicon-jetbrains-plain-wordmark.colored,.devicon-jetbrains-line.colored,.devicon-jetbrains-line-wordmark.colored{color:#f68b1f}.devicon-jquery-plain.colored,.devicon-jquery-plain-wordmark.colored{color:#0769ad}.devicon-krakenjs-plain.colored,.devicon-krakenjs-plain-wordmark.colored{color:#0081c2}.devicon-laravel-plain.colored,.devicon-laravel-plain-wordmark.colored{color:#fd4f31}.devicon-less-plain-wordmark.colored{color:#2a4d80}.devicon-linkedin-plain.colored,.devicon-linkedin-plain-wordmark.colored{color:#0076b2}.devicon-linux-plain.colored{color:#000}.devicon-meteor-plain.colored,.devicon-meteor-plain-wordmark.colored{color:#df5052}.devicon-mongodb-plain.colored,.devicon-mongodb-plain-wordmark.colored{color:#4faa41}.devicon-moodle-plain.colored,.devicon-moodle-plain-wordmark.colored{color:#f7931e}.devicon-mysql-plain.colored,.devicon-mysql-plain-wordmark.colored{color:#00618a}.devicon-nginx-original.colored,.devicon-nginx-original-wordmark.colored,.devicon-nginx-plain.colored,.devicon-nginx-plain-wordmark.colored{color:#090}.devicon-nodejs-plain.colored,.devicon-nodejs-plain-wordmark.colored{color:#83cd29}.devicon-nodewebkit-plain.colored,.devicon-nodewebkit-plain-wordmark.colored,.devicon-nodewebkit-line.colored,.devicon-nodewebkit-line-wordmark.colored{color:#3d3b47}.devicon-npm-original-wordmark.colored{color:#cb3837}.devicon-oracle-original.colored{color:#ea1b22}.devicon-photoshop-plain.colored,.devicon-photoshop-line.colored{color:#80b5e2}.devicon-php-plain.colored{color:#6181b6}.devicon-phpstorm-plain.colored,.devicon-phpstorm-plain-wordmark.colored{color:#5058a6}.devicon-postgresql-plain.colored,.devicon-postgresql-plain-wordmark.colored{color:#336791}.devicon-protractor-plain.colored,.devicon-protractor-plain-wordmark.colored{color:#b7111d}.devicon-pycharm-plain.colored,.devicon-pycharm-plain-wordmark.colored{color:#4d8548}.devicon-python-plain.colored,.devicon-python-plain-wordmark.colored{color:#ffd845}.devicon-rails-plain.colored,.devicon-rails-plain-wordmark.colored{color:#a62c46}.devicon-react-original.colored,.devicon-react-original-wordmark.colored{color:#61dafb}.devicon-redhat-plain.colored,.devicon-redhat-plain-wordmark.colored{color:#e93442}.devicon-redis-plain.colored,.devicon-redis-plain-wordmark.colored{color:#d82c20}.devicon-ruby-plain.colored,.devicon-ruby-plain-wordmark.colored{color:#d91404}.devicon-rubymine-plain.colored,.devicon-rubymine-plain-wordmark.colored{color:#c12c4c}.devicon-rust-plain.colored{color:#000}.devicon-safari-plain.colored,.devicon-safari-plain-wordmark.colored,.devicon-safari-line-wordmark.colored,.devicon-safari-line.colored{color:#1b88ca}.devicon-sass-original.colored{color:#c69}.devicon-scala-plain.colored,.devicon-scala-plain-wordmark.colored{color:#de3423}.devicon-sequelize-plain.colored,.devicon-sequelize-plain-wordmark.colored{color:#3b4b72}.devicon-sketch-line.colored,.devicon-sketch-line-wordmark.colored{color:#fdad00}.devicon-slack-plain.colored,.devicon-slack-plain-wordmark.colored{color:#2d333a}.devicon-sourcetree-plain.colored,.devicon-sourcetree-plain-wordmark.colored{color:#205081}.devicon-ssh-plain.colored,.devicon-ssh-plain-wordmark.colored{color:#231f20}.devicon-stylus-original.colored{color:#333}.devicon-swift-plain.colored,.devicon-swift-plain-wordmark.colored{color:#f05138}.devicon-symfony-original.colored,.devicon-symfony-original-wordmark.colored{color:#1a171b}.devicon-tomcat-line.colored,.devicon-tomcat-line-wordmark.colored{color:#d1a41a}.devicon-travis-plain.colored,.devicon-travis-plain-wordmark.colored{color:#bb2031}.devicon-trello-plain.colored,.devicon-trello-plain-wordmark.colored{color:#23719f}.devicon-twitter-plain.colored{color:#1da1f2}.devicon-typescript-plain.colored{color:#007acc}.devicon-ubuntu-plain.colored,.devicon-ubuntu-plain-wordmark.colored{color:#dd4814}.devicon-vagrant-plain.colored,.devicon-vagrant-plain-wordmark.colored{color:#127eff}.devicon-vim-plain.colored{color:#179a33}.devicon-visualstudio-plain.colored,.devicon-visualstudio-plain-wordmark.colored{color:#68217a}.devicon-vuejs-plain.colored,.devicon-vuejs-plain-wordmark.colored,.devicon-vuejs-line.colored,.devicon-vuejs-line-wordmark.colored{color:#41b883}.devicon-webpack-plain.colored,.devicon-webpack-plain-wordmark.colored{color:#1c78c0}.devicon-webstorm-plain.colored,.devicon-webstorm-plain-wordmark.colored{color:#2788b5}.devicon-windows8-original.colored,.devicon-windows8-original-wordmark.colored{color:#00adef}.devicon-wordpress-plain.colored,.devicon-wordpress-plain-wordmark.colored{color:#494949}.devicon-yarn-plain.colored,.devicon-yarn-plain-wordmark.colored{color:#2c8ebb}.devicon-yii-plain.colored,.devicon-yii-plain-wordmark.colored{color:#0073bb}.devicon-zend-plain.colored,.devicon-zend-plain-wordmark.colored{color:#68b604} \ No newline at end of file diff --git a/fonts/devicon.eot b/fonts/devicon.eot index 25c17e4979f8846062be85bf0b70cd28f068b9ec..badad5e600ec24d22d5b50e3d685730a59280cb4 100755 GIT binary patch delta 65 zcmdn9m3Plp-U&9$zuh-ZwBN=YQfSrqqxA=4>kp=_KbYV8OK)`l9nWv`m4Tau0R(O@ On-&kFw*@lq;RFD!#u^|1 delta 65 zcmdn9m3Plp-U&9$=XtkHwBN=Y#23)`qxA=4>kp=_KbYV8OK;;nAJ1>|m4Tau0R(O@ OO?d^Qw*@lq;RFDLz!|>) diff --git a/fonts/devicon.ttf b/fonts/devicon.ttf index 223cafa09d49addc022052b7fd20a141b4d6f24b..e629a49dc9c0392b789928d6d6edab9cb6a40230 100755 GIT binary patch delta 59 zcmbQSg?Gjl-U)%sA%#|rA*~^dtszWXLzv(COK)`l9nWv`m4Tau0R(O@n-&kFx5or9 H@8JXhcDEEe delta 59 zcmbQSg?Gjl-U)%sL3{y?A*~^dtszWXLzv(COK;;nAJ1>|m4Tau0R(O@O?d^Qx5or9 H@8JXhV!0GM diff --git a/fonts/devicon.woff b/fonts/devicon.woff index ef977ed0cb68102ea4f0c1326d36ed5f18acf63f..393b6cbd5c42921909ae02c37b587e251942ab91 100755 GIT binary patch delta 59 zcmaE|h4;x8-U+?TA%#|r6Iv%QwoYK$I)VAGzw}1;-|_r5Um3Vr7(n3mvT5-!di#n1 H<~^JM&|?-` delta 59 zcmaE|h4;x8-U+?TL3{y?6Iv%QwoYK$I)VAGzw|cV^YQ#PUm3Vr7(n3m(v(*)di#n1 H<~^JMyk! Date: Fri, 9 Oct 2020 16:20:47 -0700 Subject: [PATCH 5/5] Added a section on svg standards to CONTRIBUTING.md --- CONTRIBUTING.md | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 99e8a5ca..3e2229b1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,10 +6,11 @@ First of all, thanks for taking the time to contribute! This project can only gr

Table of Content

@@ -31,7 +32,7 @@ First of all, thanks for taking the time to contribute! This project can only gr
-

Icon Formats and Naming Conventions

+

Versions and Naming Conventions

Each icon can come in different versions. So far, we have:

  • original: the original logo. Can contains multiple colors. Example
  • @@ -42,18 +43,29 @@ First of all, thanks for taking the time to contribute! This project can only gr
  • line-wordmark: a one-color, line version of the original logo but with wordmark. Example

-It is not mandatory to have 6 versions for each icon. An icon can only have one or two variations available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon. +It is not mandatory to have 6 versions for each icon. An icon can only have one or two versions available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon.

-The plain and line versions (with or without wordmark) are designed to be available in the final icon font. This means they need to stay as simple as possible (one color and ensure that the paths are united before to export to svg). You can use a service like compressor or SVG Editor in order to optimize the svg file. +The plain and line versions (with or without wordmark) are designed to be available in the final icon font.

-The original versions are only available in svg format, so they do not need to be as simple and can contain numerous colors. +The original version are only available in svg format, so they do not need to be as simple and can contain numerous colors.

Some icons are really simple (like the Apple one), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make only one of the version (either "original" or "plain"). You can then add an alias in the devicon.json so they can be found with either the "original" or "plain" naming convention.

+
+

SVG Standards

+

Before you submit your logos/svgs, please ensure that they meet the following standard:

+
    +
  • The background must be transparent.
  • +
  • The plain and line versions (with or without wordmark) need to stay as simple as possible. They must have only one color and the paths are united before exporting to svg. +
  • +
  • Optimize/compress your SVGs. You can use a service like compressor or SVG Editor.
  • +
  • +
+

Organizational Guidelines

    @@ -65,7 +77,7 @@ Some icons are really simple (like the Apple one), so the original version can b

-

Update the devicon.json

+

Updating the devicon.json

Before you open a PR into Devicon, you'd have to update the devicon.json. This is essential for our build script to work and to document your work.

@@ -110,7 +122,7 @@ Some icons are really simple (like the Apple one), so the original version can b
-

Example

+

Example

As an example, let's assume you have created the svgs for Amazon Web Services and Redhat logos.