Skip to content

Commit 0d7848a

Browse files
committed
Merge branch 'main' of https://github.com/zenml-io/zenml-ui into main
2 parents e597411 + 89e1f45 commit 0d7848a

File tree

187 files changed

+6950
-1448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+6950
-1448
lines changed

.github/workflows/release.yml

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
workflow_dispatch:
55
push:
66
tags:
7-
- "v*"
7+
- "*"
88

99
jobs:
1010
release:
@@ -13,8 +13,9 @@ jobs:
1313
steps:
1414
- name: Checkout Repository
1515
uses: actions/checkout@v2
16-
with:
17-
fetch-depth: 0
16+
- name: Get the version from the github tag ref
17+
id: get_version
18+
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
1819
- uses: actions/setup-node@v3
1920
with:
2021
node-version: 14.20.0
@@ -27,11 +28,7 @@ jobs:
2728
env:
2829
REACT_APP_BASE_API_URL: "/api/v1"
2930
REACT_APP_MOCKAPI_RESPONSE: false
30-
31-
- name: Get the version from the github tag ref
32-
id: get_version
33-
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
34-
31+
REACT_APP_VERSION: ${{ steps.get_version.outputs.VERSION }}
3532
- name: Generate Changelog
3633
uses: heinrichreimer/[email protected]
3734
with:
@@ -42,17 +39,15 @@ jobs:
4239
issuesWoLabels: "true"
4340
stripHeaders: "true"
4441
- name: Create release archive
45-
uses: a7ul/[email protected]
46-
id: compress
47-
with:
48-
command: c
49-
files: |
50-
./build
51-
outPath: zenml-dashboard.tar.gz
42+
run: |
43+
tar -zcf zenml-dashboard.tar.gz -C build --transform="s#\.\/##" .
44+
sha256sum -b zenml-dashboard.tar.gz > zenml-dashboard.tar.gz.sha256
5245
- name: Release to GitHub
5346
uses: softprops/action-gh-release@v1
5447
with:
55-
files: zenml-dashboard.tar.gz
48+
files: |
49+
zenml-dashboard.tar.gz
50+
zenml-dashboard.tar.gz.sha256
5651
body_path: ./CHANGELOG.md
5752
prerelease: "true"
5853
env:

.prettierrc.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
module.exports = {
2-
semi: true,
3-
trailingComma: 'all',
4-
singleQuote: true,
5-
tabWidth: 2,
6-
};
1+
module.exports = {
2+
semi: true,
3+
trailingComma: 'all',
4+
singleQuote: true,
5+
tabWidth: 2,
6+
endOfLine: 'auto',
7+
};

README.md

Lines changed: 67 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
<a href="https://github.com/zenml-io/zenml">ZenML</a>.
1010
</h3>
1111

12-
1312
<p align="center">
1413
Manage and visualize your ML pipelines, stacks and artifacts in one place.
1514
<br />
@@ -33,7 +32,7 @@
3332
·
3433
<a href="#-meet-the-team">Meet the Team</a>
3534
<br />
36-
🎉 Version 0.0.1 is out. Check out the release notes
35+
🎉 Version 0.1.0 is out. Check out the release notes
3736
<a href="https://github.com/zenml-io/zenml-dashboard/releases">here</a>.
3837
<br />
3938
<br />
@@ -46,9 +45,39 @@
4645
</p>
4746
</div>
4847

48+
<!-- TABLE OF CONTENTS -->
49+
<details>
50+
<summary>🏁 Table of Contents</summary>
51+
<ol>
52+
<li>
53+
<a href="#-getting-started">⚡ Getting Started</a>
54+
<ul>
55+
<li><a href="#-installation">🔋 Installation</a></li>
56+
<li><a href="#-relationship-with-zenml">👨‍👦 Relationship with ZenML</a></li>
57+
<li><a href="#-deploying-the-dashboard">🪐 Deploying the dashboard</a></li>
58+
</ul>
59+
</li>
60+
<li>
61+
<a href="#-user-experience">🏄 User Experience</a>
62+
<ul>
63+
<li><a href="#-log-in">🔐 Log In</a></li>
64+
<li><a href="#-home-page">🏠 Home Page</a></li>
65+
<li><a href="#-pipelines-stacks-and-components">🗂 Pipelines, Stacks, and Components</a></li>
66+
</ul>
67+
</li>
68+
<li><a href="#-contributing">🙌 Contributing</a></li>
69+
<li><a href="#-meet-the-team">👩‍👩‍👧‍👦 Meet the Team</a></li>
70+
<li><a href="#-getting-help">🆘 Getting Help</a></li>
71+
<li><a href="#-license">📜 License</a></li>
72+
</ol>
73+
</details>
74+
75+
<br />
76+
77+
4978
# ⚡ Getting Started
5079

51-
## Installation
80+
## 🔋 Installation
5281

5382
The installation is as follows:
5483

@@ -59,7 +88,7 @@ nvm install 14.20.0
5988
nvm use 14.20.0
6089
```
6190

62-
Users also need to have yarn installed.
91+
Users also need to have [`yarn`](https://yarnpkg.com/) installed.
6392

6493
Then you can run it by doing:
6594

@@ -80,39 +109,60 @@ The app takes the following env variables:
80109
REACT_APP_BASE_API_URL="<YOUR_ZENML_SERVER_DEPOLOYMENT_URL>/api/v1"
81110
```
82111

112+
To learn how to get the `YOUR_ZENML_SERVER_DEPOLOYMENT_URL`, read the [deployment guide](https://docs.zenml.io/getting-started/deploying-zenml/deployment).
113+
114+
Lastly, if you would like to use Docker, then the ZenML team provides [DockerHub] images to serve the ZenML Server and Dashboard in one image:
115+
116+
```shell
117+
docker run -it -d -p 8080:80 zenmldocker/zenml-server
118+
```
119+
120+
Which will serve the dashboard with the server at `http://localhost:8080`, with username `default` and an empty password.
83121

122+
## 👨‍👦 Relationship with ZenML
84123

124+
The ZenML Dashboard is a Javascript React-based application that lives inside this repository, which is a sister repository of the main [ZenML Python package repo](https://github.com/zenml-io/zenml).
85125

86-
## Deployment
126+
> **Note** - The ZenML Dashboard is meant to be used with the ZenML Server as a backend and cannot be used standalone.
87127
88-
We should add a section here as to how its linked to the main ZenML repository
128+
The dashboard build files come bundled into the [ZenML PyPi package](https://pypi.org/project/zenml/) and can be [served locally](https://docs.zenml.io/getting-started/deploying-zenml/using-cli.md) and/or [deployed on the cloud](https://docs.zenml.io/getting-started/deploying-zenml/deployment.md) through the main ZenML python package.
89129

90-
Basically, each ZenML python package comes with the build files (generated by `yarn build`) of a certain version of this dashboard (all build files of the dashboard can be seen in the releases section of this github). Therefore, each ZenML pypi package has bundled in it a corresponding version of this dashboard.
130+
Basically, each ZenML `Python` package comes with the build files (generated by `yarn build`) of a certain version of this dashboard (all build files of the dashboard can be seen in the [releases](https://github.com/zenml-io/zenml-dashboard/releases) section of this GitHub repo). Therefore, each ZenML PyPi package has bundled in it a corresponding version of this dashboard.
91131

92-
With the python package, you can then serve these static build files by doing:
132+
With the `Python` package, you can then serve these static build files by doing:
93133

94134
```
95135
zenml up
96136
```
97137

98-
Which creates a local daemon that serves the files in a FastAPI server!
138+
![img](./assets/zenml-up.gif)
139+
140+
Which creates a local daemon that serves the files in a [FastAPI](https://github.com/tiangolo/fastapi) server!
99141

100-
You can also deploy this dashboard on supported cloud providers with ZenML python package by using the command:
142+
## 🪐 Deploying the dashboard
143+
144+
You can deploy this dashboard on supported cloud providers with ZenML python package by using the command:
101145

102146
```
103147
zenml deploy
104148
```
105149

106-
# :bowtie: User Experience
150+
The above command deploys the dashboard in the [same process as the ZenML Server](https://docs.zenml.io/getting-started/deploying-zenml/deployment.md), and automates a lot of the nitty gritties for you.
151+
152+
However, the option to deploy standalone is also available. `yarn build` creates a build directory with a production build of the dashboard. Set up your favorite HTTP server so that a visitor to your site is served index.html. Here are [8 ways to deploy a React app for free](https://blog.logrocket.com/8-ways-deploy-react-app-free/) as a starting point.
107153

108-
## Log In
154+
Just don't forget to the set the `REACT_APP_BASE_API_URL` environment variable!
155+
156+
# 🏄 User Experience
157+
158+
## 🔐 Log In
109159

110160
![img](./assets/screenshot-login.png)
111161

112-
## Home Page
162+
## 🏠 Home Page
113163
![img](./assets/screenshot-home.png)
114164

115-
## Pipelines, Stacks and Components
165+
## 🗂 Pipelines, Stacks and Components
116166
![img](./assets/dashboard.gif)
117167

118168

@@ -130,20 +180,12 @@ Guide](CONTRIBUTING.md) for all relevant details.
130180

131181
![Meet the Team](./assets/community_meetup.png)
132182

133-
Have a question that's too hard to express on our Slack? Is it just too much effort to say everything on a
134-
long GitHub issue? Or are you just curious about what ZenML has been up to in the past week?
135-
136-
Well, register now for the ZenML Meet the Community session to get your answers!
137-
It's free and open to everyone.
138-
139183
Every week, the ZenML [core team](https://zenml.io/company#CompanyTeam) will pop in for 30 minutes to interact directly with the community.
140184
Sometimes we'll be presenting a feature, other times we'll take questions and have fun.
141185

142-
Join us if you are curious about ZenML, or just want to talk shop about MLOps.
186+
[Register now](https://zenml.io/meet) for the ZenML Meet the Community session. It's free and open to everyone.
143187

144-
We will host the gathering every Wednesday 8:30AM PT (5:30PM CET).
145-
Register now through [this link](https://www.eventbrite.com/e/zenml-meet-the-community-tickets-354426688767),
146-
or subscribe to the [public events calendar](https://calendar.google.com/calendar/u/0/r?cid=Y19iaDJ0Zm44ZzdodXBlbnBzaWplY3UwMmNjZ0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t) to get notified
188+
Or subscribe to our [public events calendar](https://calendar.google.com/calendar/u/0/r?cid=Y19iaDJ0Zm44ZzdodXBlbnBzaWplY3UwMmNjZ0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t) to get notified
147189
before every community gathering.
148190

149191
# 🆘 Getting Help
@@ -155,7 +197,7 @@ By far the easiest and fastest way to get a response is to:
155197

156198
# 📜 License
157199

158-
`zenml-dashboard` is distributed under the terms of the Apache License Version 2.0.
200+
ZenML Dashboard is distributed under the terms of the Apache License Version 2.0.
159201
A complete version of the license is available in the [LICENSE](LICENSE) file in
160202
this repository. Any contribution made to this project will be licensed under
161203
the Apache License Version 2.0.

assets/zenml-up.gif

1.58 MB
Loading

global.d.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ interface TUser {
3939
email: string;
4040
organizationId: TId;
4141
userName: string;
42+
email_opted_in: any;
43+
emailOptedIn: any;
4244
}
4345

4446
interface TOrganization {
@@ -113,14 +115,17 @@ interface TStack {
113115
isShared?: Boolean;
114116
}
115117
type TRunStatus =
116-
| 'Finished'
118+
| 'finished'
117119
| 'In Progress'
118120
| 'completed'
119-
| 'Running'
120-
| 'Failed';
121+
| 'running'
122+
| 'failed'
123+
| 'cached';
121124

122125
interface TRun {
126+
pipelineConfiguration?: any;
123127
id: TId;
128+
stackComponentId: TId;
124129
status: TRunStatus;
125130
kubeflowStartTime: Date;
126131
kubeflowEndTime: Date;
@@ -137,7 +142,8 @@ interface TRun {
137142
userName?: any;
138143
user?: any;
139144
creationDate?: any;
140-
status?: string;
145+
// status?: string;
146+
graph?: any;
141147
created: Date;
142148
name?: string;
143149
}

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"name": "web",
33
"version": "0.1.0",
44
"private": true,
5-
"proxy": "https://testing.ce-dev.cloud.maiot.io/api/v1",
65
"dependencies": {
76
"@stripe/react-stripe-js": "^1.1.2",
87
"@stripe/stripe-js": "^1.9.0",
@@ -12,6 +11,7 @@
1211
"@testing-library/user-event": "^12.1.0",
1312
"@types/classnames": "^2.2.10",
1413
"@types/country-list": "^2.1.0",
14+
"@types/dagre": "^0.7.48",
1515
"@types/jest": "^26.0.8",
1616
"@types/lodash": "^4.14.158",
1717
"@types/node": "^14.0.27",
@@ -29,6 +29,7 @@
2929
"bootstrap": "^4.5.0",
3030
"classnames": "^2.2.6",
3131
"country-list": "^2.2.0",
32+
"dagre": "^0.8.5",
3233
"date-fns": "^2.15.0",
3334
"eslint-import-resolver-babel-module": "^5.1.2",
3435
"eslint-plugin-react-hooks": "^4.0.8",
@@ -42,6 +43,7 @@
4243
"react-bootstrap": "^1.3.0",
4344
"react-datepicker": "^4.8.0",
4445
"react-dom": "^16.13.1",
46+
"react-flow-renderer": "^10.3.16",
4547
"react-outside-click-handler": "^1.3.0",
4648
"react-redux": "^7.2.1",
4749
"react-router-dom": "^5.2.0",
@@ -82,12 +84,14 @@
8284
"devDependencies": {
8385
"@typescript-eslint/eslint-plugin": "^3.7.1",
8486
"@typescript-eslint/parser": "^3.7.1",
87+
"autoprefixer": "^10.4.8",
8588
"babel-plugin-inline-react-svg": "^1.1.1",
8689
"eslint-config-prettier": "^6.11.0",
8790
"eslint-plugin-import": "^2.22.0",
8891
"eslint-plugin-prettier": "^3.1.4",
8992
"eslint-plugin-react": "^7.20.5",
9093
"eslint-plugin-redux-saga": "^1.1.3",
94+
"postcss": "^8.4.16",
9195
"prettier": "^2.0.5",
9296
"react-hooks-testing-library": "^0.6.0",
9397
"react-test-renderer": "^16.13.1"

postcss.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
plugins: {
3+
tailwindcss: {},
4+
autoprefixer: {},
5+
},
6+
}

public/_redirects

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/* /index.html 200

public/index.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,23 @@
1313
<meta property="og:url" content="https://app.zenml.io">
1414
<meta property="og:title" content="ZenML - Dashboard">
1515
<meta property="og:description" content="Create reproducible, production-ready Machine Learning pipelines with ZenML - for free!">
16-
<meta property="og:image" content="https://maiot.io/assets/illustrations/showcase.png">
16+
<meta property="og:image" content="https://zenml.io/_next/image?url=https%3A%2F%2Fzenml-strapi-media.s3.eu-central-1.amazonaws.com%2FZen_ML_Cloud_Mockup_1_1_bb6a25fc34.png&w=3840&q=75">
1717

1818
<!-- Twitter -->
1919
<meta property="twitter:card" content="summary_large_image">
2020
<meta property="twitter:url" content="https://app.zenml.io">
2121
<meta property="twitter:title" content="ZenML - Dashboard">
2222
<meta property="twitter:description" content="Create reproducible, production-ready Machine Learning pipelines with ZenML - for free!">
23-
<meta property="twitter:image" content="https://maiot.io/assets/illustrations/showcase.png">
23+
<meta property="twitter:image" content="https://zenml.io/_next/image?url=https%3A%2F%2Fzenml-strapi-media.s3.eu-central-1.amazonaws.com%2FZen_ML_Cloud_Mockup_1_1_bb6a25fc34.png&w=3840&q=75">
2424

2525
<meta name="viewport" content="width=device-width, initial-scale=1" />
2626
<meta name="theme-color" content="#000000" />
27-
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
27+
<!-- <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> -->
2828
<!--
2929
manifest.json provides metadata used when your web app is installed on a
3030
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
3131
-->
32-
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
32+
<!-- <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> -->
3333
<!--
3434
Notice the use of %PUBLIC_URL% in the tags above.
3535
It will be replaced with the URL of the `public` folder during the build.

public/manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"short_name": "maiot",
3-
"name": "Maiot",
2+
"short_name": "zenml",
3+
"name": "ZenML",
44
"icons": [
55
{
66
"src": "favicon.ico",

0 commit comments

Comments
 (0)