# 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: "Designs"
    catalog:
      - name: "Proposal"
        path: "/design/proposal"
  - name: "Setup"
    catalog:
      - name: "Java Agent Injector"
        path: "/java-agent-injector"
      - name: "Operator"
        path: "/operator"
      - name: "Adapter"
        path: "/custom-metrics-adapter"
  - name: "Examples"
    catalog:
      - name: "Inject Java Agent"
        path: "/examples/java-agent-injector-usage"
      - name: "Deploy OAP and UI"
        path: "/examples/default-backend"
      - name: "Deploy Storage"
        path: "/examples/storage"
      - name: "Fetch metrics"
        path: "/examples/istio-controlplane"
      - name: "Install Satellite"
        path: "/examples/satellite"
      - name: "Deploy Event Exporter"
        path: "/examples/event-exporter"
  - name: "Contributing Guides"
    catalog:
      - name: "Contribute"
        path: "https://skywalking.apache.org/docs/main/latest/en/guides/readme/"
      - name: "Become A Committer"
        path: "https://skywalking.apache.org/docs/main/latest/en/guides/asf/committer/"
      - name: "Release Guide"
        path: "/release"
  - name: "Changelog"
    path: "https://github.com/apache/skywalking-swck/tree/master/changes"
