|
1 | | -# React + TypeScript + Vite |
| 1 | +<!-- PROJECT LOGO --> |
| 2 | +<br /> |
| 3 | +<div align="center"> |
| 4 | + <a href="https://zenml.io"> |
| 5 | + <img alt="ZenML Logo" src="https://raw.githubusercontent.com/zenml-io/zenml/80ca82a763d2da22bdf6558cde5e9d9bdfeafd9f/docs/book/.gitbook/assets/header.png" alt="ZenML Logo"> |
| 6 | + </a> |
| 7 | + <h3 align="center">Open-source companion dashboard for |
| 8 | + <a href="https://github.com/zenml-io/zenml">ZenML</a>. |
| 9 | + </h3> |
| 10 | + <h3 align="center">Build portable, production-ready MLOps pipelines.</h3> |
| 11 | + <p align="center"> |
| 12 | + <div align="center"> |
| 13 | + Join our <a href="https://zenml.io/slack-invite" target="_blank"> |
| 14 | + <img width="18" src="https://cdn3.iconfinder.com/data/icons/logos-and-brands-adobe/512/306_Slack-512.png" alt="Slack"/> |
| 15 | + <b>Slack Community</b> </a> and be part of the ZenML family. |
| 16 | + </div> |
| 17 | + <br /> |
| 18 | + <a href="https://zenml.io/features">Features</a> |
| 19 | + · |
| 20 | + <a href="https://zenml.io/roadmap">Roadmap</a> |
| 21 | + · |
| 22 | + <a href="https://github.com/zenml-io/zenml-dashboard/issues">Report Bug</a> |
| 23 | + · |
| 24 | + <a href="https://zenml.io/discussion">Vote New Features</a> |
| 25 | + · |
| 26 | + <a href="https://blog.zenml.io/">Read Blog</a> |
| 27 | + · |
| 28 | + <a href="https://www.zenml.io/company#team">Meet the Team</a> |
| 29 | + <br /> |
| 30 | + <br /> |
| 31 | + </p> |
| 32 | +</div> |
2 | 33 |
|
3 | | -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. |
| 34 | +--- |
4 | 35 |
|
5 | | -Currently, two official plugins are available: |
| 36 | +# ⚡ Getting Started |
6 | 37 |
|
7 | | -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh |
8 | | -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh |
| 38 | +## 🔋 Local Installation |
9 | 39 |
|
10 | | -## Expanding the ESLint configuration |
| 40 | +To get started with the ZenML Dashboard, follow these steps: |
11 | 41 |
|
12 | | -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: |
| 42 | +1. **Install Node.js (v20):** |
13 | 43 |
|
14 | | -- Configure the top-level `parserOptions` property like this: |
| 44 | + - Ensure you have Node.js installed. You can either install version 18 directly or use [nvm (Node Version Manager)](https://github.com/nvm-sh/nvm) with the following commands: |
15 | 45 |
|
16 | | -```js |
17 | | -export default { |
18 | | - // other rules... |
19 | | - parserOptions: { |
20 | | - ecmaVersion: "latest", |
21 | | - sourceType: "module", |
22 | | - project: ["./tsconfig.json", "./tsconfig.node.json"], |
23 | | - tsconfigRootDir: __dirname |
24 | | - } |
25 | | -}; |
26 | | -``` |
| 46 | + ```bash |
| 47 | + nvm install 20 |
| 48 | + nvm use 20 |
| 49 | + ``` |
27 | 50 |
|
28 | | -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` |
29 | | -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` |
30 | | -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list |
| 51 | +2. **Install Pnpm:** |
31 | 52 |
|
| 53 | + - The project uses Pnpm as the package manager. Install it with: |
32 | 54 |
|
33 | | -- Spin up ZenML Server with the following command `docker run -it -d -p 8080:8080 --name zenml zenmldocker/zenml-server` |
| 55 | + ```bash |
| 56 | + npm install -g pnpm |
| 57 | + ``` |
| 58 | + |
| 59 | +3. **Install Dependencies:** |
| 60 | + |
| 61 | + - Navigate to the project directory and install dependencies: |
| 62 | + |
| 63 | + ```bash |
| 64 | + pnpm install |
| 65 | + ``` |
| 66 | + |
| 67 | +4. **Set Environment Variable:** |
| 68 | + |
| 69 | + - Configure the environment variable `VITE_API_BASE_URL` by replacing `<YOUR_ZENML_SERVER_DEPLOYMENT_URL>` with your ZenML Server deployment URL. Example: |
| 70 | + |
| 71 | + ```bash |
| 72 | + export VITE_API_BASE_URL="https://your-zenml-server-url/api/v1" |
| 73 | + ``` |
| 74 | + |
| 75 | +> [!IMPORTANT] |
| 76 | +> The frontend and the server-url needs to be on the same domain, e.g. `localhost` for local development |
| 77 | + |
| 78 | +> [!NOTE] |
| 79 | +> For local development you **don't** need to set `VITE_FEATURE_OS_KEY` |
| 80 | +> You can set the `VITE_FRONTEND_VERSION` to a version number, e.g `v0.17.0`. This value is used to read the UI Version from the environment |
| 81 | +
|
| 82 | +5. **Run Development Server:** |
| 83 | +
|
| 84 | + - For development, run the server with: |
| 85 | +
|
| 86 | + ```bash |
| 87 | + pnpm dev |
| 88 | + ``` |
| 89 | +
|
| 90 | + - Alternatively, build the project for production with: |
| 91 | +
|
| 92 | + ```bash |
| 93 | + pnpm build |
| 94 | + ``` |
| 95 | +
|
| 96 | +6. **Using Docker (Optional):** |
| 97 | +
|
| 98 | + - ZenML provides Docker images for the server and dashboard. Run the following command to serve both: |
| 99 | +
|
| 100 | + ```bash |
| 101 | + docker run -it -d -p 8080:8080 --name zenml zenmldocker/zenml-server |
| 102 | + ``` |
| 103 | +
|
| 104 | + - Access the dashboard at `http://localhost:8080` |
| 105 | +
|
| 106 | +For detailed deployment instructions and additional options, refer to the [deployment guide](https://docs.zenml.io/user-guide/starter-guide/switch-to-production). |
| 107 | +
|
| 108 | +Now you're ready to explore and visualize your ML pipelines, stacks, and artifacts with the ZenML Dashboard! |
| 109 | + |
| 110 | +# 🤝 ZenML Dashboard Integration |
| 111 | + |
| 112 | +The ZenML Dashboard is a Typescript React-based application designed to seamlessly integrate with the main [ZenML Python package](https://github.com/zenml-io/zenml). It serves as a unified platform for managing and visualizing your ML pipelines, stacks, and artifacts in one centralized location. |
| 113 | + |
| 114 | +## Integration Overview |
| 115 | + |
| 116 | +The ZenML Dashboard is intricately connected with the ZenML Server as its backend and is not intended for standalone use. Here's a brief overview of how it fits into the ZenML ecosystem: |
| 117 | +
|
| 118 | +- **Sister Repository:** |
| 119 | +
|
| 120 | + - The dashboard resides in this repository, acting as a sister repository to the main [ZenML Python package repo](https://github.com/zenml-io/zenml). |
| 121 | +
|
| 122 | +- **Bundled Build Files:** |
| 123 | +
|
| 124 | + - The dashboard build files are bundled into the [ZenML PyPi package](https://pypi.org/workspace/zenml/) and are included with each version of the ZenML Python package. These build files, generated by `yarn build`, correspond to specific versions of the dashboard. |
| 125 | +
|
| 126 | +- **Local Deployment:** |
| 127 | +
|
| 128 | + - Serve the static build files locally using the ZenML Python package: |
| 129 | +
|
| 130 | + ```bash |
| 131 | + zenml up |
| 132 | + ``` |
| 133 | +
|
| 134 | + This creates a local daemon that serves the files in a [FastAPI](https://github.com/tiangolo/fastapi) server. |
| 135 | +
|
| 136 | +# 🏄 User Experience |
| 137 | +
|
| 138 | +## 🔐 Log In |
| 139 | +
|
| 140 | +Logging into the ZenML Dashboard is a simple process. Navigate to the login page and enter your credentials. |
| 141 | +
|
| 142 | +## 🗂 Pipelines, Stacks, Components and other resources |
| 143 | +
|
| 144 | +Explore your machine learning artifacts effortlessly. The dashboard offers a structured view of your pipelines, stacks, components, etc... making it easy to manage and visualize your workflows. |
| 145 | +
|
| 146 | +This combination of a user-friendly interface and visualizations enhances your experience, helping you navigate and understand your machine learning processes efficiently. |
| 147 | +
|
| 148 | +# 🙌 Contributing |
| 149 | +
|
| 150 | +We would love to develop ZenML together with our community! The best way to get |
| 151 | +started is to select any issue from the [`good-first-issue` |
| 152 | +label](https://github.com/zenml-io/zenml-dashboard/labels/good%20first%20issue). |
| 153 | +
|
| 154 | +If you would like to contribute, please review our [Contributing |
| 155 | +Guide](CONTRIBUTING.md) for all relevant details. |
| 156 | +
|
| 157 | +# 🆘 Getting Help |
| 158 | +
|
| 159 | +Need a helping hand? We've got you covered! Getting assistance with ZenML is quick and easy. |
| 160 | + |
| 161 | +1. **Join our Slack Community:** |
| 162 | + |
| 163 | + - Our lively Slack community is buzzing with friendly faces and helpful discussions. Drop by, ask questions, and connect with fellow enthusiasts. [Get your invite](https://zenml.io/slack/). |
| 164 | + |
| 165 | +2. **Open an Issue:** |
| 166 | + |
| 167 | + - Have a specific problem or found a bug? Open an issue on our [GitHub repo](https://github.com/zenml-io/zenml-dashboard/issues/new/choose). Our team and community members regularly monitor and respond. |
| 168 | + |
| 169 | +3. **Check the Documentation:** |
| 170 | + - Explore our comprehensive [documentation](https://docs.zenml.io/) for in-depth guides, tutorials, and troubleshooting tips. It's a treasure trove of knowledge to empower your ZenML journey. |
| 171 | +
|
| 172 | +# 📜 License |
| 173 | +
|
| 174 | +ZenML Dashboard is distributed under the terms of the Apache License Version 2.0. |
| 175 | +A complete version of the license is available in the [LICENSE](LICENSE) file in |
| 176 | +this repository. Any contribution made to this workspace will be licensed under |
| 177 | +the Apache License Version 2.0. |
0 commit comments