File size: 1,921 Bytes
423c2fb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8ac85ba
423c2fb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Unstable β€” Password-Protected Web Proxy

## Overview

"Unstable" is a password-protected web proxy browser app with a dark void.radio.fm-inspired aesthetic (Space Grotesk font). Built as a pnpm monorepo.

- **Password**: `ripmoonlight`
- **Session key**: `unstable_auth`

## Architecture

### Artifacts
- `artifacts/app` β€” React + Vite frontend (multi-tab proxy browser UI)
- `artifacts/api-server` β€” Express API server (bare server, static proxy assets)

### Proxy Stack
- **Proxy engine**: Ultraviolet (UV) β€” pre-built dist files copied to `artifacts/app/public/`
- **Bare server**: `@nebula-services/bare-server-node` mounted at `/api/bare/`
- **Bare transport module**: `@mercuryworkshop/bare-as-module3` served from `/api/baremod/`
- **Bare-mux transport**: `@mercuryworkshop/bare-mux` (npm dep in React app)
- **Baremux worker**: `artifacts/app/public/baremux/worker.js` (SharedWorker)
- **Service worker**: `/uv.sw.js` (scope `/`)
- **UV prefix**: `/service/`

### Key Files
- `artifacts/app/src/App.tsx` β€” tab browser UI, password screen, proxy setup
- `artifacts/app/public/uv.config.js` β€” UV configuration (prefix `/service/`)
- `artifacts/app/index.html` β€” loads uv.bundle.js and uv.config.js as plain scripts
- `artifacts/api-server/src/app.ts` β€” bare server, baremod static, CORS
- `artifacts/api-server/src/index.ts` β€” HTTP server + WebSocket upgrade for bare

### Important Constraints
- Do NOT run npm/pnpm install inside `/home/runner/workspace/Ultraviolet/`
- Never install `@titaniumnetwork-dev/*` packages

## Stack

- **Monorepo tool**: pnpm workspaces
- **Node.js version**: 24
- **Package manager**: pnpm
- **TypeScript version**: 5.9
- **API framework**: Express 5
- **Build**: esbuild (ESM bundle for api-server)

## Key Commands

- `pnpm --filter @workspace/api-server run dev` β€” run API server (port 8080)
- `pnpm --filter @workspace/app run dev` β€” run React app (Vite)