cyclecad 3.0.0 → 3.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 (67) hide show
  1. package/BILLING-IMPLEMENTATION-SUMMARY.md +425 -0
  2. package/BILLING-INDEX.md +293 -0
  3. package/BILLING-INTEGRATION-GUIDE.md +414 -0
  4. package/COLLABORATION-INDEX.md +440 -0
  5. package/COLLABORATION-SYSTEM-SUMMARY.md +548 -0
  6. package/DOCKER-BUILD-MANIFEST.txt +483 -0
  7. package/DOCKER-FILES-REFERENCE.md +440 -0
  8. package/DOCKER-INFRASTRUCTURE.md +475 -0
  9. package/DOCKER-README.md +435 -0
  10. package/Dockerfile +33 -55
  11. package/PWA-FILES-CREATED.txt +350 -0
  12. package/QUICK-START-TESTING.md +126 -0
  13. package/STEP-IMPORT-QUICKSTART.md +347 -0
  14. package/STEP-IMPORT-SYSTEM-SUMMARY.md +502 -0
  15. package/app/css/mobile.css +1074 -0
  16. package/app/icons/generate-icons.js +203 -0
  17. package/app/index.html +93 -0
  18. package/app/js/billing-ui.js +990 -0
  19. package/app/js/brep-kernel.js +933 -981
  20. package/app/js/collab-client.js +750 -0
  21. package/app/js/mobile-nav.js +623 -0
  22. package/app/js/mobile-toolbar.js +476 -0
  23. package/app/js/modules/billing-module.js +724 -0
  24. package/app/js/modules/step-module-enhanced.js +938 -0
  25. package/app/js/offline-manager.js +705 -0
  26. package/app/js/responsive-init.js +360 -0
  27. package/app/js/touch-handler.js +429 -0
  28. package/app/manifest.json +211 -0
  29. package/app/offline.html +508 -0
  30. package/app/sw.js +571 -0
  31. package/app/tests/billing-tests.html +779 -0
  32. package/app/tests/brep-tests.html +980 -0
  33. package/app/tests/collab-tests.html +743 -0
  34. package/app/tests/mobile-tests.html +1299 -0
  35. package/app/tests/pwa-tests.html +1134 -0
  36. package/app/tests/step-tests.html +1042 -0
  37. package/app/tests/test-agent-v3.html +719 -0
  38. package/docker-compose.yml +225 -0
  39. package/docs/BILLING-HELP.json +260 -0
  40. package/docs/BILLING-README.md +639 -0
  41. package/docs/BILLING-TUTORIAL.md +736 -0
  42. package/docs/BREP-HELP.json +326 -0
  43. package/docs/BREP-TUTORIAL.md +802 -0
  44. package/docs/COLLABORATION-HELP.json +228 -0
  45. package/docs/COLLABORATION-TUTORIAL.md +818 -0
  46. package/docs/DOCKER-HELP.json +224 -0
  47. package/docs/DOCKER-TUTORIAL.md +974 -0
  48. package/docs/MOBILE-HELP.json +243 -0
  49. package/docs/MOBILE-RESPONSIVE-README.md +378 -0
  50. package/docs/MOBILE-TUTORIAL.md +747 -0
  51. package/docs/PWA-HELP.json +228 -0
  52. package/docs/PWA-README.md +662 -0
  53. package/docs/PWA-TUTORIAL.md +757 -0
  54. package/docs/STEP-HELP.json +481 -0
  55. package/docs/STEP-IMPORT-TUTORIAL.md +824 -0
  56. package/docs/TESTING-GUIDE.md +528 -0
  57. package/docs/TESTING-HELP.json +182 -0
  58. package/fusion-vs-cyclecad.html +1771 -0
  59. package/nginx.conf +237 -0
  60. package/package.json +1 -1
  61. package/server/Dockerfile.converter +51 -0
  62. package/server/Dockerfile.signaling +28 -0
  63. package/server/billing-server.js +487 -0
  64. package/server/converter-enhanced.py +528 -0
  65. package/server/requirements-converter.txt +29 -0
  66. package/server/signaling-server.js +801 -0
  67. package/tests/docker-tests.sh +389 -0
@@ -0,0 +1,440 @@
1
+ # cycleCAD Docker Files — Reference Guide
2
+
3
+ ## Complete File Listing
4
+
5
+ ### 1. Core Docker Files (3)
6
+
7
+ #### `Dockerfile` (1.7 KB)
8
+ ```
9
+ Location: ~/cyclecad/Dockerfile
10
+ Purpose: Main web application image (nginx-based)
11
+ Uses: Base image nginx:alpine
12
+ Builds: Landing page + CAD app SPA
13
+ Exposes: Port 80 (mapped to 8080 in docker-compose)
14
+ ```
15
+
16
+ **Key Components:**
17
+ - ✅ Copy landing page (index.html, screenshot.png, CNAME)
18
+ - ✅ Copy app directory (entire CAD application)
19
+ - ✅ Copy docs directory (if exists)
20
+ - ✅ Copy example directory (optional, for demos)
21
+ - ✅ Include production nginx.conf
22
+ - ✅ Health check: curl /health
23
+
24
+ **Built Size:** ~15 MB
25
+
26
+ #### `server/Dockerfile.converter` (1.5 KB)
27
+ ```
28
+ Location: ~/cyclecad/server/Dockerfile.converter
29
+ Purpose: STEP/IGES file conversion service (FastAPI)
30
+ Uses: Base image python:3.11-slim
31
+ Installs: cadquery, pythonocc-core, fastapi, uvicorn
32
+ Exposes: Port 8787
33
+ ```
34
+
35
+ **Key Components:**
36
+ - ✅ Install system dependencies (libgl1, libglu1-mesa, etc.)
37
+ - ✅ Install Python dependencies from requirements-converter.txt
38
+ - ✅ Copy converter.py script
39
+ - ✅ Create non-root user (converter:1000)
40
+ - ✅ Health check: curl /health
41
+ - ✅ Start: uvicorn with 2 workers
42
+
43
+ **Built Size:** ~500 MB (large due to OpenCASCADE libs)
44
+
45
+ #### `server/Dockerfile.signaling` (624 B)
46
+ ```
47
+ Location: ~/cyclecad/server/Dockerfile.signaling
48
+ Purpose: WebSocket signaling server for real-time collaboration
49
+ Uses: Base image node:20-alpine
50
+ Installs: ws (WebSocket library), express, cors
51
+ Exposes: Port 8788
52
+ ```
53
+
54
+ **Key Components:**
55
+ - ✅ Install curl for health checks
56
+ - ✅ Copy package.json and install dependencies
57
+ - ✅ Copy signaling-server.js
58
+ - ✅ Create non-root user (nodejs:1001)
59
+ - ✅ Health check: curl /health
60
+ - ✅ Start: node signaling-server.js
61
+
62
+ **Built Size:** ~250 MB
63
+
64
+ ---
65
+
66
+ ### 2. Configuration Files (2)
67
+
68
+ #### `nginx.conf` (7.8 KB)
69
+ ```
70
+ Location: ~/cyclecad/nginx.conf
71
+ Purpose: Production-grade nginx configuration
72
+ Used by: Copied into main Dockerfile during build
73
+ ```
74
+
75
+ **Contents (300+ lines):**
76
+
77
+ 1. **Gzip Compression**
78
+ - Level 6 compression
79
+ - 8 content types (text, css, js, json, svg, wasm, etc.)
80
+ - Min length 500 bytes
81
+
82
+ 2. **Headers**
83
+ - CORS: Access-Control-Allow-Origin *
84
+ - COOP: Cross-Origin-Opener-Policy same-origin
85
+ - COEP: Cross-Origin-Embedder-Policy require-corp
86
+ - Security: CSP, X-Frame-Options, X-Content-Type-Options
87
+
88
+ 3. **Caching Strategy**
89
+ - Static assets (JS/CSS/WASM): 1 year, immutable
90
+ - HTML files: no-cache
91
+ - JSON: 5 minutes
92
+ - Versioned assets: 7 days
93
+
94
+ 4. **Routing**
95
+ - Health check: /health → JSON
96
+ - API proxy: /api/* → converter (port 8787)
97
+ - API proxy: /converter/* → converter
98
+ - WebSocket: /ws/* → signaling (port 8788)
99
+ - SPA routing: /app/* → /app/index.html
100
+
101
+ 5. **Security**
102
+ - Max upload: 500 MB
103
+ - Hidden files blocked (/.*)
104
+ - Proper MIME types
105
+
106
+ #### `docker-compose.yml` (5.7 KB)
107
+ ```
108
+ Location: ~/cyclecad/docker-compose.yml
109
+ Purpose: Multi-service orchestration file
110
+ Used by: docker-compose up/down/ps/logs etc.
111
+ ```
112
+
113
+ **Services Defined:**
114
+ 1. `cyclecad` (nginx)
115
+ - Port: 8080
116
+ - Memory: 512 MB limit, 256 MB reserved
117
+ - CPU: 2 limit, 0.5 reserved
118
+ - Depends on: converter, signaling
119
+
120
+ 2. `converter` (FastAPI)
121
+ - Port: 8787
122
+ - Memory: 4 GB limit, 2 GB reserved
123
+ - CPU: 4 limit, 2 reserved
124
+ - Workers: 2
125
+
126
+ 3. `signaling` (Node.js)
127
+ - Port: 8788
128
+ - Memory: 512 MB limit, 256 MB reserved
129
+ - CPU: 1 limit, 0.25 reserved
130
+
131
+ 4. `exploreview` (optional, nginx)
132
+ - Port: 3000
133
+ - Enabled with: --profile with-exploreview
134
+
135
+ **Network:**
136
+ - `cyclecad-network` (172.28.0.0/16)
137
+ - Bridge driver (isolated)
138
+
139
+ **Volumes:**
140
+ - None defined (stateless services)
141
+ - Future: db-data, redis-data
142
+
143
+ **Logging:**
144
+ - Driver: json-file
145
+ - Rotation: 10-50 MB per file, 3 files max
146
+
147
+ **Health Checks:**
148
+ - All services: 30s interval, 5-10s timeout
149
+ - Retries: 3 attempts before unhealthy
150
+
151
+ ---
152
+
153
+ ### 3. Dependency Management (1)
154
+
155
+ #### `server/requirements-converter.txt` (524 B)
156
+ ```
157
+ Location: ~/cyclecad/server/requirements-converter.txt
158
+ Purpose: Python package dependencies for converter service
159
+ Used by: Dockerfile.converter during build
160
+ ```
161
+
162
+ **Packages (15):**
163
+ - fastapi==0.104.1
164
+ - uvicorn[standard]==0.24.0
165
+ - python-multipart==0.0.6
166
+ - pydantic==2.5.0
167
+ - cadquery==2.4.0
168
+ - OCP==7.7.2.dev0
169
+ - pythonocc-core==7.7.2
170
+ - trimesh==3.24.2
171
+ - pygltflib==1.15.2
172
+ - numpy==1.26.2
173
+ - scipy==1.11.4
174
+ - python-json-logger==2.0.7
175
+ - python-dotenv==1.0.0
176
+
177
+ ---
178
+
179
+ ### 4. Testing (1)
180
+
181
+ #### `tests/docker-tests.sh` (12 KB)
182
+ ```
183
+ Location: ~/cyclecad/tests/docker-tests.sh
184
+ Purpose: End-to-end testing suite (executable bash script)
185
+ Used by: GitHub Actions, manual testing
186
+ ```
187
+
188
+ **Permissions:** 755 (executable)
189
+
190
+ **Test Categories:**
191
+ 1. Prerequisites (docker-compose, Docker daemon)
192
+ 2. Service startup (3+ services running)
193
+ 3. Health checks (all endpoints respond)
194
+ 4. cycleCAD app (/, /app/, /health, headers, caching)
195
+ 5. Converter (health, API docs, upload, conversion)
196
+ 6. Signaling (health, WebSocket)
197
+ 7. Docker config (limits, checks, networking)
198
+ 8. Integration (cross-service, file limits)
199
+ 9. Cleanup (stop/restart operations)
200
+
201
+ **Total Tests:** 30+
202
+
203
+ **Output Format:**
204
+ - Color-coded: Green (pass), Red (fail), Yellow (skip), Blue (info)
205
+ - Summary: Tests passed/failed/skipped, pass rate %
206
+ - Exit code: 0 (all pass), 1 (any fail)
207
+
208
+ ---
209
+
210
+ ### 5. CI/CD Pipeline (1)
211
+
212
+ #### `.github/workflows/docker-test.yml` (11 KB)
213
+ ```
214
+ Location: ~/cyclecad/.github/workflows/docker-test.yml
215
+ Purpose: GitHub Actions workflow for automated testing/publishing
216
+ Used by: GitHub Actions on push/PR events
217
+ ```
218
+
219
+ **Triggers:**
220
+ - Push to main or develop
221
+ - Pull request to main
222
+ - Changes to Docker/app files
223
+
224
+ **Jobs:**
225
+ 1. **build-and-test** (30 min timeout)
226
+ - Checkout, setup Buildx, cache layers
227
+ - Build images
228
+ - Start services
229
+ - Wait for health checks
230
+ - Run docker-tests.sh
231
+ - Upload logs as artifacts
232
+ - Cleanup
233
+
234
+ 2. **publish** (on main push, if tests pass)
235
+ - Login to Docker Hub
236
+ - Login to GitHub Container Registry
237
+ - Build and push 3 images
238
+ - Tag with version, latest, SHA
239
+
240
+ 3. **deploy** (optional, if credentials)
241
+ - SSH to VPS
242
+ - Pull new images
243
+ - Restart services
244
+
245
+ 4. **notify** (always)
246
+ - Report status
247
+ - Send webhook notification
248
+
249
+ ---
250
+
251
+ ### 6. Documentation (4)
252
+
253
+ #### `DOCKER-README.md` (14 KB)
254
+ ```
255
+ Location: ~/cyclecad/DOCKER-README.md
256
+ Purpose: Quick reference and getting started guide
257
+ Audience: Developers, DevOps engineers
258
+ ```
259
+
260
+ **Sections:**
261
+ - Overview
262
+ - Quick start (5 steps)
263
+ - Architecture diagram
264
+ - File structure
265
+ - Key files explanation
266
+ - Commands reference
267
+ - Documentation links
268
+ - Deployment strategies
269
+ - Troubleshooting
270
+ - Performance tips
271
+ - Security
272
+ - CI/CD info
273
+ - Future enhancements
274
+
275
+ **Usage:** Start here for overview and quick commands.
276
+
277
+ #### `docs/DOCKER-TUTORIAL.md` (19 KB, 600+ lines)
278
+ ```
279
+ Location: ~/cyclecad/docs/DOCKER-TUTORIAL.md
280
+ Purpose: Comprehensive guide covering all Docker operations
281
+ Audience: All users, from beginners to DevOps
282
+ ```
283
+
284
+ **Sections (13):**
285
+ 1. Overview
286
+ 2. Quick Start (prerequisites, installation, verification)
287
+ 3. Service Architecture (detailed for each service)
288
+ 4. Building Images (build commands, caching)
289
+ 5. Running Services (start, logs, exec, stop, restart)
290
+ 6. Environment Configuration (.env file, variables)
291
+ 7. Development Workflow (hot reload, testing)
292
+ 8. Production Deployment (VPS, AWS, Kubernetes)
293
+ 9. SSL/TLS with Let's Encrypt (automatic HTTPS)
294
+ 10. Scaling & Performance (horizontal/vertical)
295
+ 11. Monitoring & Logging (real-time, centralized)
296
+ 12. Troubleshooting (7 detailed scenarios)
297
+ 13. CI/CD Pipeline (GitHub Actions setup)
298
+
299
+ **Usage:** Complete reference for all Docker operations.
300
+
301
+ #### `docs/DOCKER-HELP.json` (7.4 KB)
302
+ ```
303
+ Location: ~/cyclecad/docs/DOCKER-HELP.json
304
+ Purpose: Structured help entries for CLI integration
305
+ Format: JSON
306
+ ```
307
+
308
+ **Structure:**
309
+ - 15+ help entries
310
+ - Each entry has: id, title, category, description, commands, example, output
311
+ - 5 tips with categories
312
+ - Searchable for integration with CLI tools or IDEs
313
+
314
+ **Entries:**
315
+ - docker-start, docker-stop
316
+ - docker-logs, docker-status, docker-health
317
+ - docker-exec, docker-build
318
+ - docker-step-convert, docker-converter-api
319
+ - docker-restart, docker-env, docker-volume
320
+ - docker-cleanup, docker-logs-persistent
321
+ - docker-profile, docker-network
322
+
323
+ **Usage:** Integrate with CLI autocomplete or help systems.
324
+
325
+ #### `DOCKER-INFRASTRUCTURE.md` (This file, ~100 KB)
326
+ ```
327
+ Location: ~/cyclecad/DOCKER-INFRASTRUCTURE.md
328
+ Purpose: Complete build summary and file manifest
329
+ Audience: Project leads, documentation, archival
330
+ ```
331
+
332
+ **Contents:**
333
+ - What was built (overview)
334
+ - File manifest
335
+ - Quick start copy-paste
336
+ - Key features (architecture, performance, security)
337
+ - Deployment paths
338
+ - Success metrics
339
+ - Next steps
340
+ - Commands reference
341
+ - Support info
342
+ - Version history
343
+
344
+ **Usage:** Project documentation and reference.
345
+
346
+ ---
347
+
348
+ ## File Relationships
349
+
350
+ ```
351
+ docker-compose.yml
352
+ ├── Dockerfile (builds cyclecad image)
353
+ │ └── nginx.conf (copied into image)
354
+
355
+ ├── server/Dockerfile.converter (builds converter image)
356
+ │ └── server/requirements-converter.txt
357
+
358
+ ├── server/Dockerfile.signaling (builds signaling image)
359
+ │ └── server/package.json (referenced, auto-created if missing)
360
+
361
+ └── .github/workflows/docker-test.yml (CI/CD)
362
+ ├── tests/docker-tests.sh (runs tests)
363
+ │ └── docker-compose commands (uses docker-compose.yml)
364
+
365
+ └── Docker build/push commands (uses Dockerfiles)
366
+ ```
367
+
368
+ ---
369
+
370
+ ## Size Summary
371
+
372
+ | File | Size | Type |
373
+ |------|------|------|
374
+ | Dockerfile | 1.7 KB | Configuration |
375
+ | server/Dockerfile.converter | 1.5 KB | Configuration |
376
+ | server/Dockerfile.signaling | 624 B | Configuration |
377
+ | nginx.conf | 7.8 KB | Configuration |
378
+ | docker-compose.yml | 5.7 KB | Configuration |
379
+ | server/requirements-converter.txt | 524 B | Dependency |
380
+ | tests/docker-tests.sh | 12 KB | Script |
381
+ | .github/workflows/docker-test.yml | 11 KB | Configuration |
382
+ | DOCKER-README.md | 14 KB | Documentation |
383
+ | docs/DOCKER-TUTORIAL.md | 19 KB | Documentation |
384
+ | docs/DOCKER-HELP.json | 7.4 KB | Reference |
385
+ | DOCKER-INFRASTRUCTURE.md | (this) | Documentation |
386
+ | **TOTAL** | **~110 KB** | **Code + Docs** |
387
+
388
+ ---
389
+
390
+ ## Image Build Sizes
391
+
392
+ | Image | Base | Size | Services |
393
+ |-------|------|------|----------|
394
+ | cyclecad | nginx:alpine | 15 MB | Web app (port 8080) |
395
+ | cyclecad-converter | python:3.11-slim | 500 MB | STEP converter (port 8787) |
396
+ | cyclecad-signaling | node:20-alpine | 250 MB | WebSocket (port 8788) |
397
+ | **Total** | — | **765 MB** | **3 services** |
398
+
399
+ ---
400
+
401
+ ## Getting Started
402
+
403
+ **Step 1: Review Files**
404
+ 1. Read DOCKER-README.md (10 min)
405
+ 2. Skim DOCKER-INFRASTRUCTURE.md (5 min)
406
+
407
+ **Step 2: Start Services**
408
+ ```bash
409
+ cd ~/cyclecad
410
+ docker-compose up -d
411
+ docker-compose ps
412
+ ```
413
+
414
+ **Step 3: Test**
415
+ ```bash
416
+ bash tests/docker-tests.sh
417
+ ```
418
+
419
+ **Step 4: Access Apps**
420
+ - cycleCAD: http://localhost:8080
421
+ - Converter API: http://localhost:8787/docs
422
+ - Signaling: ws://localhost:8788
423
+
424
+ **Step 5: Learn More**
425
+ - Command reference: DOCKER-README.md
426
+ - Detailed guide: docs/DOCKER-TUTORIAL.md
427
+ - Help entries: docs/DOCKER-HELP.json
428
+
429
+ ---
430
+
431
+ ## Support
432
+
433
+ - **Issues**: https://github.com/vvlars-cmd/cyclecad/issues
434
+ - **Docs**: All files in this directory
435
+ - **Contact**: vvlars@googlemail.com
436
+
437
+ ---
438
+
439
+ Generated: 2026-03-31
440
+ Version: 0.8.6