@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weirdfingers/baseboards",
3
- "version": "0.8.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
- "chalk": "^5.3.0",
45
+ "prompts": "^2.4.2",
46
+ "semver": "^7.7.3",
47
+ "tar": "^7.4.3",
45
48
  "which": "^4.0.0",
46
- "prompts": "^2.4.2"
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
  }
@@ -3,7 +3,7 @@ Boards Backend SDK
3
3
  Open-source creative toolkit for AI-generated content
4
4
  """
5
5
 
6
- __version__ = "0.8.0"
6
+ __version__ = "0.9.0"
7
7
 
8
8
  from .config import settings
9
9
 
@@ -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
@@ -27,15 +27,28 @@ services:
27
27
  - internal
28
28
 
29
29
  api:
30
- build:
31
- context: ./api
32
- dockerfile: Dockerfile
33
- image: baseboards-api:local
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
- build:
56
- context: ./api
57
- dockerfile: Dockerfile
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.8.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