{"id":29958202,"url":"https://github.com/telerik/docs-seed","last_synced_at":"2026-03-07T08:02:25.772Z","repository":{"id":37444174,"uuid":"120606629","full_name":"telerik/docs-seed","owner":"telerik","description":"Telerik Documentation Infrastructure","archived":false,"fork":false,"pushed_at":"2025-02-18T16:29:39.000Z","size":8968,"stargazers_count":7,"open_issues_count":71,"forks_count":21,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-02-18T17:32:02.312Z","etag":null,"topics":["docker","documentation","progress","telerik"],"latest_commit_sha":null,"homepage":"https://docs.telerik.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/telerik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-07T11:29:36.000Z","updated_at":"2025-02-18T16:29:40.000Z","dependencies_parsed_at":"2023-11-07T14:48:00.392Z","dependency_job_id":"88a4a73a-1dd5-4d3f-9c88-7f8023e01fcd","html_url":"https://github.com/telerik/docs-seed","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/telerik/docs-seed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telerik%2Fdocs-seed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telerik%2Fdocs-seed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telerik%2Fdocs-seed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telerik%2Fdocs-seed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/telerik","download_url":"https://codeload.github.com/telerik/docs-seed/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telerik%2Fdocs-seed/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268604282,"owners_count":24276998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","documentation","progress","telerik"],"created_at":"2025-08-03T20:09:52.370Z","updated_at":"2026-03-07T08:02:20.734Z","avatar_url":"https://github.com/telerik.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docs-seed repo\n\nContains the documentation site implementation.\n\n- [Local Setup :computer:](#local-setup)\n- [Troubleshooting :hankey:](#troubleshooting)\n- [Extra Features :moneybag:](#extra-features)\n  * [Additional config File](#additional-config-file)\n  * [Live Sync](#livesync)\n  * [Build without Serve](#only-build)\n  * [Build Site Partially](#build-site-partially)\n  * [Exclude Articles from Navigation Tree](#exclude-articles-from-navigation-tree)\n  * [Webinar Banner](#webinar-banner)\n- [Build API Reference](#build-api-reference)\n- [Documentation Best Practices](#documentation-best-practices)\n- [docs-seed Syntax Guidelines](#docs-seed-syntax-guidelines)\n\n## Local Setup\n\nThis section describes how to run the documentation locally.\n\n### Prerequisites\n\n- Install [Node.js](https://nodejs.org/en/) and restart the machine.\n- Choose a documentation repo to which you want to contribute. For example, [https://github.com/telerik/xaml-docs.git](https://github.com/telerik/xaml-docs.git).\u003cbr/\u003eReferred to as **MY-REPO** below.\n- Pull the documentation repo locally. For example, `\"D:\\Work\\xaml-docs\"`.\u003cbr/\u003eReferred to as **DOCS-PATH** below.\n\n\u003e * For products such as Kendo UI for jQuery, UI for ASP.NET MVC, and UI for ASP.NET Core, the documentation is part of the source code repo. For these products, **'DOCS-PATH' is a nested folder** in the cloned repo, for example, `\"D:\\Work\\kendo-ui-core\\docs\"`.\n\n### Instructions (without Docker)\n\n1. Install Ruby 2.3.3 ([64-bit](https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.3/rubyinstaller-2.3.3-x64.exe) or [32-bit](https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.3/rubyinstaller-2.3.3.exe)).\n\n  \u003e Select `Add Ruby executables to your PATH` and `Associate .rb and .rbw files with this Ruby installation` during the installation.\n\n2. Download and extract the Ruby DevKit 4.7.2 ([64-bit](https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe) or [32-bit](https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe)). Note the location of the extracted archive (for example: `C:\\RubyDevKit`).\n\n3. Install and init the Ruby DevKit. For more information, see [here](http://jekyll-windows.juthilo.com/1-ruby-and-devkit/).\n\n  ```bash\n  cd C:\\RubyDevKit\n  ruby dk.rb init\n  ruby dk.rb install \n  ```\n\n4. Install RubyGems 3.2.29.\n\n  ```bash\n  gem update --system 3.2.29\n  ```\n\n5. Install Bundler 2.3.11.\n\n  ```bash\n  gem install bundler -v 2.3.11\n  ```\n\n  \u003e If you experience SSL errors with Bundler, similar to the one described in [RubyGems SSL Certificate Update](https://guides.rubygems.org/ssl-certificate-update/), follow the solution steps from [Bundler.io - Installing new RubyGems certificates](https://bundler.io/guides/rubygems_tls_ssl_troubleshooting_guide.html#installing-new-rubygems-certificates).\n\n6. Clone the **docs-seed** repo.\n\n  ```bash\n  git clone git@github.com:telerik/docs-seed.git\n  ```\n\n7. Go to the directory for the pulled **docs-seed** repo (for example, `D:\\Work\\docs-seed`).\n8. Open your preferred Bash-enabled terminal (for example, `gitBash`).\n9. Run the following command and pass the **DOCS-PATH** path (the **quotes** are mandatory):\n\n  ```bash\n  sh copy_local.sh \"D:\\Work\\xaml-docs\"\n  ```\n\n  \u003e If you are running the documentation on a macOS or another OS where the `robocopy` command is unavailable, pass a second parameter to the `copy_local.sh script`: `sh copy_local.sh \"D:\\Work\\xaml-docs\" true`.\n\n10. In the terminal, navigate to the **DOCS-PATH** directory.\n\n  ```bash\n  cd D:\\Work\\xaml-docs\n  ```\n\n11. Install the required dependencies:\n  \n  ```bash\n  bundle install \n  ```\n\n12. Run the following command in the root folder of the cloned documentation repo:\n  \n  ```bash\n  bundle exec jekyll serve\n  ```\n\n13. In your browser, navigate to the server address shown in the terminal: `http://127.0.0.1:4000/`.\u003cbr/\u003eFor documentation sets nested in the documentation repo, you need to navigate to the respective folder. For example, for the WPF documentation, the correct server address will be `http://127.0.0.1:4000/devtools/wpf/`.\n\n  \u003e If you can't open the URL, replace the `127.0.0.1` with `localhost` (`http://localhost:4000`).\n\n  \u003e If you want to change the host or port, pass the `--host` or `--port` arguments to the command from **Step 12**. For example, `bundle exec jekyll serve --host=0.0.0.0 --port=1234`.\n\n### Instructions (with Docker)\n\n\u003e **Caution**\n\u003e As of November 2023, the support for the docs-seed setup via Docker is limited. See [Instructions (without Docker)](#instructions-without-docker) instead.\n\n1. Ensure that you have installed Docker with the default settings enabled. See the [official Docker installation guide](https://docs.docker.com/install/).\n\n  \u003e You can use Docker Community Edition (CE).\n\n2. Clone the **docs-seed** repo.\n  \n  ```bash\n  git clone git@github.com:telerik/docs-seed.git\n  ```\n\n3. Go to the directory in which you've pulled it (for example, `D:\\Work\\docs-seed`).\n4. Open a terminal of your choice (for example, `gitBash`).\n5. Run the following command by passing the **DOCS-PATH** path (the **quotes** are mandatory):\n  \n  ```bash\n  sh copy_local.sh \"D:\\Work\\xaml-docs\"\n  ```\n\n  \u003e If you are running the documentation on a macOS or another OS where the `robocopy` command is unavailable, pass a second parameter to the `copy_local.sh` script: `sh copy_local.sh \"D:\\Work\\xaml-docs\" true`.\n\n6. Go to the **DOCS-PATH** directory.\n7. Open the `Dockerfile` with an editor\n8. Delete the following two rows:\n\n  ```\n  ADD Gemfile ${APP_ROOT}/\n  ADD Gemfile.lock ${APP_ROOT}/\n  ```\n\n9. Add the following row:\n\n  ```\n  ENV BUNDLER_VERSION=2.1.4\n  ```\n10. Delete the `GemFile.lock` file\n11. Open a terminal of your choice (for example, `gitBash`).\n12. Execute the following bash command in the root folder (where the `Dockerfile` is located).\n  \n  ```bash\n  sh start-docs.sh\n  ```\n\n13. Open the documentation site on the server address shown in the terminal: `http://0.0.0.0:4000/`. If you can't open the URL, replace the `0.0.0.0` with `localhost`: `http://localhost:4000`. For example, for the WPF documentation, this will be `http://0.0.0.0:4000/devtools/wpf/`.\n14. To stop the web site and the container in which it has been served, navigate to the terminal in which you've executed the previous command, and press `CTRL+C`. On passing an additional `config` file for the WPF and Silverlight documentation, refer to [this section](#additional-config-file).\n\n## Troubleshooting\n\n### Get More Detailed Error Message\n\nTo get more information and a full stack trace of the error, add `--trace` after your `jekyll` command. For example, `bundle exec jekyll build --trace`.\n\n### Does Not Serve\n\nYou executed `sh start-docs.sh` but you did not see any Jekyll output. Instead, the command ended with `the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'`.\n\nThis happens when using Git Bash with the MinTTY console. This console does not allow combinations such as `Ctrl+C` to pass to the Docker container and that's why you get such an error.\n\nTo solve this issue, prefix the command with `winpty`:\n\n```bash\nwinpty sh start-docs.sh\n```\n\nAa an alternative, re-install Git Bash and choose the default Windows terminal this time. For more details, refer to the [Docker for Windows: Interactive Sessions in MinTTY Git Bash](https://willi.am/blog/2016/08/08/docker-for-windows-interactive-sessions-in-mintty-git-bash/) post.\n\n### Ctrl+C Does Not Work\n\nWhen you want to stop serving the docs, you may have to repeat the `Ctrl+C` command or press `Enter` after it.\n\n### .gitignore Is always Modified\n\nThe scripts that copy the seed repo to the content repo (**MY-REPO**) also update the `.gitignore` file to avoid creating unstaged changes together with the work files that must not be committed. If you keep getting the `.gitignore` checked out, identify the changes as compared to the original and commit the version that matches what the tool generates to your repo.\n\n### Performance\n\nDocker is a resource-intensive tool. If you are not using it on a daily basis, consider preventing it from running on startup. Right-click its **Tray** icon and navigate to **Settings** \u003e **General**. Uncheck **Start Docker when you log in**. This can save you time when booting up/logging in, but you will need to explicitly start Docker before working on any docs-seed documentation.\n\nAlso, it tends to require a lot of HDD space, which may be an issue if you are running it on an SSD drive with a limited capacity. You can reduce its quota by navigating to the **Settings** dialog \u003e **Advanced** and either change the image location, and/or reduce its max size. This also lets you limit its RAM consumption.\n\n### Encoding Problems while Building\n\nWhen you try to build the documentation site, you may see an error including the following `incomplete \"\\n\" on UTF-16LE` message. It might be caused because of different things. Use the following steps to try to fix or workaround it:\n\n1. Ensure [Node.js](https://nodejs.org/en/) is installed by typing `node -v` in a command prompt. The machine must be restarted after a `Node.js` installation.\n1. Allow [files with long paths](https://confluence.atlassian.com/bamkb/git-checkouts-fail-on-windows-with-filename-too-long-error-unable-to-create-file-errors-867363792.html) using the following command:\n  ```bash\n  git config --system core.longpaths true\n  ```\n\n1. Add the following [System Environment Variables](https://www.linkedin.com/pulse/how-resolve-utf-8-encoding-issue-jenkins-ajuram-salim/)\n  * `JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8`\n  * `LANG: en_GB.UTF-8`\n1. Modify the `runtimes.rb` file in the `execJs` gem by changing the `UTF-16LE` with the `UTF-8` value. For details, [see the instructions here](https://stackoverflow.com/questions/25830561/incomplete-n-on-utf-16le-error) or [here](https://stackoverflow.com/questions/12520456/execjsruntimeerror-on-windows-trying-to-follow-rubytutorial). The `runtimes.rb` file is located in `[Ruby Installation folder]\\lib\\ruby\\gems\\2.3.0\\gems\\execjs-2.7.0\\lib\\execjs`.\n\n### Known Error Messages\n\n* `jekyll 3.3.1 | Error:  [prev_next plugin] Comparing the pages notes.md and sitemap.xml failed`\n  * Usually happens when a new article does not have `position` property in the front-matter. To solve this issue, add a number to the `position` property. If you want some articles to sort alphabetically, they need to have the same `position` value.\n  * It might also happen if a folder or a file is magically added to the docs repo folder. To solve this issue, clean the folder and make a fresh clone of the docs repo.\n\n* `jekyll 3.3.1 | Error: 404 Not Found`\u0026mdash;This is often observed when you create a new documentations and when no entry for the product in the Top Navigation list exists. To solve this issue, add an entry for your documentation as in the [feat: add MAUI to top navigation](https://github.com/telerik/docs-seed/commit/454d3178dbe65caa1e84b248206a514e4227d995#diff-96a33d63722834501d92ed56323571da7dd726397623401a2a25f4ac6610a553) commit for the `/_plugins/top_navigation.rb` file. If the Telerik Web Team do not have the Top Navigation ready yet, you can temporarily reuse the top navigation value property from another product to make the build successful.\n\n## Extra Features\n\nYou might find the following features useful:\n* [Additional config File](#additional-config-file)\n* [Live Sync](#livesync)\n* [Build without Serve](#only-build)\n* [Build Site Partially](#build-site-partially)\n* [Exclude Articles from Navigation Tree](#exclude-articles-from-navigation-tree)\n* [Webinar Banner](#webinar-banner)\n\n### Additional Config File\n\nTo add an additional `config.yml` file, pass it to the above command as follows:\n```bash\nsh start-docs.sh _silverlight.yml\n```\n\n### LiveSync\n\nTo monitor the changes you are making on the built documentation, execute the following command in a new terminal in the root directory of the site:\n```bash\nsh watch.sh\n```\n\n\u003e You need to have [Node.js](https://nodejs.org/en/) installed.\n\n### Only Build\n\nTo only run `jekyll build` and not `jekyll serve`, execute the following bash command:\n```bash\nsh build-docs.sh\n```\n\nThis can be useful if you want to (or already have) set up a local IIS to point to the `_site` folder in your documentation repo. This allows you to also test redirects that `jekyll serve` does not support.\n\n### Build Site Partially\n\nTo speed up the building time of the web site, you can pass **only** specific parts of it\u0026mdash;the folders you want to include in the site.\n\nTo achieve this, execute the `sh modify-config.sh` script with passing the corresponding arguments which are:\n\n- `-i,--include`\u0026mdash;The folders you want to include in the final build. Multiple folders are separated with a comma. No spaces are allowed.\n- `-c,--config`\u0026mdash;The path to an additional config file which will be used for the build (more about [additional config file](#additional-config-file)).\n- `-s,--serve`\u0026mdash;Accepts `true`/`false`. Indicates whether the Jekyll will only build or build and serve.\n- `-d,--docker`\u0026mdash;Accepts `true`/`false`. Indicates whether the site will run in Docker (set `--docker=true` if you're using Docker).\n\nFor example, if you want to build only the documentation for two controls, the Barcode and the Chart, you are using Docker, and you have an extra config YAML file. Then you have to open a terminal and execute the following command:\n\n`sh modify-config.sh --include=controls/barcode,controls/Chart --docker=true --config=_extra.yml`\n\n### Exclude Articles from Navigation Tree\n\nIf you have some obsolete articles or whole folders that you need to hide from the navigation tree, use the `exclude_navigation` array in the settings of the `config.yml` file in your repository. The example below shows how to exclude listing all articles in `knowledge-base` folder as well as `sharepoint` folder.\n\nFor example, from `https://github.com/telerik/ajax-docs/blob/master/_config.yml#L6`, `exclude_navigation: [\"sharepoint/2007/*\" ,\"knowledge-base/*\"]`\n\n### Webinar Banner\n\nMoved in wiki under the [Announcements banner](https://github.com/telerik/docs-seed/wiki/Yellow-ribbon-banner-for-announcements#announcements-banner) article.\n\n## Build API Reference\n\nA [DocFX](https://dotnet.github.io/docfx/)-based infrastructure generates the API reference portion of the site for you. To use it, you need the following:\n\n* The docs-seed repo on your build machine.\n\n* An API ref link in your table of contents on the left. To enable it, add the following line in your `_config.yml` file:\n\n    `_config.yml`\n    \n        `api_reference_url: \"api/\"`\n        \n* A folder on a shared network location that the build can access, and that contains the `.dll` and `.xml` files you want generated.\n\n* The assets for building the API reference in your repo. You can start by copying existing assets, for example, [from WinForms](https://github.com/telerik/winforms-docs/tree/master/_assetsApi). Note that the templates are plain HTML for the time being, so you must keep them in sync with your repo code manually: update the footer template with the generated HTML of your own docs, make sure the search template can reach the scripts it needs (can be an issue if you have cache busting enabled in your own repo). Also, update the `index.md` file to have the contents suitable for your case. Keep them updated if you change your own repo as well.\n\n* An `MSBuild` step in your content repo builds that will take the binaries, XML files and content repo, build the HTML files for the API ref, and copy them to the `_site/api` folder in your content repo.\n\n    This build is executed through the [`_buildApi/BuildApiReference.proj`](https://github.com/telerik/docs-seed/blob/master/_buildApi/BuildApiReference.proj) file. For example, in the VS command prompt: `msbuild.exe BuildApiReference.proj /p:LatestBinariesPath=\\\\\\\\someNetworkServer\\MySourceFiles;DocsRepoName=blazor-docs;DocumentationBaseUrl=https://docs.telerik.com/blazor-ui;DocsRepoApiAssetsFolder=_assetsApi;HasApiFilter=true`.\n     \n     \u003enote Depending on the machine culture, you might need to use a comma `,` instead of a semi-colon `;` otherwise you will get a `DocsRepoName is not defined` error\n           ```\n           (CheckRequiredProperties target) -\u003e\n              D:\\DocsSeed\\_buildApi\\BuildApiReference.proj(26,5): error : DocsRepoName is not defined (Ex. winforms-docs)\n           ```\n           \n    Here is a list of the build parameters and their purpose:\n    \n    * `LatestBinariesPath`\u0026mdash;The path to where you have the `.dll`+`.xml` pairs of code you want documented. The format is usually resembles `\\\\\\\\someNetworkServer\\MySourceFiles` or `C:\\work\\myFolder`. The escaping of the backslashes is an example for using this as a build parameter.\n    \n    * `DocsRepoName`\u0026mdash;The name of the repo with your contents. By default, the build expects that the docs-seed repo and the content repo are located in adjacent folders.  So, for example, pass only `blazor-docs` or `winforms-docs`, or `teststudio/docs` (when the docs are nested further down in a folder inside your repo).\n    \n    * `DocumentationBaseUrl`\u0026mdash;The base URL of your docs when on the live server. Used for the `sitemap.xml` file. For example, `https://docs.telerik.com/blazor-ui/`.\n    \n    * `DocsRepoApiAssetsFolder`\u0026mdash;This is the location for the build assets specific to your repo (at the time of writing, search, footer templates, feedback form, plus some styles). If you copy from an existing repo, this is always `_assetsApi`.\n    \n    * `HasApiFilter`\u0026mdash;An `optional` parameter in case you want to avoid generating API reference docs for some classes or their members. See the [DocFX docs on the matter](https://dotnet.github.io/docfx/tutorial/howto_filter_out_unwanted_apis_attributes.html) for syntax and examples. To use this filter, you must add a file in your repo with the desired filter contents, and put it in `\u003cDocsRepoApiAssetsFolder\u003e\\filterConfig.yml`. The file is always at the root of the API assets folder, and is always called `filterConfig.yml`. Here's what DocFX generates at the time of writing (10 Jul 2019, DocFX version 2.40.5):\n    \n      **C#**\n\n          //GENERATED\n          public string publicTest;\n          protected string protectedTest;\n          protected internal string protectedInternalTest;\n\n          //NOT GENERATED\n          private string privateTest;\n          internal string internalTest;\n          private protected string privateProtectedTest;\n\n## Documentation Best Practices\n\nIf you need to create new documentation (for example, for a new product), use [`docs-content-seed`](https://github.com/telerik/docs-content-seed) repository as an auxiliary part to this one.\n\nFor best practices and industry standards on creating and maintaining documentation, go to the public [Progress DevTools Style Guide](https://docs.telerik.com/style-guide/introduction).\n\n## docs-seed Syntax Guidelines\n\nTo ensure the syntax you use when you add or edit the documentation will properly render the content, read the [syntax guidelines in the docs-seed Wiki](https://github.com/telerik/docs-seed/wiki/Handling-Redirects).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelerik%2Fdocs-seed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftelerik%2Fdocs-seed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelerik%2Fdocs-seed/lists"}