feat: consolidate Vert and Paint into unified Kit stack
Created new kit.pivoine.art stack with path-based routing: - /vert: VERT file format converter (250+ formats) - /paint: miniPaint image editor Changes: - Created kit/compose.yaml with both services - Removed Sablier scale-to-zero from Vert (no longer needed) - Deleted old vert/ and paint/ stack directories - Updated compose.yaml includes (removed vert, paint; added kit) - Updated arty.yml with KIT_* environment variables - Updated CLAUDE.md documentation with new Kit section - Updated README.md with consolidated toolkit entry Benefits: - Single domain for related utilities - Simplified service management - Maintained HTTP Basic Auth protection - No Sablier dependency for Vert Access: - File converter: https://kit.pivoine.art/vert - Image editor: https://kit.pivoine.art/paint 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
55
CLAUDE.md
55
CLAUDE.md
@@ -22,8 +22,7 @@ Root `compose.yaml` uses Docker Compose's `include` directive to orchestrate mul
|
||||
- **links**: Linkwarden bookmark manager (PostgreSQL + Meilisearch)
|
||||
- **vault**: Vaultwarden password manager (SQLite)
|
||||
- **joplin**: Joplin Server note-taking and sync platform (PostgreSQL)
|
||||
- **vert**: VERT file format converter (WebAssembly-based, stateless)
|
||||
- **paint**: miniPaint web-based image editor (built from GitHub)
|
||||
- **kit**: Unified toolkit with Vert file converter and miniPaint image editor (path-routed)
|
||||
- **jelly**: Jellyfin media server with hardware transcoding
|
||||
- **drop**: PairDrop peer-to-peer file sharing
|
||||
- **restic**: Backrest backup system with restic backend
|
||||
@@ -251,40 +250,40 @@ Joplin Server note-taking and synchronization platform:
|
||||
4. Enter server URL: `https://joplin.pivoine.art`
|
||||
5. Enter email and password created in step 1
|
||||
|
||||
### Vert (vert/compose.yaml)
|
||||
### Kit (kit/compose.yaml)
|
||||
Unified toolkit combining file conversion and image editing:
|
||||
- **Base URL**: `kit.pivoine.art`
|
||||
- **Services**:
|
||||
- **Vert** (`/vert`): Universal file format converter
|
||||
- **Paint** (`/paint`): Web-based image editor
|
||||
|
||||
#### Vert Service (`/vert`)
|
||||
VERT universal file format converter:
|
||||
- **vert**: VERT app exposed at `vert.pivoine.art:80`
|
||||
- WebAssembly-based file conversion (client-side processing)
|
||||
- Supports 250+ file formats (images, audio, documents, video)
|
||||
- No file size limits
|
||||
- Privacy-focused: all conversions happen in the browser
|
||||
- No persistent data storage required
|
||||
- Protected by HTTP Basic Auth (credentials in `.env`)
|
||||
- Scale-to-zero enabled via Sablier (configurable via `VERT_SABLIER_ENABLED`)
|
||||
- 1-hour session duration before automatic scale-down
|
||||
- WebAssembly-based file conversion (client-side processing)
|
||||
- Supports 250+ file formats (images, audio, documents, video)
|
||||
- No file size limits
|
||||
- Privacy-focused: all conversions happen in the browser
|
||||
- No persistent data storage required
|
||||
- Protected by HTTP Basic Auth (credentials in `.env`)
|
||||
|
||||
**Configuration**:
|
||||
- **PUB_HOSTNAME**: `vert.pivoine.art` (public hostname)
|
||||
- **PUB_HOSTNAME**: `kit.pivoine.art` (public hostname)
|
||||
- **PUB_ENV**: `production` (environment mode)
|
||||
- **PUB_DISABLE_ALL_EXTERNAL_REQUESTS**: `true` (privacy mode)
|
||||
- **VERT_SABLIER_ENABLED**: `true` (enable scale-to-zero)
|
||||
- **AUTH_USERS**: Shared HTTP Basic Auth credentials (htpasswd format in `.env`)
|
||||
|
||||
**Usage**:
|
||||
Simply access https://vert.pivoine.art and drag/drop files to convert between formats. All processing happens in your browser using WebAssembly - no data is uploaded to the server.
|
||||
Access https://kit.pivoine.art/vert and drag/drop files to convert between formats. All processing happens in your browser using WebAssembly - no data is uploaded to the server.
|
||||
|
||||
**Note**: VERT is stateless and doesn't require backups as no data is persisted.
|
||||
|
||||
### Paint (paint/compose.yaml)
|
||||
#### Paint Service (`/paint`)
|
||||
miniPaint web-based image editor built from GitHub:
|
||||
- **paint**: miniPaint app exposed at `paint.pivoine.art:80`
|
||||
- Online image editor with layer support
|
||||
- Built directly from https://github.com/viliusle/miniPaint
|
||||
- Supports PNG, JPG, GIF, WebP formats
|
||||
- Features: layers, filters, drawing tools, text, shapes
|
||||
- Client-side processing (no uploads to server)
|
||||
- No persistent data storage required
|
||||
- Stateless architecture
|
||||
- Online image editor with layer support
|
||||
- Built directly from https://github.com/viliusle/miniPaint
|
||||
- Supports PNG, JPG, GIF, WebP formats
|
||||
- Features: layers, filters, drawing tools, text, shapes
|
||||
- Client-side processing (no uploads to server)
|
||||
- No persistent data storage required
|
||||
- Stateless architecture
|
||||
|
||||
**Build Process**:
|
||||
- Multi-stage Docker build clones from GitHub
|
||||
@@ -292,9 +291,9 @@ miniPaint web-based image editor built from GitHub:
|
||||
- Serves static files via nginx
|
||||
|
||||
**Usage**:
|
||||
Access https://paint.pivoine.art to use the image editor. All editing happens in the browser - images are not uploaded to the server.
|
||||
Access https://kit.pivoine.art/paint to use the image editor. All editing happens in the browser - images are not uploaded to the server.
|
||||
|
||||
**Note**: miniPaint is stateless and doesn't require backups as no data is persisted.
|
||||
**Note**: Both Kit services are stateless and don't require backups as no data is persisted.
|
||||
|
||||
### PairDrop (drop/compose.yaml)
|
||||
PairDrop peer-to-peer file sharing service:
|
||||
|
||||
Reference in New Issue
Block a user