@weirdfingers/baseboards 0.2.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 +191 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +887 -0
- package/dist/index.js.map +1 -0
- package/package.json +64 -0
- package/templates/README.md +120 -0
- package/templates/api/.env.example +62 -0
- package/templates/api/Dockerfile +32 -0
- package/templates/api/README.md +132 -0
- package/templates/api/alembic/env.py +106 -0
- package/templates/api/alembic/script.py.mako +28 -0
- package/templates/api/alembic/versions/20250101_000000_initial_schema.py +448 -0
- package/templates/api/alembic/versions/20251022_174729_remove_provider_name_from_generations.py +71 -0
- package/templates/api/alembic/versions/20251023_165852_switch_to_declarative_base_and_mapping.py +411 -0
- package/templates/api/alembic/versions/2025925_62735_add_seed_data_for_default_tenant.py +85 -0
- package/templates/api/alembic.ini +36 -0
- package/templates/api/config/generators.yaml +25 -0
- package/templates/api/config/storage_config.yaml +26 -0
- package/templates/api/docs/ADDING_GENERATORS.md +409 -0
- package/templates/api/docs/GENERATORS_API.md +502 -0
- package/templates/api/docs/MIGRATIONS.md +472 -0
- package/templates/api/docs/storage_providers.md +337 -0
- package/templates/api/pyproject.toml +165 -0
- package/templates/api/src/boards/__init__.py +10 -0
- package/templates/api/src/boards/api/app.py +171 -0
- package/templates/api/src/boards/api/auth.py +75 -0
- package/templates/api/src/boards/api/endpoints/__init__.py +3 -0
- package/templates/api/src/boards/api/endpoints/jobs.py +76 -0
- package/templates/api/src/boards/api/endpoints/setup.py +505 -0
- package/templates/api/src/boards/api/endpoints/sse.py +129 -0
- package/templates/api/src/boards/api/endpoints/storage.py +74 -0
- package/templates/api/src/boards/api/endpoints/tenant_registration.py +296 -0
- package/templates/api/src/boards/api/endpoints/webhooks.py +13 -0
- package/templates/api/src/boards/auth/__init__.py +15 -0
- package/templates/api/src/boards/auth/adapters/__init__.py +20 -0
- package/templates/api/src/boards/auth/adapters/auth0.py +220 -0
- package/templates/api/src/boards/auth/adapters/base.py +73 -0
- package/templates/api/src/boards/auth/adapters/clerk.py +172 -0
- package/templates/api/src/boards/auth/adapters/jwt.py +122 -0
- package/templates/api/src/boards/auth/adapters/none.py +102 -0
- package/templates/api/src/boards/auth/adapters/oidc.py +284 -0
- package/templates/api/src/boards/auth/adapters/supabase.py +110 -0
- package/templates/api/src/boards/auth/context.py +35 -0
- package/templates/api/src/boards/auth/factory.py +115 -0
- package/templates/api/src/boards/auth/middleware.py +221 -0
- package/templates/api/src/boards/auth/provisioning.py +129 -0
- package/templates/api/src/boards/auth/tenant_extraction.py +278 -0
- package/templates/api/src/boards/cli.py +354 -0
- package/templates/api/src/boards/config.py +116 -0
- package/templates/api/src/boards/database/__init__.py +7 -0
- package/templates/api/src/boards/database/cli.py +110 -0
- package/templates/api/src/boards/database/connection.py +252 -0
- package/templates/api/src/boards/database/models.py +19 -0
- package/templates/api/src/boards/database/seed_data.py +182 -0
- package/templates/api/src/boards/dbmodels/__init__.py +455 -0
- package/templates/api/src/boards/generators/__init__.py +57 -0
- package/templates/api/src/boards/generators/artifacts.py +53 -0
- package/templates/api/src/boards/generators/base.py +140 -0
- package/templates/api/src/boards/generators/implementations/__init__.py +12 -0
- package/templates/api/src/boards/generators/implementations/audio/__init__.py +3 -0
- package/templates/api/src/boards/generators/implementations/audio/whisper.py +66 -0
- package/templates/api/src/boards/generators/implementations/image/__init__.py +3 -0
- package/templates/api/src/boards/generators/implementations/image/dalle3.py +93 -0
- package/templates/api/src/boards/generators/implementations/image/flux_pro.py +85 -0
- package/templates/api/src/boards/generators/implementations/video/__init__.py +3 -0
- package/templates/api/src/boards/generators/implementations/video/lipsync.py +70 -0
- package/templates/api/src/boards/generators/loader.py +253 -0
- package/templates/api/src/boards/generators/registry.py +114 -0
- package/templates/api/src/boards/generators/resolution.py +515 -0
- package/templates/api/src/boards/generators/testmods/class_gen.py +34 -0
- package/templates/api/src/boards/generators/testmods/import_side_effect.py +35 -0
- package/templates/api/src/boards/graphql/__init__.py +7 -0
- package/templates/api/src/boards/graphql/access_control.py +136 -0
- package/templates/api/src/boards/graphql/mutations/root.py +136 -0
- package/templates/api/src/boards/graphql/queries/root.py +116 -0
- package/templates/api/src/boards/graphql/resolvers/__init__.py +8 -0
- package/templates/api/src/boards/graphql/resolvers/auth.py +12 -0
- package/templates/api/src/boards/graphql/resolvers/board.py +1055 -0
- package/templates/api/src/boards/graphql/resolvers/generation.py +889 -0
- package/templates/api/src/boards/graphql/resolvers/generator.py +50 -0
- package/templates/api/src/boards/graphql/resolvers/user.py +25 -0
- package/templates/api/src/boards/graphql/schema.py +81 -0
- package/templates/api/src/boards/graphql/types/board.py +102 -0
- package/templates/api/src/boards/graphql/types/generation.py +130 -0
- package/templates/api/src/boards/graphql/types/generator.py +17 -0
- package/templates/api/src/boards/graphql/types/user.py +47 -0
- package/templates/api/src/boards/jobs/repository.py +104 -0
- package/templates/api/src/boards/logging.py +195 -0
- package/templates/api/src/boards/middleware.py +339 -0
- package/templates/api/src/boards/progress/__init__.py +4 -0
- package/templates/api/src/boards/progress/models.py +25 -0
- package/templates/api/src/boards/progress/publisher.py +64 -0
- package/templates/api/src/boards/py.typed +0 -0
- package/templates/api/src/boards/redis_pool.py +118 -0
- package/templates/api/src/boards/storage/__init__.py +52 -0
- package/templates/api/src/boards/storage/base.py +363 -0
- package/templates/api/src/boards/storage/config.py +187 -0
- package/templates/api/src/boards/storage/factory.py +278 -0
- package/templates/api/src/boards/storage/implementations/__init__.py +27 -0
- package/templates/api/src/boards/storage/implementations/gcs.py +340 -0
- package/templates/api/src/boards/storage/implementations/local.py +201 -0
- package/templates/api/src/boards/storage/implementations/s3.py +294 -0
- package/templates/api/src/boards/storage/implementations/supabase.py +218 -0
- package/templates/api/src/boards/tenant_isolation.py +446 -0
- package/templates/api/src/boards/validation.py +262 -0
- package/templates/api/src/boards/workers/__init__.py +1 -0
- package/templates/api/src/boards/workers/actors.py +201 -0
- package/templates/api/src/boards/workers/cli.py +125 -0
- package/templates/api/src/boards/workers/context.py +188 -0
- package/templates/api/src/boards/workers/middleware.py +58 -0
- package/templates/api/src/py.typed +0 -0
- package/templates/compose.dev.yaml +39 -0
- package/templates/compose.yaml +109 -0
- package/templates/docker/env.example +23 -0
- package/templates/web/.env.example +28 -0
- package/templates/web/Dockerfile +51 -0
- package/templates/web/components.json +22 -0
- package/templates/web/imageLoader.js +18 -0
- package/templates/web/next-env.d.ts +5 -0
- package/templates/web/next.config.js +36 -0
- package/templates/web/package.json +37 -0
- package/templates/web/postcss.config.mjs +7 -0
- package/templates/web/public/favicon.ico +0 -0
- package/templates/web/src/app/boards/[boardId]/page.tsx +232 -0
- package/templates/web/src/app/globals.css +120 -0
- package/templates/web/src/app/layout.tsx +21 -0
- package/templates/web/src/app/page.tsx +35 -0
- package/templates/web/src/app/providers.tsx +18 -0
- package/templates/web/src/components/boards/ArtifactInputSlots.tsx +142 -0
- package/templates/web/src/components/boards/ArtifactPreview.tsx +125 -0
- package/templates/web/src/components/boards/GenerationGrid.tsx +45 -0
- package/templates/web/src/components/boards/GenerationInput.tsx +251 -0
- package/templates/web/src/components/boards/GeneratorSelector.tsx +89 -0
- package/templates/web/src/components/header.tsx +30 -0
- package/templates/web/src/components/ui/button.tsx +58 -0
- package/templates/web/src/components/ui/card.tsx +92 -0
- package/templates/web/src/components/ui/navigation-menu.tsx +168 -0
- package/templates/web/src/lib/utils.ts +6 -0
- package/templates/web/tsconfig.json +47 -0
package/README.md
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# @weirdfingers/baseboards
|
|
2
|
+
|
|
3
|
+
One-command launcher for the Boards image generation platform.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Create and start a new Baseboards installation
|
|
9
|
+
npx @weirdfingers/baseboards up my-boards-app
|
|
10
|
+
|
|
11
|
+
# You'll be prompted to enter API keys during setup
|
|
12
|
+
# (or you can add them later by editing api/.env)
|
|
13
|
+
|
|
14
|
+
# Access the app
|
|
15
|
+
open http://localhost:3300
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Commands
|
|
19
|
+
|
|
20
|
+
### `up [directory]`
|
|
21
|
+
|
|
22
|
+
Scaffold and start Baseboards. If the directory doesn't exist, creates a new project from templates.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
baseboards up # Current directory
|
|
26
|
+
baseboards up my-app # New directory
|
|
27
|
+
baseboards up --prod # Production mode
|
|
28
|
+
baseboards up --detached # Background mode
|
|
29
|
+
baseboards up --ports web=3300 # Custom ports
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### `down [directory]`
|
|
33
|
+
|
|
34
|
+
Stop Baseboards.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
baseboards down # Stop services
|
|
38
|
+
baseboards down --volumes # Also remove volumes (deletes data)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### `logs [directory] [services...]`
|
|
42
|
+
|
|
43
|
+
View service logs.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
baseboards logs # All services
|
|
47
|
+
baseboards logs api web # Specific services
|
|
48
|
+
baseboards logs -f # Follow logs
|
|
49
|
+
baseboards logs --since 1h # Last hour
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### `status [directory]`
|
|
53
|
+
|
|
54
|
+
Show service status.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
baseboards status
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### `clean [directory]`
|
|
61
|
+
|
|
62
|
+
Clean up Docker resources.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
baseboards clean # Remove containers and volumes
|
|
66
|
+
baseboards clean --hard # Also remove images
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### `update [directory]`
|
|
70
|
+
|
|
71
|
+
Update to the latest version (preserves configuration).
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
baseboards update
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### `doctor [directory]`
|
|
78
|
+
|
|
79
|
+
Run diagnostics and show system information.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
baseboards doctor
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Requirements
|
|
86
|
+
|
|
87
|
+
- Docker Desktop (macOS/Windows) or Docker Engine (Linux)
|
|
88
|
+
- Node.js 20+
|
|
89
|
+
|
|
90
|
+
## What Gets Scaffolded
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
my-app/
|
|
94
|
+
├─ web/ # Next.js frontend
|
|
95
|
+
├─ api/ # FastAPI backend
|
|
96
|
+
├─ data/storage/ # Generated media (local storage)
|
|
97
|
+
├─ docker/ # Docker Compose configuration
|
|
98
|
+
├─ compose.yaml
|
|
99
|
+
├─ compose.dev.yaml
|
|
100
|
+
└─ README.md
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Configuration
|
|
104
|
+
|
|
105
|
+
### Provider API Keys (Required)
|
|
106
|
+
|
|
107
|
+
During initial setup, you'll be prompted to enter API keys. You can also edit `api/.env` directly:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Keys are stored as JSON in a single environment variable
|
|
111
|
+
BOARDS_GENERATOR_API_KEYS={"REPLICATE_API_KEY":"r8_...","OPENAI_API_KEY":"sk-..."}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Get keys from:
|
|
115
|
+
|
|
116
|
+
- **Replicate**: https://replicate.com/account/api-tokens
|
|
117
|
+
- **OpenAI**: https://platform.openai.com/api-keys
|
|
118
|
+
- **FAL**: https://fal.ai/dashboard/keys
|
|
119
|
+
- **Google**: https://makersuite.google.com/app/apikey
|
|
120
|
+
|
|
121
|
+
### Generators
|
|
122
|
+
|
|
123
|
+
Edit `api/config/generators.yaml` to customize providers and models.
|
|
124
|
+
|
|
125
|
+
### Storage
|
|
126
|
+
|
|
127
|
+
Edit `api/config/storage_config.yaml` to configure storage (local/S3/GCS).
|
|
128
|
+
|
|
129
|
+
## Development
|
|
130
|
+
|
|
131
|
+
This package is part of the Boards monorepo.
|
|
132
|
+
|
|
133
|
+
### Building
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
pnpm build
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
This will:
|
|
140
|
+
|
|
141
|
+
1. Run `prepare-templates.js` to copy templates from monorepo
|
|
142
|
+
2. Build TypeScript with tsup
|
|
143
|
+
3. Create `dist/` and `templates/` directories
|
|
144
|
+
|
|
145
|
+
### Testing Locally
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# 1. Build the package
|
|
149
|
+
pnpm build
|
|
150
|
+
|
|
151
|
+
# 2. Run the CLI directly
|
|
152
|
+
node dist/index.js up test-project
|
|
153
|
+
|
|
154
|
+
# 3. When done testing, clean up
|
|
155
|
+
cd test-project
|
|
156
|
+
docker compose down -v
|
|
157
|
+
cd ..
|
|
158
|
+
rm -rf test-project
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Note:** The `-v` flag removes volumes (including database data). Use `docker compose down` without `-v` if you want to preserve data between tests.
|
|
162
|
+
|
|
163
|
+
### Release
|
|
164
|
+
|
|
165
|
+
All packages use unified versioning. To release:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Bump version across all packages
|
|
169
|
+
pnpm version 1.2.0 -r
|
|
170
|
+
|
|
171
|
+
# Build (templates get auto-copied)
|
|
172
|
+
pnpm build
|
|
173
|
+
|
|
174
|
+
# Publish
|
|
175
|
+
pnpm publish
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Architecture
|
|
179
|
+
|
|
180
|
+
The CLI bundles templates from the monorepo:
|
|
181
|
+
|
|
182
|
+
- `apps/baseboards` → `templates/web/`
|
|
183
|
+
- `packages/backend` → `templates/api/`
|
|
184
|
+
|
|
185
|
+
Templates are copied during build time via `scripts/prepare-templates.js`.
|
|
186
|
+
|
|
187
|
+
When users run `baseboards up`, templates are copied to their machine and Docker Compose orchestrates the services.
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|