@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.
Files changed (139) hide show
  1. package/README.md +191 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +887 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +64 -0
  6. package/templates/README.md +120 -0
  7. package/templates/api/.env.example +62 -0
  8. package/templates/api/Dockerfile +32 -0
  9. package/templates/api/README.md +132 -0
  10. package/templates/api/alembic/env.py +106 -0
  11. package/templates/api/alembic/script.py.mako +28 -0
  12. package/templates/api/alembic/versions/20250101_000000_initial_schema.py +448 -0
  13. package/templates/api/alembic/versions/20251022_174729_remove_provider_name_from_generations.py +71 -0
  14. package/templates/api/alembic/versions/20251023_165852_switch_to_declarative_base_and_mapping.py +411 -0
  15. package/templates/api/alembic/versions/2025925_62735_add_seed_data_for_default_tenant.py +85 -0
  16. package/templates/api/alembic.ini +36 -0
  17. package/templates/api/config/generators.yaml +25 -0
  18. package/templates/api/config/storage_config.yaml +26 -0
  19. package/templates/api/docs/ADDING_GENERATORS.md +409 -0
  20. package/templates/api/docs/GENERATORS_API.md +502 -0
  21. package/templates/api/docs/MIGRATIONS.md +472 -0
  22. package/templates/api/docs/storage_providers.md +337 -0
  23. package/templates/api/pyproject.toml +165 -0
  24. package/templates/api/src/boards/__init__.py +10 -0
  25. package/templates/api/src/boards/api/app.py +171 -0
  26. package/templates/api/src/boards/api/auth.py +75 -0
  27. package/templates/api/src/boards/api/endpoints/__init__.py +3 -0
  28. package/templates/api/src/boards/api/endpoints/jobs.py +76 -0
  29. package/templates/api/src/boards/api/endpoints/setup.py +505 -0
  30. package/templates/api/src/boards/api/endpoints/sse.py +129 -0
  31. package/templates/api/src/boards/api/endpoints/storage.py +74 -0
  32. package/templates/api/src/boards/api/endpoints/tenant_registration.py +296 -0
  33. package/templates/api/src/boards/api/endpoints/webhooks.py +13 -0
  34. package/templates/api/src/boards/auth/__init__.py +15 -0
  35. package/templates/api/src/boards/auth/adapters/__init__.py +20 -0
  36. package/templates/api/src/boards/auth/adapters/auth0.py +220 -0
  37. package/templates/api/src/boards/auth/adapters/base.py +73 -0
  38. package/templates/api/src/boards/auth/adapters/clerk.py +172 -0
  39. package/templates/api/src/boards/auth/adapters/jwt.py +122 -0
  40. package/templates/api/src/boards/auth/adapters/none.py +102 -0
  41. package/templates/api/src/boards/auth/adapters/oidc.py +284 -0
  42. package/templates/api/src/boards/auth/adapters/supabase.py +110 -0
  43. package/templates/api/src/boards/auth/context.py +35 -0
  44. package/templates/api/src/boards/auth/factory.py +115 -0
  45. package/templates/api/src/boards/auth/middleware.py +221 -0
  46. package/templates/api/src/boards/auth/provisioning.py +129 -0
  47. package/templates/api/src/boards/auth/tenant_extraction.py +278 -0
  48. package/templates/api/src/boards/cli.py +354 -0
  49. package/templates/api/src/boards/config.py +116 -0
  50. package/templates/api/src/boards/database/__init__.py +7 -0
  51. package/templates/api/src/boards/database/cli.py +110 -0
  52. package/templates/api/src/boards/database/connection.py +252 -0
  53. package/templates/api/src/boards/database/models.py +19 -0
  54. package/templates/api/src/boards/database/seed_data.py +182 -0
  55. package/templates/api/src/boards/dbmodels/__init__.py +455 -0
  56. package/templates/api/src/boards/generators/__init__.py +57 -0
  57. package/templates/api/src/boards/generators/artifacts.py +53 -0
  58. package/templates/api/src/boards/generators/base.py +140 -0
  59. package/templates/api/src/boards/generators/implementations/__init__.py +12 -0
  60. package/templates/api/src/boards/generators/implementations/audio/__init__.py +3 -0
  61. package/templates/api/src/boards/generators/implementations/audio/whisper.py +66 -0
  62. package/templates/api/src/boards/generators/implementations/image/__init__.py +3 -0
  63. package/templates/api/src/boards/generators/implementations/image/dalle3.py +93 -0
  64. package/templates/api/src/boards/generators/implementations/image/flux_pro.py +85 -0
  65. package/templates/api/src/boards/generators/implementations/video/__init__.py +3 -0
  66. package/templates/api/src/boards/generators/implementations/video/lipsync.py +70 -0
  67. package/templates/api/src/boards/generators/loader.py +253 -0
  68. package/templates/api/src/boards/generators/registry.py +114 -0
  69. package/templates/api/src/boards/generators/resolution.py +515 -0
  70. package/templates/api/src/boards/generators/testmods/class_gen.py +34 -0
  71. package/templates/api/src/boards/generators/testmods/import_side_effect.py +35 -0
  72. package/templates/api/src/boards/graphql/__init__.py +7 -0
  73. package/templates/api/src/boards/graphql/access_control.py +136 -0
  74. package/templates/api/src/boards/graphql/mutations/root.py +136 -0
  75. package/templates/api/src/boards/graphql/queries/root.py +116 -0
  76. package/templates/api/src/boards/graphql/resolvers/__init__.py +8 -0
  77. package/templates/api/src/boards/graphql/resolvers/auth.py +12 -0
  78. package/templates/api/src/boards/graphql/resolvers/board.py +1055 -0
  79. package/templates/api/src/boards/graphql/resolvers/generation.py +889 -0
  80. package/templates/api/src/boards/graphql/resolvers/generator.py +50 -0
  81. package/templates/api/src/boards/graphql/resolvers/user.py +25 -0
  82. package/templates/api/src/boards/graphql/schema.py +81 -0
  83. package/templates/api/src/boards/graphql/types/board.py +102 -0
  84. package/templates/api/src/boards/graphql/types/generation.py +130 -0
  85. package/templates/api/src/boards/graphql/types/generator.py +17 -0
  86. package/templates/api/src/boards/graphql/types/user.py +47 -0
  87. package/templates/api/src/boards/jobs/repository.py +104 -0
  88. package/templates/api/src/boards/logging.py +195 -0
  89. package/templates/api/src/boards/middleware.py +339 -0
  90. package/templates/api/src/boards/progress/__init__.py +4 -0
  91. package/templates/api/src/boards/progress/models.py +25 -0
  92. package/templates/api/src/boards/progress/publisher.py +64 -0
  93. package/templates/api/src/boards/py.typed +0 -0
  94. package/templates/api/src/boards/redis_pool.py +118 -0
  95. package/templates/api/src/boards/storage/__init__.py +52 -0
  96. package/templates/api/src/boards/storage/base.py +363 -0
  97. package/templates/api/src/boards/storage/config.py +187 -0
  98. package/templates/api/src/boards/storage/factory.py +278 -0
  99. package/templates/api/src/boards/storage/implementations/__init__.py +27 -0
  100. package/templates/api/src/boards/storage/implementations/gcs.py +340 -0
  101. package/templates/api/src/boards/storage/implementations/local.py +201 -0
  102. package/templates/api/src/boards/storage/implementations/s3.py +294 -0
  103. package/templates/api/src/boards/storage/implementations/supabase.py +218 -0
  104. package/templates/api/src/boards/tenant_isolation.py +446 -0
  105. package/templates/api/src/boards/validation.py +262 -0
  106. package/templates/api/src/boards/workers/__init__.py +1 -0
  107. package/templates/api/src/boards/workers/actors.py +201 -0
  108. package/templates/api/src/boards/workers/cli.py +125 -0
  109. package/templates/api/src/boards/workers/context.py +188 -0
  110. package/templates/api/src/boards/workers/middleware.py +58 -0
  111. package/templates/api/src/py.typed +0 -0
  112. package/templates/compose.dev.yaml +39 -0
  113. package/templates/compose.yaml +109 -0
  114. package/templates/docker/env.example +23 -0
  115. package/templates/web/.env.example +28 -0
  116. package/templates/web/Dockerfile +51 -0
  117. package/templates/web/components.json +22 -0
  118. package/templates/web/imageLoader.js +18 -0
  119. package/templates/web/next-env.d.ts +5 -0
  120. package/templates/web/next.config.js +36 -0
  121. package/templates/web/package.json +37 -0
  122. package/templates/web/postcss.config.mjs +7 -0
  123. package/templates/web/public/favicon.ico +0 -0
  124. package/templates/web/src/app/boards/[boardId]/page.tsx +232 -0
  125. package/templates/web/src/app/globals.css +120 -0
  126. package/templates/web/src/app/layout.tsx +21 -0
  127. package/templates/web/src/app/page.tsx +35 -0
  128. package/templates/web/src/app/providers.tsx +18 -0
  129. package/templates/web/src/components/boards/ArtifactInputSlots.tsx +142 -0
  130. package/templates/web/src/components/boards/ArtifactPreview.tsx +125 -0
  131. package/templates/web/src/components/boards/GenerationGrid.tsx +45 -0
  132. package/templates/web/src/components/boards/GenerationInput.tsx +251 -0
  133. package/templates/web/src/components/boards/GeneratorSelector.tsx +89 -0
  134. package/templates/web/src/components/header.tsx +30 -0
  135. package/templates/web/src/components/ui/button.tsx +58 -0
  136. package/templates/web/src/components/ui/card.tsx +92 -0
  137. package/templates/web/src/components/ui/navigation-menu.tsx +168 -0
  138. package/templates/web/src/lib/utils.ts +6 -0
  139. 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
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node