5a558eb09e
TypeScript SDK Compatibility V1.x E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / TypeScript SDK Compatibility V1.x E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
TypeScript SDK E2E Tests / TypeScript SDK E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
Python SDK E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK E2E Tests / Python SDK E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK E2E Tests / build-opik (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Python SDK Compatibility V1.x E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK E2E Tests / build-opik (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer E2E Tests Python ${{matrix.python_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer Integration Smoke Tests (push) Has been cancelled
🐙 Code Quality / detect (push) Has been cancelled
🐙 Code Quality / lint (${{ matrix.leg.name }}) (push) Has been cancelled
🐙 Code Quality / summary (push) Has been cancelled
TypeScript SDK Library Integration Tests / Check Secrets (push) Has been cancelled
TypeScript SDK Library Integration Tests / opik-vercel (Vercel AI SDK / eve) (push) Has been cancelled
SDK Library Integration Tests Runner / Check Secrets (push) Has been cancelled
SDK Library Integration Tests Runner / Missed OpenAI API Key Warning (push) Has been cancelled
SDK Library Integration Tests Runner / Build (push) Has been cancelled
SDK Library Integration Tests Runner / openai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_legacy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / llama_index_tests (push) Has been cancelled
SDK Library Integration Tests Runner / anthropic_tests (push) Has been cancelled
SDK Library Integration Tests Runner / mistral_tests (push) Has been cancelled
SDK Library Integration Tests Runner / groq_tests (push) Has been cancelled
SDK Library Integration Tests Runner / aisuite_tests (push) Has been cancelled
SDK Library Integration Tests Runner / haystack_tests (push) Has been cancelled
SDK Library Integration Tests Runner / dspy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v1_tests (push) Has been cancelled
SDK Library Integration Tests Runner / genai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_legacy_1_3_0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / evaluation_metrics_tests (push) Has been cancelled
SDK Library Integration Tests Runner / bedrock_tests (push) Has been cancelled
SDK Library Integration Tests Runner / litellm_tests (push) Has been cancelled
SDK Library Integration Tests Runner / harbor_tests (push) Has been cancelled
SDK Library Integration Tests Runner / Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / render-equality (push) Has been cancelled
Opik Optimizer - Unit Tests / Opik Optimizer Unit Tests Python ${{matrix.python_version}} (push) Has been cancelled
Python BE E2E Tests / Python BE E2E (push) Has been cancelled
Python Backend Tests / run-python-backend-tests (push) Has been cancelled
Python SDK Unit Tests / Python SDK Unit Tests ${{matrix.python_version}} (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
SDK E2E Libraries Integration Tests / Check Secrets (push) Has been cancelled
SDK E2E Libraries Integration Tests / Missed OpenAI API Key Warning (push) Has been cancelled
SDK E2E Libraries Integration Tests / build-opik (push) Has been cancelled
SDK E2E Libraries Integration Tests / E2E Lib Integration Python ${{matrix.python_version}} (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-gemini) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-langchain) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-openai) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-otel) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-vercel) (push) Has been cancelled
TypeScript SDK Build & Publish / build-and-publish (push) Has been cancelled
TypeScript SDK Unit Tests / Test on Node ${{ matrix.node-version }} (push) Has been cancelled
Backend Tests / discover-tests (push) Has been cancelled
Backend Tests / ${{ matrix.name }} (push) Has been cancelled
Build and Publish SDK / build-and-publish (push) Has been cancelled
Build Opik Docker Images / set-version (push) Has been cancelled
Build Opik Docker Images / build-backend (push) Has been cancelled
Build Opik Docker Images / build-sandbox-executor-python (push) Has been cancelled
Build Opik Docker Images / build-python-backend (push) Has been cancelled
Build Opik Docker Images / build-frontend (push) Has been cancelled
Build Opik Docker Images / create-git-tag (push) Has been cancelled
ClickHouse Migration Cluster Check / validate-clickhouse-migrations (push) Has been cancelled
Docs - Publish / run (push) Has been cancelled
E2E Tests - Post Merge (v2) / 🧪 E2E v2 Tests (${{ github.event.inputs.tier || 't1' }}) (push) Has been cancelled
E2E Tests - Post Merge (v2) / 📢 Slack Notification (push) Has been cancelled
Frontend Unit Tests / Test on Node 20 (push) Has been cancelled
Guardrails E2E Tests / Select Python version matrix (push) Has been cancelled
Guardrails E2E Tests / Guardrails E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Guardrails E2E Tests / 📢 Slack Notification (push) Has been cancelled
Guardrails Backend Unit Tests / Guardrails Backend Unit Tests (push) Has been cancelled
Guardrails Backend Unit Tests / 📢 Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v3.21.0) (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v4.2.0) (push) Has been cancelled
Lint Opik Helm Chart / unittest-helm-chart (push) Has been cancelled
238 lines
7.0 KiB
Plaintext
238 lines
7.0 KiB
Plaintext
---
|
|
headline: Frontend | Opik Documentation
|
|
og:description: Learn how to contribute to the Opik frontend project by reviewing
|
|
guidelines and project structure for effective collaboration.
|
|
og:site_name: Opik Documentation
|
|
og:title: Contributing to the Opik Frontend
|
|
title: Frontend
|
|
canonical-url: https://www.comet.com/docs/opik/contributing/guides/frontend
|
|
---
|
|
|
|
# Contributing to the Frontend
|
|
|
|
This guide will help you get started with contributing to the Opik frontend.
|
|
|
|
<Tip>
|
|
Before you start, please review our general [Contribution Overview](/v1/contributing/overview) and the [Contributor
|
|
License Agreement (CLA)](https://github.com/comet-ml/opik/blob/main/CLA.md).
|
|
</Tip>
|
|
|
|
## Project Structure
|
|
|
|
The Opik frontend is a React application located in the `apps/opik-frontend` directory of the `comet-ml/opik` repository. It provides the user interface for interacting with the Opik platform.
|
|
|
|
### Directory Layout
|
|
|
|
```
|
|
apps/opik-frontend/src/
|
|
├── api/ # API client and endpoint definitions
|
|
├── constants/ # Application-wide constants
|
|
├── hooks/ # Shared custom hooks
|
|
├── lib/ # Utility libraries
|
|
├── store/ # Zustand stores
|
|
├── types/ # Shared TypeScript types
|
|
├── ui/ # Base UI components (shadcn/ui + Radix)
|
|
├── shared/ # Shared business components
|
|
├── v1/ # Opik 1 UI (layout, pages, pages-shared)
|
|
└── v2/ # Opik 2 UI (layout, pages, pages-shared)
|
|
```
|
|
|
|
**Import rules:** `ui → shared → v{N}/pages-shared → v{N}/pages` (one-way only). v1 and v2 cannot import from each other. Validate with `npm run deps:validate`.
|
|
|
|
## Setting Up Your Development Environment
|
|
|
|
We provide multiple ways to develop the frontend. Choose the approach that best fits your workflow:
|
|
|
|
<Tabs>
|
|
<Tab value="Local Process Mode" title="Local Process Mode (Recommended)">
|
|
**Best for rapid development with hot reload**
|
|
|
|
This mode runs the frontend as a local process with Vite's dev server, providing instant hot reload when you save files:
|
|
|
|
<Tabs>
|
|
<Tab title="Linux/Mac">
|
|
```bash
|
|
# From repository root - restart everything
|
|
scripts/dev-runner.sh
|
|
|
|
# Or just start (faster if already built)
|
|
scripts/dev-runner.sh --start
|
|
```
|
|
</Tab>
|
|
<Tab title="Windows">
|
|
```powershell
|
|
# From repository root - restart everything
|
|
scripts\dev-runner.ps1
|
|
|
|
# Or just start (faster if already built)
|
|
scripts\dev-runner.ps1 --start
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
Access the UI at `http://localhost:5174` (Vite dev server with hot reload).
|
|
|
|
**Benefits:**
|
|
- Instant hot reload on file changes
|
|
- Fast rebuilds
|
|
- Full TypeScript type checking and linting
|
|
- Easy debugging with browser dev tools
|
|
|
|
**Prerequisites:**
|
|
- Node.js 18+ with npm. You can download it from [nodejs.org](https://nodejs.org/).
|
|
- Java Development Kit (JDK) 25 (for backend)
|
|
- Apache Maven 3.8+ (for backend)
|
|
</Tab>
|
|
|
|
<Tab value="Docker Mode" title="Docker Mode">
|
|
**Best for testing the complete system**
|
|
|
|
This mode runs everything in Docker containers:
|
|
|
|
<Tabs>
|
|
<Tab title="Linux/Mac">
|
|
```bash
|
|
# From repository root
|
|
./opik.sh --build
|
|
|
|
# Or start without rebuilding
|
|
./opik.sh
|
|
```
|
|
</Tab>
|
|
<Tab title="Windows">
|
|
```powershell
|
|
# From repository root
|
|
.\opik.ps1 --build
|
|
|
|
# Or start without rebuilding
|
|
.\opik.ps1
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
Access the UI at `http://localhost:5173`.
|
|
|
|
**Benefits:**
|
|
- Closest to production environment
|
|
- No local Node.js installation needed
|
|
- Consistent environment across team
|
|
|
|
**Prerequisites:**
|
|
- Docker and Docker Compose
|
|
</Tab>
|
|
|
|
<Tab value="Manual Setup" title="Manual Setup">
|
|
**Best for understanding the build process**
|
|
|
|
Set up each component manually:
|
|
|
|
<Tabs>
|
|
<Tab title="Linux/Mac">
|
|
1. **Start backend services:** this enables `CORS: true` in the backend service for local frontend development.
|
|
```bash
|
|
./opik.sh --backend --port-mapping
|
|
```
|
|
Check that the backend is running: http://localhost:8080/is-alive/ping
|
|
|
|
2. **Configure environment variables:**
|
|
Update `apps/opik-frontend/.env.development`:
|
|
```ini
|
|
VITE_BASE_URL=/
|
|
VITE_BASE_API_URL=http://localhost:8080
|
|
```
|
|
This tells the frontend development server where to find the backend API.
|
|
|
|
3. **Install dependencies:**
|
|
```bash
|
|
cd apps/opik-frontend
|
|
npm install
|
|
```
|
|
|
|
4. **Start the frontend:**
|
|
```bash
|
|
npm run start
|
|
```
|
|
</Tab>
|
|
<Tab title="Windows">
|
|
1. **Start backend services:** this enables `CORS: true` in the backend service for local frontend development.
|
|
```powershell
|
|
.\opik.ps1 --backend --port-mapping
|
|
```
|
|
Check that the backend is running: http://localhost:8080/is-alive/ping
|
|
|
|
2. **Configure environment variables:**
|
|
Update `apps\opik-frontend\.env.development`:
|
|
```ini
|
|
VITE_BASE_URL=/
|
|
VITE_BASE_API_URL=http://localhost:8080
|
|
```
|
|
This tells the frontend development server where to find the backend API.
|
|
|
|
3. **Install dependencies:**
|
|
```powershell
|
|
cd apps\opik-frontend
|
|
npm install
|
|
```
|
|
|
|
4. **Start the frontend:**
|
|
```powershell
|
|
npm run start
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
Access the UI at `http://localhost:5174`.
|
|
|
|
**Prerequisites:**
|
|
- Node.js 18+ with npm. You can download it from [nodejs.org](https://nodejs.org/).
|
|
- Docker and Docker Compose (for backend)
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
For comprehensive documentation on all development modes, troubleshooting, and advanced workflows, see our [Local Development Guide](/v1/contributing/guides/local-development).
|
|
|
|
### 4. Code Quality Checks
|
|
|
|
Before submitting a Pull Request, please ensure your code passes the following checks:
|
|
|
|
#### Linting
|
|
|
|
<Tabs>
|
|
<Tab value="Using dev-runner" title="Using dev-runner (Recommended)">
|
|
<Tabs>
|
|
<Tab title="Linux/Mac">
|
|
```bash
|
|
# From repository root
|
|
scripts/dev-runner.sh --lint-fe
|
|
```
|
|
</Tab>
|
|
<Tab title="Windows">
|
|
```powershell
|
|
# From repository root
|
|
scripts\dev-runner.ps1 --lint-fe
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
</Tab>
|
|
<Tab value="Manual npm" title="Manual npm">
|
|
```bash
|
|
cd apps/opik-frontend
|
|
npm run lint
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
#### Type Checking and Unit Tests
|
|
|
|
Run these commands from the `apps/opik-frontend` directory:
|
|
|
|
```bash
|
|
cd apps/opik-frontend
|
|
|
|
npm run typecheck # TypeScript type checking
|
|
npm run test # Unit tests for utilities and helpers
|
|
```
|
|
|
|
### 5. Submitting a Pull Request
|
|
|
|
After implementing, commit your changes and open a Pull Request against the `main` branch of the `comet-ml/opik` repository. |