feat: add Kit landing page at kit.pivoine.art
Added kit-ui landing page as the main entry point for the toolkit: - Image: ghcr.io/valknarness/kit-ui:latest - URL: https://kit.pivoine.art - Provides links to Vert (file converter) and Paint (image editor) Changes: - Added landing service to kit/compose.yaml - Updated arty.yml with KIT_TRAEFIK_HOST and KIT_LANDING_IMAGE - Updated CLAUDE.md with landing page documentation - Updated README.md with landing page reference Toolkit structure: - Landing: kit.pivoine.art (main hub) - Vert: vert.kit.pivoine.art (file converter) - Paint: paint.kit.pivoine.art (image editor) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -251,10 +251,17 @@ Joplin Server note-taking and synchronization platform:
|
|||||||
5. Enter email and password created in step 1
|
5. Enter email and password created in step 1
|
||||||
|
|
||||||
### Kit (kit/compose.yaml)
|
### Kit (kit/compose.yaml)
|
||||||
Unified toolkit combining file conversion and image editing using subdomain routing:
|
Unified toolkit with landing page, file conversion, and image editing using subdomain routing:
|
||||||
|
- **Landing**: `kit.pivoine.art` - Toolkit landing page
|
||||||
- **Vert**: `vert.kit.pivoine.art` - Universal file format converter
|
- **Vert**: `vert.kit.pivoine.art` - Universal file format converter
|
||||||
- **Paint**: `paint.kit.pivoine.art` - Web-based image editor
|
- **Paint**: `paint.kit.pivoine.art` - Web-based image editor
|
||||||
|
|
||||||
|
#### Landing Page (kit.pivoine.art)
|
||||||
|
Kit toolkit landing page:
|
||||||
|
- Main entry point for the toolkit
|
||||||
|
- Links to Vert and Paint services
|
||||||
|
- Clean, simple interface
|
||||||
|
|
||||||
#### Vert Service (vert.kit.pivoine.art)
|
#### Vert Service (vert.kit.pivoine.art)
|
||||||
VERT universal file format converter:
|
VERT universal file format converter:
|
||||||
- WebAssembly-based file conversion (client-side processing)
|
- WebAssembly-based file conversion (client-side processing)
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ The **Falcon** is a state-of-the-art containerized starship, powered by Docker's
|
|||||||
| **LINKS** | *Interstellar bookmark archive* | [links.pivoine.art](https://links.pivoine.art) |
|
| **LINKS** | *Interstellar bookmark archive* | [links.pivoine.art](https://links.pivoine.art) |
|
||||||
| **VAULT** | *Encrypted password vault* | [vault.pivoine.art](https://vault.pivoine.art) |
|
| **VAULT** | *Encrypted password vault* | [vault.pivoine.art](https://vault.pivoine.art) |
|
||||||
| **JOPLIN** | *Note-taking server & sync hub* | [joplin.pivoine.art](https://joplin.pivoine.art) |
|
| **JOPLIN** | *Note-taking server & sync hub* | [joplin.pivoine.art](https://joplin.pivoine.art) |
|
||||||
| **KIT** | *Toolkit: file converter & image editor* | [kit.pivoine.art](https://kit.pivoine.art) |
|
| **KIT** | *Toolkit hub with converter & editor* | [kit.pivoine.art](https://kit.pivoine.art) |
|
||||||
| **JELLY** | *Media streaming server* | [jelly.pivoine.art](https://jelly.pivoine.art) |
|
| **JELLY** | *Media streaming server* | [jelly.pivoine.art](https://jelly.pivoine.art) |
|
||||||
| **DROP** | *Peer-to-peer file sharing* | [drop.pivoine.art](https://drop.pivoine.art) |
|
| **DROP** | *Peer-to-peer file sharing* | [drop.pivoine.art](https://drop.pivoine.art) |
|
||||||
| **RESTIC** | *Automated backup vault system* | [restic.pivoine.art](https://restic.pivoine.art) |
|
| **RESTIC** | *Automated backup vault system* | [restic.pivoine.art](https://restic.pivoine.art) |
|
||||||
@@ -202,6 +202,10 @@ arty env/sync
|
|||||||
```bash
|
```bash
|
||||||
# Access unified toolkit (subdomain routing)
|
# Access unified toolkit (subdomain routing)
|
||||||
|
|
||||||
|
# Landing Page
|
||||||
|
# URL: https://kit.pivoine.art
|
||||||
|
# Main entry point with links to all toolkit services
|
||||||
|
|
||||||
# File Converter (Vert)
|
# File Converter (Vert)
|
||||||
# URL: https://vert.kit.pivoine.art
|
# URL: https://vert.kit.pivoine.art
|
||||||
# Features:
|
# Features:
|
||||||
|
|||||||
4
arty.yml
4
arty.yml
@@ -110,9 +110,11 @@ envs:
|
|||||||
JOPLIN_TRAEFIK_HOST: joplin.pivoine.art
|
JOPLIN_TRAEFIK_HOST: joplin.pivoine.art
|
||||||
JOPLIN_APP_PORT: 22300
|
JOPLIN_APP_PORT: 22300
|
||||||
JOPLIN_DB_NAME: joplin
|
JOPLIN_DB_NAME: joplin
|
||||||
# Kit (combines Vert and Paint)
|
# Kit (combines Vert and Paint with landing page)
|
||||||
KIT_TRAEFIK_ENABLED: true
|
KIT_TRAEFIK_ENABLED: true
|
||||||
KIT_COMPOSE_PROJECT_NAME: kit
|
KIT_COMPOSE_PROJECT_NAME: kit
|
||||||
|
KIT_TRAEFIK_HOST: kit.pivoine.art
|
||||||
|
KIT_LANDING_IMAGE: ghcr.io/valknarness/kit-ui:latest
|
||||||
KIT_VERT_IMAGE: ghcr.io/vert-sh/vert:latest
|
KIT_VERT_IMAGE: ghcr.io/vert-sh/vert:latest
|
||||||
KIT_VERT_TRAEFIK_HOST: vert.kit.pivoine.art
|
KIT_VERT_TRAEFIK_HOST: vert.kit.pivoine.art
|
||||||
KIT_PAINT_TRAEFIK_HOST: paint.kit.pivoine.art
|
KIT_PAINT_TRAEFIK_HOST: paint.kit.pivoine.art
|
||||||
|
|||||||
@@ -1,4 +1,29 @@
|
|||||||
services:
|
services:
|
||||||
|
landing:
|
||||||
|
image: ${KIT_LANDING_IMAGE:-ghcr.io/valknarness/kit-ui:latest}
|
||||||
|
container_name: ${KIT_COMPOSE_PROJECT_NAME}_landing
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- compose_network
|
||||||
|
labels:
|
||||||
|
- 'traefik.enable=${KIT_TRAEFIK_ENABLED}'
|
||||||
|
# HTTP to HTTPS redirect
|
||||||
|
- 'traefik.http.middlewares.${KIT_COMPOSE_PROJECT_NAME}-landing-redirect-web-secure.redirectscheme.scheme=https'
|
||||||
|
- 'traefik.http.routers.${KIT_COMPOSE_PROJECT_NAME}-landing-web.middlewares=${KIT_COMPOSE_PROJECT_NAME}-landing-redirect-web-secure'
|
||||||
|
- 'traefik.http.routers.${KIT_COMPOSE_PROJECT_NAME}-landing-web.rule=Host(`${KIT_TRAEFIK_HOST}`)'
|
||||||
|
- 'traefik.http.routers.${KIT_COMPOSE_PROJECT_NAME}-landing-web.entrypoints=web'
|
||||||
|
# HTTPS router
|
||||||
|
- 'traefik.http.routers.${KIT_COMPOSE_PROJECT_NAME}-landing-web-secure.rule=Host(`${KIT_TRAEFIK_HOST}`)'
|
||||||
|
- 'traefik.http.routers.${KIT_COMPOSE_PROJECT_NAME}-landing-web-secure.tls.certresolver=resolver'
|
||||||
|
- 'traefik.http.routers.${KIT_COMPOSE_PROJECT_NAME}-landing-web-secure.entrypoints=web-secure'
|
||||||
|
- 'traefik.http.middlewares.${KIT_COMPOSE_PROJECT_NAME}-landing-compress.compress=true'
|
||||||
|
- 'traefik.http.routers.${KIT_COMPOSE_PROJECT_NAME}-landing-web-secure.middlewares=${KIT_COMPOSE_PROJECT_NAME}-landing-compress,security-headers@file'
|
||||||
|
# Service
|
||||||
|
- 'traefik.http.services.${KIT_COMPOSE_PROJECT_NAME}-landing.loadbalancer.server.port=80'
|
||||||
|
- 'traefik.docker.network=${NETWORK_NAME}'
|
||||||
|
# Watchtower
|
||||||
|
- 'com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}'
|
||||||
|
|
||||||
vert:
|
vert:
|
||||||
image: ${KIT_VERT_IMAGE:-ghcr.io/vert-sh/vert:latest}
|
image: ${KIT_VERT_IMAGE:-ghcr.io/vert-sh/vert:latest}
|
||||||
container_name: ${KIT_COMPOSE_PROJECT_NAME}_vert
|
container_name: ${KIT_COMPOSE_PROJECT_NAME}_vert
|
||||||
|
|||||||
Reference in New Issue
Block a user