Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ eggs/
.eggs/
lib/
lib64/
!apps/website/src/lib/
parts/
sdist/
var/
Expand Down
24 changes: 24 additions & 0 deletions apps/frontend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
1 change: 1 addition & 0 deletions apps/frontend/.nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
35 changes: 35 additions & 0 deletions apps/frontend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Production Dockerfile for Clerk Frontend
# Multi-stage build: build React app, then serve with nginx

# Build stage
FROM node:20-alpine AS builder

# Set working directory
WORKDIR /app

# Copy package files for dependency installation
COPY package.json package-lock.json ./

# Install dependencies
RUN npm ci

# Copy source files
COPY . .

# Build the React application
RUN npm run build

# Production stage
FROM nginx:alpine

# Copy built assets from builder stage
COPY --from=builder /app/dist /usr/share/nginx/html

# Copy nginx configuration
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf

# Expose port 80
EXPOSE 80

# Start nginx in foreground
CMD ["nginx", "-g", "daemon off;"]
98 changes: 98 additions & 0 deletions apps/frontend/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# OpenClerk Website

The official website for OpenClerk - built with React, TypeScript, and Vite.

## Overview

This is the website application for openclerk.dev, providing:

- Documentation and guides
- Interactive reasoning kit browser
- Kit execution interface
- User authentication and settings

## Tech Stack

- **Framework**: React 19 + TypeScript
- **Build Tool**: Vite
- **Styling**: Tailwind CSS
- **Routing**: React Router
- **UI Components**: Custom components with Tailwind

## Development

### Prerequisites

- Node.js 20+
- npm or yarn

### Setup

```bash
cd apps/website
npm install
```

### Development Server

```bash
npm run dev
```

This starts the development server at `http://localhost:5173`.

### Build

```bash
npm run build
```

This creates a production build in the `dist/` directory.

### Preview Build

```bash
npm run preview
```

Preview the production build locally.

### Linting

```bash
npm run lint
```

## Project Structure

```
apps/website/
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Route/page components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utilities and API clients
│ ├── App.tsx # Main app component with routing
│ └── main.tsx # Entry point
├── public/ # Static assets
├── index.html # HTML template
└── vite.config.ts # Vite configuration
```

## Environment Variables

Create a `.env` file in `apps/website/` with:

```
VITE_API_URL=http://localhost:8000
```

## Deployment

The website is deployed to openclerk.dev via [deployment platform].

## Links

- [Live Site](https://openclerk.dev)
- [Main Repository](../../README.md)
- [Python Package](../../packages/clerk/README.md)
23 changes: 23 additions & 0 deletions apps/frontend/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
},
])
17 changes: 17 additions & 0 deletions apps/frontend/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OpenClerk</title>
<meta name="description" content="Create, manage, and share multi-step LLM reasoning workflows." />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
</head>

<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>

</html>
Loading
Loading