# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


catalog:
  - name: "Welcome"
    path: "/readme"
  - name: "Concepts and Designs"
    path: "/en/concepts-and-designs/readme"
    catalog:
      - name: "What is SkyWalking Satellite?"
        catalog:
          - name: "Overview and Core concepts"
            path: "/en/concepts-and-designs/overview"
          - name: "Project Goals"
            path: "/en/concepts-and-designs/project-goals"
      - name: "Design"
        catalog:
          - name: "Module Design"
            path: "/en/concepts-and-designs/module_design"
          - name: "Plugin mechanism"
            path: "/en/concepts-and-designs/plugin_mechanism"
          - name: "Project Structure"
            path: "/en/concepts-and-designs/project_structue"
          - name: "The design of the memory mapped queue"
            path: "/en/concepts-and-designs/mmap-queue"

  - name: "Setup"
    path: "/en/setup/readme"
    catalog:
      - name: "Configuration"
        catalog:
          - name: "Common Configuration"
            path: "/en/setup/configuration/common"
          - name: "Sharing Configuration"
            path: "/en/setup/configuration/sharing-plugins"
          - name: "Pipe Configuration"
            path: "/en/setup/configuration/pipe-plugins"
          - name: "Override Configuration"
            path: "/en/setup/configuration/override-settings"

      - name: "Plugins"
        catalog:
          - name: "client"
            catalog:
              - name: "kafka-client"
                path: "/en/setup/plugins/client_kafka-client"
          - name: "fallbacker"
            catalog:
              - name: "none-fallbacker"
                path: "/en/setup/plugins/fallbacker_none-fallbacker"
              - name: "timer-fallbacker"
                path: "/en/setup/plugins/fallbacker_timer-fallbacker"
          - name: "forwarder"
            catalog:
              - name: "nativelog-kafka-forwarder"
                path: "/en/setup/plugins/forwarder_nativelog-kafka-forwarder"
          - name: "queue"
            catalog:
              - name: "memory-queue"
                path: "/en/setup/plugins/queue_memory-queue"
              - name: "mmap-queue"
                path: "/en/setup/plugins/queue_mmap-queue"
          - name: "receiver"
            catalog:
              - name: "grpc-nativelog-receiver"
                path: "/en/setup/plugins/receiver_grpc-nativelog-receiver"
              - name: "http-nativelog-receiver"
                path: "/en/setup/plugins/receiver_http-nativelog-receiver"
          - name: "server"
            catalog:
              - name: "grpc-server"
                path: "/en/setup/plugins/server_grpc-server"
              - name: "http-server"
                path: "/en/setup/plugins/server_http-server"
              - name: "prometheus-server"
                path: "/en/setup/plugins/server_http-server"

  - name: "Guides"
    path: "/en/guides/readme"
    catalog:
      - name: "Contribution"
        catalog:
          - name: "How to write a plugin"
            path: "/en/guides/contribution/How-to-write-plugin"
          - name: "How to release"
            path: "/en/guides/contribution/How-to-release"
      - name: "Test"
        catalog:
          - name: "How to do unit test"
            path: "/en/guides/test/How-to-unit-test"
      - name: "Compile"
        catalog:
          - name: "How to compile SkyWalking Satellite"
            path: "/en/guides/compile/How-to-compile"
  - name: "FAQs"
    path: "/en/FAQ/readme"





