<!--
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.
-->

<!--
____  _______     __  _        _    _  _______ 
|  _ \| ____\ \   / / | |      / \  | |/ / ____|
| | | |  _|  \ \ / /  | |     / _ \ | ' /|  _|  
| |_| | |___  \ V /   | |___ / ___ \| . \| |___ 
|____/|_____|  \_/    |_____/_/   \_\_|\_\_____|


CONFIGURATION-UI: Production Mode HTML
https://github.com/apache/incubator-devlake/wiki

-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Devlake Config-UI</title>
    <meta
      name="description"
      content="Dev Lake is the one-stop solution that integrates, analyzes, and visualizes software development."
    />
    <meta name="keywords" content="big data, devops, data warehouse, big code" />
    <meta name="robots" content="noindex, nofollow" />
    <link rel="icon" href="/favicon.ico" />
    <title>Lake: Config UI</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>
