@weirdfingers/baseboards 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +806 -76
- package/dist/index.js +8551 -315
- package/dist/index.js.map +1 -1
- package/package.json +13 -5
- package/templates/api/src/boards/__init__.py +1 -1
- package/templates/compose.web.yaml +32 -0
- package/templates/compose.yaml +35 -36
- package/templates/web/package.json +1 -1
- package/templates/compose.dev.yaml +0 -38
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weirdfingers/baseboards",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "One-command launcher for the Boards image generation application",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -36,28 +36,36 @@
|
|
|
36
36
|
"node": ">=20.0.0"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
+
"ajv-formats": "^3.0.1",
|
|
40
|
+
"chalk": "^5.3.0",
|
|
39
41
|
"commander": "^12.0.0",
|
|
40
42
|
"execa": "^9.0.0",
|
|
41
43
|
"fs-extra": "^11.2.0",
|
|
42
|
-
"yaml": "^2.4.0",
|
|
43
44
|
"ora": "^8.0.0",
|
|
44
|
-
"
|
|
45
|
+
"prompts": "^2.4.2",
|
|
46
|
+
"semver": "^7.7.3",
|
|
47
|
+
"tar": "^7.4.3",
|
|
45
48
|
"which": "^4.0.0",
|
|
46
|
-
"
|
|
49
|
+
"yaml": "^2.4.0"
|
|
47
50
|
},
|
|
48
51
|
"devDependencies": {
|
|
49
52
|
"@types/fs-extra": "^11.0.4",
|
|
50
53
|
"@types/node": "^20.11.0",
|
|
51
54
|
"@types/prompts": "^2.4.9",
|
|
55
|
+
"@types/semver": "^7.7.1",
|
|
56
|
+
"@types/tar": "^6.1.13",
|
|
52
57
|
"@types/which": "^3.0.3",
|
|
58
|
+
"ajv": "^8.12.0",
|
|
53
59
|
"tsup": "^8.0.0",
|
|
54
|
-
"typescript": "^5.3.0"
|
|
60
|
+
"typescript": "^5.3.0",
|
|
61
|
+
"vitest": "^1.6.0"
|
|
55
62
|
},
|
|
56
63
|
"scripts": {
|
|
57
64
|
"prepare-templates": "node scripts/prepare-templates.js",
|
|
58
65
|
"prebuild": "pnpm run prepare-templates",
|
|
59
66
|
"build": "tsup && node scripts/add-shebang.js",
|
|
60
67
|
"dev": "tsup --watch",
|
|
68
|
+
"test": "vitest --run",
|
|
61
69
|
"typecheck": "tsc --noEmit",
|
|
62
70
|
"clean": "rm -rf dist templates"
|
|
63
71
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Docker Compose Overlay - Web Service
|
|
2
|
+
#
|
|
3
|
+
# This overlay adds the web (frontend) service as a production-built container.
|
|
4
|
+
# Use this overlay when you want to run the full stack including the frontend.
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# docker compose -f compose.yaml up -d # Backend only (no web)
|
|
8
|
+
# docker compose -f compose.yaml -f compose.web.yaml up -d # Full stack with web
|
|
9
|
+
#
|
|
10
|
+
# The web service runs a production build (no hot-reload, no volume mounts).
|
|
11
|
+
# For app development mode where you run the frontend locally, skip this overlay.
|
|
12
|
+
|
|
13
|
+
services:
|
|
14
|
+
web:
|
|
15
|
+
build:
|
|
16
|
+
context: ./web
|
|
17
|
+
dockerfile: ../Dockerfile.web
|
|
18
|
+
env_file: web/.env
|
|
19
|
+
environment:
|
|
20
|
+
- INTERNAL_API_URL=http://api:8800
|
|
21
|
+
depends_on:
|
|
22
|
+
api:
|
|
23
|
+
condition: service_healthy
|
|
24
|
+
ports:
|
|
25
|
+
- "${WEB_PORT:-3300}:3000"
|
|
26
|
+
healthcheck:
|
|
27
|
+
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
|
|
28
|
+
interval: 5s
|
|
29
|
+
timeout: 3s
|
|
30
|
+
retries: 50
|
|
31
|
+
networks:
|
|
32
|
+
- internal
|
package/templates/compose.yaml
CHANGED
|
@@ -27,15 +27,28 @@ services:
|
|
|
27
27
|
- internal
|
|
28
28
|
|
|
29
29
|
api:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
# Pre-built backend image from GitHub Container Registry
|
|
31
|
+
# Override version with BACKEND_VERSION in docker/.env (defaults to latest)
|
|
32
|
+
image: ghcr.io/weirdfingers/boards-backend:${BACKEND_VERSION:-latest}
|
|
33
|
+
command: ["uvicorn", "boards.api.app:app", "--host", "0.0.0.0", "--port", "8800"]
|
|
34
34
|
env_file:
|
|
35
35
|
- docker/.env
|
|
36
36
|
- api/.env
|
|
37
|
+
environment:
|
|
38
|
+
# Enable loading custom generators and plugins from /app/extensions
|
|
39
|
+
- PYTHONPATH=/app:/app/extensions
|
|
40
|
+
# Explicit paths to configuration files
|
|
41
|
+
- BOARDS_GENERATORS_CONFIG_PATH=/app/config/generators.yaml
|
|
42
|
+
- BOARDS_STORAGE_CONFIG_PATH=/app/config/storage_config.yaml
|
|
43
|
+
# Ensure logs are visible in real-time (no buffering)
|
|
44
|
+
- PYTHONUNBUFFERED=1
|
|
37
45
|
volumes:
|
|
46
|
+
# Configuration files (read-only)
|
|
47
|
+
- ./config:/app/config:ro
|
|
48
|
+
# Generated media persistence (read-write)
|
|
38
49
|
- ./data/storage:/app/data/storage
|
|
50
|
+
# Custom generators and plugins (read-only)
|
|
51
|
+
- ./extensions:/app/extensions:ro
|
|
39
52
|
depends_on:
|
|
40
53
|
db:
|
|
41
54
|
condition: service_healthy
|
|
@@ -52,10 +65,9 @@ services:
|
|
|
52
65
|
- internal
|
|
53
66
|
|
|
54
67
|
worker:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
image: baseboards-api:local
|
|
68
|
+
# Pre-built backend image from GitHub Container Registry
|
|
69
|
+
# Override version with BACKEND_VERSION in docker/.env (defaults to latest)
|
|
70
|
+
image: ghcr.io/weirdfingers/boards-backend:${BACKEND_VERSION:-latest}
|
|
59
71
|
command:
|
|
60
72
|
[
|
|
61
73
|
"boards-worker",
|
|
@@ -69,10 +81,23 @@ services:
|
|
|
69
81
|
env_file:
|
|
70
82
|
- docker/.env
|
|
71
83
|
- api/.env
|
|
72
|
-
volumes:
|
|
73
|
-
- ./data/storage:/app/data/storage
|
|
74
84
|
environment:
|
|
85
|
+
# Enable loading custom generators and plugins from /app/extensions
|
|
86
|
+
- PYTHONPATH=/app:/app/extensions
|
|
87
|
+
# Explicit paths to configuration files
|
|
88
|
+
- BOARDS_GENERATORS_CONFIG_PATH=/app/config/generators.yaml
|
|
89
|
+
- BOARDS_STORAGE_CONFIG_PATH=/app/config/storage_config.yaml
|
|
90
|
+
# Internal API URL for worker communication
|
|
75
91
|
- BOARDS_INTERNAL_API_URL=http://api:8800
|
|
92
|
+
# Ensure logs are visible in real-time (no buffering)
|
|
93
|
+
- PYTHONUNBUFFERED=1
|
|
94
|
+
volumes:
|
|
95
|
+
# Configuration files (read-only)
|
|
96
|
+
- ./config:/app/config:ro
|
|
97
|
+
# Generated media persistence (read-write)
|
|
98
|
+
- ./data/storage:/app/data/storage
|
|
99
|
+
# Custom generators and plugins (read-only)
|
|
100
|
+
- ./extensions:/app/extensions:ro
|
|
76
101
|
depends_on:
|
|
77
102
|
db:
|
|
78
103
|
condition: service_healthy
|
|
@@ -81,32 +106,6 @@ services:
|
|
|
81
106
|
networks:
|
|
82
107
|
- internal
|
|
83
108
|
|
|
84
|
-
web:
|
|
85
|
-
build:
|
|
86
|
-
context: ./web
|
|
87
|
-
dockerfile: Dockerfile
|
|
88
|
-
args:
|
|
89
|
-
- NEXT_PUBLIC_API_URL=http://localhost:${API_PORT:-8800}
|
|
90
|
-
- NEXT_PUBLIC_GRAPHQL_URL=http://localhost:${API_PORT:-8800}/graphql
|
|
91
|
-
image: baseboards-web:local
|
|
92
|
-
env_file: web/.env
|
|
93
|
-
environment:
|
|
94
|
-
- NEXT_PUBLIC_API_URL=http://localhost:${API_PORT:-8800}
|
|
95
|
-
- NEXT_PUBLIC_GRAPHQL_URL=http://localhost:${API_PORT:-8800}/graphql
|
|
96
|
-
- INTERNAL_API_URL=http://api:8800
|
|
97
|
-
depends_on:
|
|
98
|
-
api:
|
|
99
|
-
condition: service_healthy
|
|
100
|
-
ports:
|
|
101
|
-
- "${WEB_PORT:-3300}:3000"
|
|
102
|
-
healthcheck:
|
|
103
|
-
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
|
|
104
|
-
interval: 30s
|
|
105
|
-
timeout: 3s
|
|
106
|
-
retries: 50
|
|
107
|
-
networks:
|
|
108
|
-
- internal
|
|
109
|
-
|
|
110
109
|
networks:
|
|
111
110
|
internal:
|
|
112
111
|
driver: bridge
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@radix-ui/react-slot": "^1.2.3",
|
|
17
17
|
"@radix-ui/react-toast": "^1.2.15",
|
|
18
18
|
"@tailwindcss/postcss": "^4.1.13",
|
|
19
|
-
"@weirdfingers/boards": "^0.
|
|
19
|
+
"@weirdfingers/boards": "^0.9.0",
|
|
20
20
|
"class-variance-authority": "^0.7.1",
|
|
21
21
|
"clsx": "^2.0.0",
|
|
22
22
|
"graphql": "^16.11.0",
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Development overrides for Docker Compose
|
|
2
|
-
# Enables hot reload by mounting source code
|
|
3
|
-
|
|
4
|
-
services:
|
|
5
|
-
api:
|
|
6
|
-
volumes:
|
|
7
|
-
- ./api:/app
|
|
8
|
-
environment:
|
|
9
|
-
- PYTHONUNBUFFERED=1
|
|
10
|
-
command:
|
|
11
|
-
[
|
|
12
|
-
"uvicorn",
|
|
13
|
-
"boards.api.app:app",
|
|
14
|
-
"--host",
|
|
15
|
-
"0.0.0.0",
|
|
16
|
-
"--port",
|
|
17
|
-
"8800",
|
|
18
|
-
"--reload",
|
|
19
|
-
"--log-level",
|
|
20
|
-
"debug",
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
worker:
|
|
24
|
-
volumes:
|
|
25
|
-
- ./api:/app
|
|
26
|
-
environment:
|
|
27
|
-
- PYTHONUNBUFFERED=1
|
|
28
|
-
- BOARDS_INTERNAL_API_URL=http://api:8800
|
|
29
|
-
|
|
30
|
-
web:
|
|
31
|
-
command: sh -c "pnpm install && pnpm dev"
|
|
32
|
-
volumes:
|
|
33
|
-
- ./web:/app
|
|
34
|
-
- /app/node_modules
|
|
35
|
-
- /app/.next
|
|
36
|
-
environment:
|
|
37
|
-
- NODE_ENV=development
|
|
38
|
-
- INTERNAL_API_URL=http://api:8800
|