forgecad 0.9.13 → 0.9.15
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/LICENSE +6 -4
- package/README.md +8 -4
- package/dist/assets/{AdminPage-DramHHDf.js → AdminPage-CDyGUinA.js} +2 -2
- package/dist/assets/{BenchmarkPage-Bjgkh5m9.js → BenchmarkPage-DfPMY_-d.js} +4 -15
- package/dist/assets/{BlogPage-n_HGP3Qm.js → BlogPage-kF0fkdJT.js} +2 -2
- package/dist/assets/{DocsPage-WCIkPmzC.js → DocsPage-B954L3YN.js} +9 -3
- package/dist/assets/EditorApp-Beb-IZ0y.js +14014 -0
- package/dist/assets/{EditorApp-BAnckbsk.css → EditorApp-CuDLxKqL.css} +698 -0
- package/dist/assets/{EmbedViewer-DEZKqdfW.js → EmbedViewer-C77B-TrF.js} +3 -3
- package/dist/assets/{LandingPageProofDriven-CeRIctuj.js → LandingPageProofDriven-Cr6fXMDj.js} +35 -37
- package/dist/assets/LegalPage-BRlScr9A.css +91 -0
- package/dist/assets/LegalPage-Dzklqmmg.js +39 -0
- package/dist/assets/{PricingPage-BMedqFef.css → PricingPage-BPF6HKyO.css} +25 -0
- package/dist/assets/{PricingPage-rIRa8p4Y.js → PricingPage-zWXkvlwl.js} +19 -19
- package/dist/assets/{SettingsPage-BqCUvEXM.js → SettingsPage-Bz0of4KQ.js} +2 -2
- package/dist/assets/app-CE3sYcV7.css +3890 -0
- package/dist/assets/{app-BUZqJvSO.js → app-D3kDkggg.js} +2305 -960
- package/dist/assets/cli/{render-lhGxj50Y.js → render-DSY3mMQa.js} +423 -30
- package/dist/assets/{constructionHistoryWorker-ipD1jcIv.js → constructionHistoryWorker-gpDo-uH2.js} +927 -243
- package/dist/assets/{evalWorker-CHXSe_-u.js → evalWorker-CU0Ke6DP.js} +7799 -4163
- package/dist/assets/{forgecad_geometry-BVnIeXMG.js → forgecad_geometry-Dgceylq9.js} +43 -1
- package/dist/assets/{forgecad_geometry_bg-DufhhCBV.wasm → forgecad_geometry_bg-dD4RNQF1.wasm} +0 -0
- package/dist/assets/{inspectWorker-DeRnMVv1.js → inspectWorker-COyp8XXA.js} +927 -243
- package/dist/assets/{javascript-70-4uGcz.js → javascript-1kQXfVaz.js} +1 -1
- package/dist/assets/landing-proof-driven-DiGqdtWa.js +18 -0
- package/dist/assets/{landing-proof-driven-oFYW6mjz.css → landing-proof-driven-ORyigZ6p.css} +13 -7
- package/dist/assets/legalContent-ZfFGMmi4.js +251 -0
- package/dist/assets/{manifold-D1LZIHqn.js → manifold-BRI5prcH.js} +1 -1
- package/dist/assets/{manifold-C2fwoTgd.js → manifold-C-3h2M7p.js} +2 -2
- package/dist/assets/{manifold-BTkzxi9V.js → manifold-DNkrUWpA.js} +1 -1
- package/dist/assets/{reportWorker-Cq1qGmg0.js → reportWorker-CdBz5bNg.js} +7537 -10856
- package/dist/assets/{scalar-sampling-budget-D9Qv_UlJ.js → scalar-sampling-budget-wJF98aY9.js} +6943 -4345
- package/dist/assets/{scanProxyWorker-Bs2TDgLw.js → scanProxyWorker-B-9VbLIs.js} +32 -1
- package/dist/assets/{renderSceneState-Dr0xPq1A.js → targets-B9sGB5nB.js} +27 -1
- package/dist/assets/{vendor-react-Da3A2QmU.js → vendor-react-6j1Kke-Y.js} +6 -5
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +2 -2
- package/dist/docs-raw/AI/ai-native-cad.md +50 -0
- package/dist/docs-raw/AI/usage.md +9 -17
- package/dist/docs-raw/CLI.md +71 -21
- package/dist/docs-raw/component-model.md +27 -11
- package/dist/docs-raw/generated/assembly.md +301 -212
- package/dist/docs-raw/generated/concepts.md +238 -240
- package/dist/docs-raw/generated/core.md +283 -6
- package/dist/docs-raw/generated/curves.md +274 -361
- package/dist/docs-raw/generated/lib.md +7 -1
- package/dist/docs-raw/generated/output.md +19 -4
- package/dist/docs-raw/generated/runtime-names.md +41 -0
- package/dist/docs-raw/generated/sdf.md +31 -0
- package/dist/docs-raw/generated/sheet-metal.md +9 -0
- package/dist/docs-raw/generated/sketch.md +44 -1
- package/dist/docs-raw/generated/viewport.md +14 -6
- package/dist/docs-raw/guides/coordinate-system.md +20 -16
- package/dist/docs-raw/guides/geometry-conventions.md +2 -2
- package/dist/docs-raw/guides/inspection-bundles.md +2 -1
- package/dist/docs-raw/guides/joint-design.md +24 -0
- package/dist/docs-raw/guides/positioning.md +13 -3
- package/dist/docs-raw/legal/privacy.md +63 -0
- package/dist/docs-raw/legal/software-license.md +55 -0
- package/dist/docs-raw/legal/terms.md +87 -0
- package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +3 -3
- package/dist/docs-raw/skills/forgecad-blockout-model.md +1 -1
- package/dist/docs-raw/skills/forgecad-component-model.md +11 -2
- package/dist/docs-raw/skills/forgecad-high-level-spec.md +1 -1
- package/dist/docs-raw/skills/forgecad-image-replicator.md +8 -8
- package/dist/docs-raw/skills/forgecad-lld.md +1 -1
- package/dist/docs-raw/skills/forgecad-make-a-model.md +4 -4
- package/dist/docs-raw/skills/forgecad-model-grader.md +2 -2
- package/dist/docs-raw/skills/forgecad-prepare-prompt.md +2 -2
- package/dist/docs-raw/skills/forgecad-project.md +1 -1
- package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +4 -4
- package/dist/docs-raw/skills/forgecad-render-inspect.md +4 -2
- package/dist/docs-raw/skills/forgecad-visual-spec.md +1 -1
- package/dist/docs-raw/skills/forgecad.md +4 -3
- package/dist/index.html +40 -12
- package/dist/llms.txt +8 -0
- package/dist/site.webmanifest +1 -1
- package/dist/sitemap.xml +49 -13
- package/dist-cli/{check-compiler-LOXCPEOI.js → check-compiler-SDX5QIXI.js} +1 -2
- package/dist-cli/{check-query-propagation-BAKNVWXR.js → check-query-propagation-EAYEFT77.js} +1 -2
- package/dist-cli/{chunk-RY43WF46.js → chunk-N4O47JLF.js} +13772 -9938
- package/dist-cli/forgecad.js +2387 -899
- package/dist-cli/{forgecad_geometry-GYVNKPIE.js → forgecad_geometry-QOQIIP53.js} +42 -1
- package/dist-cli/forgecad_geometry_bg.wasm +0 -0
- package/dist-cli/{solver-46FFSK2U.js → solver-OK4HECRH.js} +0 -1
- package/dist-skill/CONTEXT.md +1120 -724
- package/dist-skill/SKILL.md +3 -2
- package/dist-skill/docs/API/core/concepts.md +64 -1
- package/dist-skill/docs/CLI.md +71 -21
- package/dist-skill/docs/generated/assembly.md +277 -229
- package/dist-skill/docs/generated/core.md +283 -6
- package/dist-skill/docs/generated/curves.md +272 -362
- package/dist-skill/docs/generated/lib.md +7 -1
- package/dist-skill/docs/generated/output.md +19 -4
- package/dist-skill/docs/generated/runtime-names.md +41 -0
- package/dist-skill/docs/generated/sdf.md +31 -0
- package/dist-skill/docs/generated/sheet-metal.md +9 -0
- package/dist-skill/docs/generated/sketch.md +44 -2
- package/dist-skill/docs/generated/viewport.md +5 -90
- package/dist-skill/docs/guides/coordinate-system.md +20 -16
- package/dist-skill/docs/guides/geometry-conventions.md +2 -2
- package/dist-skill/docs/guides/inspection-bundles.md +2 -1
- package/dist-skill/docs/guides/joint-design.md +24 -0
- package/dist-skill/docs/guides/positioning.md +13 -3
- package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +2 -2
- package/dist-skill/library/forgecad-component-model/SKILL.md +10 -1
- package/dist-skill/library/forgecad-image-replicator/SKILL.md +6 -6
- package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.py +166 -0
- package/dist-skill/library/forgecad-make-a-model/SKILL.md +3 -3
- package/dist-skill/library/forgecad-model-grader/SKILL.md +1 -1
- package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +1 -1
- package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +3 -3
- package/dist-skill/library/forgecad-render-inspect/SKILL.md +3 -1
- package/examples/api/assembly-kinematics-foundation.forge.js +65 -0
- package/examples/api/assembly-kinematics-four-bar.forge.js +115 -0
- package/examples/api/assembly-kinematics-limb.forge.js +116 -0
- package/examples/api/connector-frame-rig-chain.forge.js +102 -0
- package/examples/api/exact-sheet-shell-assembly.forge.js +0 -2
- package/examples/api/exact-surface-studio.forge.js +6 -8
- package/examples/api/helix-basics.forge.js +6 -6
- package/examples/api/lean-foundations/README.md +12 -0
- package/examples/api/lean-foundations/curve-blend-exact.forge.js +22 -0
- package/examples/api/lean-foundations/curve-fit-interpolation.forge.js +18 -0
- package/examples/api/lean-foundations/curve-helix-canonicalization.forge.js +27 -0
- package/examples/api/lean-foundations/curve-route-canonicalization.forge.js +16 -0
- package/examples/api/lean-foundations/curve-trim-reverse.forge.js +24 -0
- package/examples/api/lean-foundations/exact-curve-arc.forge.js +36 -0
- package/examples/api/mixed-edge-finishes-proof.forge.js +8 -11
- package/examples/api/route3d-elbow.forge.js +68 -0
- package/examples/api/transition-curves.forge.js +44 -15
- package/examples/api/y-blend-corner-showcase.forge.js +0 -2
- package/examples/generative/coral-vase.forge.js +1 -1
- package/examples/nurbs-tube.forge.js +1 -1
- package/package.json +14 -18
- package/dist/assets/EditorApp-CP9Za6tm.js +0 -13630
- package/dist/assets/app-CsHnaBWt.css +0 -1789
- package/dist/docs-raw/API/README.md +0 -16
- package/dist/docs-raw/API/core/concepts.md +0 -118
- package/dist/docs-raw/INDEX.md +0 -138
- package/dist/docs-raw/RELEASING.md +0 -87
- package/dist/docs-raw/agent-native-api.md +0 -27
- package/dist/docs-raw/beta-deployment.md +0 -304
- package/dist/docs-raw/beta-operations.md +0 -325
- package/dist/docs-raw/blueprint-first.md +0 -145
- package/dist/docs-raw/cli-monetization.md +0 -112
- package/dist/docs-raw/coding-best-practices.md +0 -120
- package/dist/docs-raw/coding.md +0 -340
- package/dist/docs-raw/deployment.md +0 -374
- package/dist/docs-raw/guides/skill-maintenance.md +0 -161
- package/dist/docs-raw/guides/surface-members.md +0 -82
- package/dist/docs-raw/internals/backend-vocabulary.md +0 -35
- package/dist/docs-raw/internals/compiler.md +0 -307
- package/dist/docs-raw/internals/constraint-solver-quality.md +0 -161
- package/dist/docs-raw/internals/constraint-solver.md +0 -176
- package/dist/docs-raw/internals/shape-from-slices.md +0 -152
- package/dist/docs-raw/internals/sketch-2d-pipeline.md +0 -108
- package/dist/docs-raw/platform/admin.md +0 -45
- package/dist/docs-raw/platform/architecture.md +0 -82
- package/dist/docs-raw/platform/auth.md +0 -139
- package/dist/docs-raw/platform/email.md +0 -67
- package/dist/docs-raw/platform/google-oauth-setup.md +0 -88
- package/dist/docs-raw/platform/observability.md +0 -197
- package/dist/docs-raw/platform/projects.md +0 -111
- package/dist/docs-raw/platform/sharing.md +0 -90
- package/dist/docs-raw/product/README.md +0 -39
- package/dist/docs-raw/product/api-as-product-language.md +0 -13
- package/dist/docs-raw/product/business-model.md +0 -15
- package/dist/docs-raw/product/competitive-positioning.md +0 -17
- package/dist/docs-raw/product/creative-manufacturing.md +0 -15
- package/dist/docs-raw/product/founder-story.md +0 -11
- package/dist/docs-raw/product/manufacturing-workflows.md +0 -15
- package/dist/docs-raw/product/onboarding-first-experience.md +0 -256
- package/dist/docs-raw/product/product-loop.md +0 -17
- package/dist/docs-raw/product/strategic-decisions.md +0 -22
- package/dist/docs-raw/product/user-outreach-email-templates.md +0 -161
- package/dist/docs-raw/product/user-segments.md +0 -15
- package/dist/docs-raw/product/vision.md +0 -26
- package/dist/docs-raw/rl-environments.md +0 -508
- package/dist/docs-raw/runbook.md +0 -611
- package/dist-cli/check-compiler-LOXCPEOI.js.map +0 -1
- package/dist-cli/check-query-propagation-BAKNVWXR.js.map +0 -1
- package/dist-cli/chunk-RY43WF46.js.map +0 -1
- package/dist-cli/forgecad.js.map +0 -1
- package/dist-cli/forgecad_geometry-GYVNKPIE.js.map +0 -1
- package/dist-cli/solver-46FFSK2U.js.map +0 -1
- package/dist-skill/SKILL-dev.md +0 -145
- package/dist-skill/docs-dev/API/core/concepts.md +0 -118
- package/dist-skill/docs-dev/CLI.md +0 -647
- package/dist-skill/docs-dev/agent-native-api.md +0 -27
- package/dist-skill/docs-dev/blueprint-first.md +0 -145
- package/dist-skill/docs-dev/coding-best-practices.md +0 -120
- package/dist-skill/docs-dev/coding.md +0 -340
- package/dist-skill/docs-dev/component-model.md +0 -164
- package/dist-skill/docs-dev/generated/assembly.md +0 -794
- package/dist-skill/docs-dev/generated/core.md +0 -2117
- package/dist-skill/docs-dev/generated/curves.md +0 -2583
- package/dist-skill/docs-dev/generated/lib.md +0 -169
- package/dist-skill/docs-dev/generated/output.md +0 -247
- package/dist-skill/docs-dev/generated/sdf.md +0 -446
- package/dist-skill/docs-dev/generated/sheet-metal.md +0 -504
- package/dist-skill/docs-dev/generated/sketch.md +0 -1811
- package/dist-skill/docs-dev/generated/viewport.md +0 -585
- package/dist-skill/docs-dev/generated/wood.md +0 -108
- package/dist-skill/docs-dev/guides/coordinate-system.md +0 -46
- package/dist-skill/docs-dev/guides/geometry-conventions.md +0 -52
- package/dist-skill/docs-dev/guides/inspection-bundles.md +0 -485
- package/dist-skill/docs-dev/guides/joint-design.md +0 -78
- package/dist-skill/docs-dev/guides/modeling-recipes.md +0 -78
- package/dist-skill/docs-dev/guides/positioning.md +0 -161
- package/dist-skill/docs-dev/guides/skill-maintenance.md +0 -161
- package/dist-skill/docs-dev/internals/backend-vocabulary.md +0 -35
- package/dist-skill/docs-dev/internals/compiler.md +0 -307
- package/dist-skill/docs-dev/internals/constraint-solver-quality.md +0 -161
- package/dist-skill/docs-dev/internals/constraint-solver.md +0 -176
- package/dist-skill/docs-dev/internals/sketch-2d-pipeline.md +0 -108
- package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.mjs +0 -289
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
# First Account Onboarding Experience
|
|
2
|
-
|
|
3
|
-
This is a tactical product doc. For the product-first theme map, start with [Product Docs](README.md).
|
|
4
|
-
|
|
5
|
-
This is the source of truth for the first experience after a person creates a ForgeCAD account.
|
|
6
|
-
|
|
7
|
-
Any code, docs copy, starter files, CLI guidance, analytics, or launch issue that changes first-run behavior should start by updating this document. The goal is to keep the experience coherent instead of letting it drift across auth, project creation, examples, docs, and CLI surfaces.
|
|
8
|
-
|
|
9
|
-
## Summary
|
|
10
|
-
|
|
11
|
-
The first account experience should not drop a new user into an empty editor. A new user should land in a small "Start Here" project with three curated files, a visible docs Welcome page, and a clear path from browser exploration to CLI-based local work.
|
|
12
|
-
|
|
13
|
-
The recommended first-run path is:
|
|
14
|
-
|
|
15
|
-
1. Account is created.
|
|
16
|
-
2. User opens `/app`.
|
|
17
|
-
3. If the account has no projects, ForgeCAD creates a private `Start Here` project from the starter template.
|
|
18
|
-
4. The editor opens `00-start-here.forge.js`.
|
|
19
|
-
5. The file itself teaches the first model loop: edit one parameter, run, see geometry change.
|
|
20
|
-
6. The docs nav exposes `/docs/welcome` as the public orientation page.
|
|
21
|
-
7. The Welcome page points to the CLI loop and API docs without making the user read the whole docs set first.
|
|
22
|
-
|
|
23
|
-
## Decision
|
|
24
|
-
|
|
25
|
-
Use a curated starter project as the first account artifact. Do not open the full examples project by default for hosted accounts.
|
|
26
|
-
|
|
27
|
-
The full examples project is too large for first contact. It is useful once the person already knows what kind of thing they are looking for. A first account needs something smaller: one runnable file, one slightly richer parametric file, and one assembly file.
|
|
28
|
-
|
|
29
|
-
## User Profiles
|
|
30
|
-
|
|
31
|
-
### Alex - AI-First Maker
|
|
32
|
-
|
|
33
|
-
**Background:** Uses Codex or Claude Code daily, knows JavaScript well enough to edit generated code, owns a 3D printer.
|
|
34
|
-
|
|
35
|
-
**What Alex Wants:**
|
|
36
|
-
|
|
37
|
-
- Get from idea to printable geometry quickly.
|
|
38
|
-
- Ask an AI agent to change a model and validate it through the CLI.
|
|
39
|
-
- Understand which files matter without reading a large reference.
|
|
40
|
-
- Export STL or images from the terminal.
|
|
41
|
-
|
|
42
|
-
**Ideal Flow:**
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
npm install -g forgecad
|
|
46
|
-
forgecad login
|
|
47
|
-
forgecad project clone start-here
|
|
48
|
-
cd start-here
|
|
49
|
-
forgecad run 00-start-here.forge.js
|
|
50
|
-
forgecad studio .
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
For GitHub/Google accounts, `forgecad login` should offer API-token login because there is no CLI password to submit.
|
|
54
|
-
|
|
55
|
-
**Current Friction:**
|
|
56
|
-
|
|
57
|
-
- A new account sees a blank or near-empty editor state.
|
|
58
|
-
- The CLI is not part of the first-run path.
|
|
59
|
-
- The AI skill exists but is not connected to the account onboarding story.
|
|
60
|
-
|
|
61
|
-
### Maya - Mechanical Designer Trying Code-CAD
|
|
62
|
-
|
|
63
|
-
**Background:** Comfortable with CAD concepts, not necessarily with code-first modeling. May use Onshape, Fusion, or SolidWorks.
|
|
64
|
-
|
|
65
|
-
**What Maya Wants:**
|
|
66
|
-
|
|
67
|
-
- See a real parametric model immediately.
|
|
68
|
-
- Discover that sliders are parameters, not magic UI state.
|
|
69
|
-
- Find the coordinate system and modeling conventions when she needs them.
|
|
70
|
-
- Avoid feeling that she must read API docs before doing anything.
|
|
71
|
-
|
|
72
|
-
**Ideal Flow:**
|
|
73
|
-
|
|
74
|
-
```text
|
|
75
|
-
Sign up -> Start Here project opens -> Width slider is visible -> change it -> model updates -> open Welcome docs for "what next?"
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
**Current Friction:**
|
|
79
|
-
|
|
80
|
-
- The editor has powerful panels, but the first screen does not explain the working loop.
|
|
81
|
-
- The file list does not provide a progression.
|
|
82
|
-
- API docs are reference-first rather than first-session-first.
|
|
83
|
-
|
|
84
|
-
### Sam - Software Engineer Evaluating ForgeCAD
|
|
85
|
-
|
|
86
|
-
**Background:** Strong TypeScript/JavaScript developer, maybe less CAD knowledge. Wants to know if ForgeCAD fits automation and CI.
|
|
87
|
-
|
|
88
|
-
**What Sam Wants:**
|
|
89
|
-
|
|
90
|
-
- Confirm files are plain `.forge.js`.
|
|
91
|
-
- Learn the local workflow and sync model.
|
|
92
|
-
- Know how web projects relate to CLI projects.
|
|
93
|
-
- See commands that can be pasted into a terminal.
|
|
94
|
-
|
|
95
|
-
**Ideal Flow:**
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
forgecad project clone start-here
|
|
99
|
-
forgecad run 01-parametric-bracket.forge.js
|
|
100
|
-
forgecad render 3d 01-parametric-bracket.forge.js
|
|
101
|
-
forgecad project push
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
**Current Friction:**
|
|
105
|
-
|
|
106
|
-
- Hosted app and CLI feel like separate products.
|
|
107
|
-
- GitHub/Google accounts need API tokens for CLI login, but that reason is not in the first-run path.
|
|
108
|
-
- Project clone/push/pull is documented, but not introduced at the moment of motivation.
|
|
109
|
-
|
|
110
|
-
### Priya - Robotics / Assembly Explorer
|
|
111
|
-
|
|
112
|
-
**Background:** Interested in mechanisms, robotics, SDF/URDF, and multi-part assemblies. She needs a signal that ForgeCAD is more than boxes.
|
|
113
|
-
|
|
114
|
-
**What Priya Wants:**
|
|
115
|
-
|
|
116
|
-
- See multiple files or at least multiple model styles quickly.
|
|
117
|
-
- Discover assemblies, joints/connectors, and exports.
|
|
118
|
-
- Understand where the larger examples live without being dropped into all of them.
|
|
119
|
-
|
|
120
|
-
**Ideal Flow:**
|
|
121
|
-
|
|
122
|
-
```text
|
|
123
|
-
Open Start Here -> inspect assembly starter -> follow docs to Assembly -> later browse examples/mechanical
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**Current Friction:**
|
|
127
|
-
|
|
128
|
-
- The first account project does not show the product's range.
|
|
129
|
-
- The examples corpus is broad, but not curated into a first-session sequence.
|
|
130
|
-
|
|
131
|
-
## Design Principles
|
|
132
|
-
|
|
133
|
-
1. **The first screen should contain intent.** A code box with no project story makes ForgeCAD feel like a compiler, not a tool.
|
|
134
|
-
2. **Curate before catalog.** First-run should show three chosen files, not every example.
|
|
135
|
-
3. **Teach the loop, not the whole product.** The first session is edit -> run -> inspect -> move local.
|
|
136
|
-
4. **The CLI is the serious workflow.** Hosted onboarding should point users toward local files, agents, validation, rendering, and project sync.
|
|
137
|
-
5. **Docs should be layered.** Welcome first, CLI second, API reference only when the user has a concrete modeling question.
|
|
138
|
-
6. **Do not point first-run users at package internals.** If examples are part of onboarding, they need a hosted docs/gallery surface, public repo link, or seeded project file the user can actually open.
|
|
139
|
-
|
|
140
|
-
## Target Experience
|
|
141
|
-
|
|
142
|
-
### Browser First Run
|
|
143
|
-
|
|
144
|
-
When a hosted user with zero projects opens `/app`, ForgeCAD creates:
|
|
145
|
-
|
|
146
|
-
```text
|
|
147
|
-
Start Here/
|
|
148
|
-
00-start-here.forge.js
|
|
149
|
-
01-parametric-bracket.forge.js
|
|
150
|
-
02-assembly-basics.forge.js
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
The first file is active. It should be short, runnable, and friendly inside the code itself. The user can change dimensions and immediately see the model update.
|
|
154
|
-
|
|
155
|
-
### Docs Welcome Page
|
|
156
|
-
|
|
157
|
-
`/docs/welcome` is the public first-session docs page. It should answer:
|
|
158
|
-
|
|
159
|
-
- What am I looking at?
|
|
160
|
-
- What should I try first?
|
|
161
|
-
- How do I move this project to the CLI?
|
|
162
|
-
- How do I use an AI coding agent with ForgeCAD?
|
|
163
|
-
- Where do I go after the first 10 minutes?
|
|
164
|
-
|
|
165
|
-
### CLI Bridge
|
|
166
|
-
|
|
167
|
-
The Welcome page and starter file both point to this path:
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
npm install -g forgecad
|
|
171
|
-
forgecad login
|
|
172
|
-
forgecad project clone start-here
|
|
173
|
-
cd start-here
|
|
174
|
-
forgecad studio .
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
For GitHub/Google accounts, choose API token during `forgecad login`. API tokens are available from Settings > API Tokens.
|
|
178
|
-
|
|
179
|
-
## Friction to Experiment Map
|
|
180
|
-
|
|
181
|
-
| Friction | Profiles affected | Experiment | Priority |
|
|
182
|
-
|---|---|---|---|
|
|
183
|
-
| New account opens an empty project | Alex, Maya, Sam, Priya | Create `Start Here` starter project when an account has zero projects | P0 |
|
|
184
|
-
| Docs are reference-first | Alex, Maya, Sam | Add `/docs/welcome` before API sections | P0 |
|
|
185
|
-
| CLI is not introduced at the moment of need | Alex, Sam | Put clone/studio/run commands in starter file and Welcome page | P0 |
|
|
186
|
-
| Full examples are too broad for first contact | Maya, Priya | Curate three starter files instead of opening examples project | P0 |
|
|
187
|
-
| AI-agent workflow is disconnected | Alex, Sam | Welcome page points to `forgecad skill install` and CLI validation loop | P1 |
|
|
188
|
-
| No first-run instrumentation | All | Add analytics/audit event for starter project creation and first CLI token creation | P1 |
|
|
189
|
-
|
|
190
|
-
## Implementation Map
|
|
191
|
-
|
|
192
|
-
### Source-of-Truth Surfaces
|
|
193
|
-
|
|
194
|
-
| Surface | Role | Owner |
|
|
195
|
-
|---|---|---|
|
|
196
|
-
| `docs/permanent/product/onboarding-first-experience.md` | Product source of truth | Product/engineering |
|
|
197
|
-
| `docs/permanent/welcome.md` | User-facing Welcome docs page | Product/engineering |
|
|
198
|
-
| `server/onboarding/starterProject.ts` | Starter project file template | Engineering |
|
|
199
|
-
| `src/pages/DocsPage.tsx` | Docs navigation and route registration | Engineering |
|
|
200
|
-
| `src/App.tsx` and `src/fs/HostedStudioProvider.ts` | Zero-project redirect/create behavior | Engineering |
|
|
201
|
-
|
|
202
|
-
### First Implementation
|
|
203
|
-
|
|
204
|
-
1. Add a `starter` project template option to `POST /api/projects`.
|
|
205
|
-
2. Keep normal "New Project" behavior blank by default.
|
|
206
|
-
3. Use `template: "starter"` only when the hosted app detects a user with zero projects.
|
|
207
|
-
4. Add starter files server-side so the first project works even if the browser reloads immediately.
|
|
208
|
-
5. Add `/docs/welcome` to the docs nav and search index.
|
|
209
|
-
|
|
210
|
-
### Local Preview Note
|
|
211
|
-
|
|
212
|
-
`npm run dev:studio` starts the hosted frontend only. It can show `/docs/welcome`, but it cannot create the hosted `Start Here` project unless the Fastify backend and Postgres are also running. To test starter project creation locally, run the hosted backend stack and open `/app` with a fresh account or empty project list.
|
|
213
|
-
|
|
214
|
-
### Later Improvements
|
|
215
|
-
|
|
216
|
-
- Add a first-run modal only if the starter project and docs page are not enough.
|
|
217
|
-
- Add a hosted examples gallery later, separate from first-run. Until then, link to public repo examples instead of npm package paths.
|
|
218
|
-
- Add "Clone locally" and "Create API token" affordances in the editor toolbar once the base path is proven.
|
|
219
|
-
- Add first-run metrics: starter project created, first file opened, first save, first CLI token created, first project clone.
|
|
220
|
-
|
|
221
|
-
## Non-Goals
|
|
222
|
-
|
|
223
|
-
- Do not design a full tutorials system yet.
|
|
224
|
-
- Do not open the entire examples project for new hosted accounts.
|
|
225
|
-
- Do not add gamified checklists or badges.
|
|
226
|
-
- Do not require the CLI before the browser gives immediate value.
|
|
227
|
-
- Do not restore implicit local studio examples; `forgecad studio ./examples` should be explicit and `forgecad studio` without a project path should fail.
|
|
228
|
-
|
|
229
|
-
## Risks and Mitigations
|
|
230
|
-
|
|
231
|
-
| Risk | Mitigation |
|
|
232
|
-
|---|---|
|
|
233
|
-
| Starter files become stale as APIs evolve | Treat starter files like examples and run them through smoke checks. |
|
|
234
|
-
| Users think the browser is the whole product | Put CLI path in the starter file and Welcome page. |
|
|
235
|
-
| Users who want blank projects dislike seeded files | Only seed the first zero-project account path. Manual New Project stays blank. |
|
|
236
|
-
| Docs page becomes too broad | Keep Welcome short and route API details to existing docs sections. |
|
|
237
|
-
| Starter project creation fails | Fall back to the existing project path, but log/audit failures once observability is added. |
|
|
238
|
-
|
|
239
|
-
## Validation
|
|
240
|
-
|
|
241
|
-
The first implementation is good enough when:
|
|
242
|
-
|
|
243
|
-
- A new hosted account with zero projects opens `/app` and lands in `Start Here`.
|
|
244
|
-
- The project contains exactly the curated starter files.
|
|
245
|
-
- The active file is `00-start-here.forge.js`.
|
|
246
|
-
- `/docs/welcome` appears before API Reference in the docs sidebar and index.
|
|
247
|
-
- The Welcome page includes the CLI login/token/project clone path.
|
|
248
|
-
- The Welcome page does not tell users to browse npm package internals for examples.
|
|
249
|
-
- Existing manual project creation still creates blank projects.
|
|
250
|
-
|
|
251
|
-
## Experiment Log
|
|
252
|
-
|
|
253
|
-
| Date | Change | Result |
|
|
254
|
-
|---|---|---|
|
|
255
|
-
| 2026-04-29 | Created this source-of-truth document and planned the P0 first-run path. | Done |
|
|
256
|
-
| 2026-04-29 | Added `/docs/welcome` and wired zero-project hosted accounts to a server-side `Start Here` starter template. | Done |
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Product Loop
|
|
2
|
-
|
|
3
|
-
ForgeCAD's core product loop is:
|
|
4
|
-
|
|
5
|
-
```text
|
|
6
|
-
user goal -> AI edits .forge.js -> run -> render or inspect -> fix -> sweep params -> export or publish
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
This loop is the product. The editor, CLI, docs, hosted projects, skills, examples, exports, and inspection bundles should all make this loop faster and more trustworthy.
|
|
10
|
-
|
|
11
|
-
The loop matters because AI will be wrong. The product promise is not that an agent invents perfect CAD on the first try. The promise is that the agent works inside a system that catches syntax errors, missing imports, invalid geometry, bad parameter ranges, collisions, thin walls, broken assembly relationships, and export failures.
|
|
12
|
-
|
|
13
|
-
For a normal user, this turns CAD from expert hand work into guided iteration. They can describe the object, inspect a render, change a parameter, reject an awkward result, and ask for a fix. For a technical user, the loop is also automation-friendly: files are plain source, outputs are deterministic enough to compare, and checks can run from the terminal.
|
|
14
|
-
|
|
15
|
-
Every product investment should be measured against this loop. A feature that looks impressive but cannot be validated, edited, parameterized, exported, or explained by the agent is weaker than a boring feature that closes the loop for a real manufacturing job.
|
|
16
|
-
|
|
17
|
-
The strongest future product surface will combine natural language, editable code, visual evidence, manufacturing constraints, and project history. The user should feel that the AI is doing the hard modeling work, while ForgeCAD is keeping the work understandable and grounded.
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Strategic Decisions
|
|
2
|
-
|
|
3
|
-
ForgeCAD product decisions should start from the same question: does this make AI-authored physical design more reliable, useful, and commercially valuable?
|
|
4
|
-
|
|
5
|
-
A strong product bet usually has five properties. It serves a clear user segment. It gives the AI better domain vocabulary. It creates validation evidence. It connects to a real output route. It strengthens a business path such as Pro usage, embedded commerce, OEM partnership, or enterprise pilot work.
|
|
6
|
-
|
|
7
|
-
This means not every geometry feature deserves product priority. A kernel capability is not automatically a product feature. A product feature exists when it helps a user get a job done, helps an agent express intent, or helps the business own a valuable workflow.
|
|
8
|
-
|
|
9
|
-
For example, CNC primitives should be judged by the manufacturing workflow they unlock. If they only add shapes, they are weak. If they let an agent express pockets, contours, drilling, stock, tool access, material constraints, and validation around a real CNC route, they may be strategically important.
|
|
10
|
-
|
|
11
|
-
Similarly, better API docs are useful but are not always the product answer. If the same workaround appears repeatedly, the deeper issue may be missing product vocabulary. Documentation should make the product easier to use; it should not hide the absence of a first-class concept.
|
|
12
|
-
|
|
13
|
-
Use this filter for new ideas:
|
|
14
|
-
|
|
15
|
-
- Who is the first user who will care?
|
|
16
|
-
- What object or workflow becomes possible that was hard before?
|
|
17
|
-
- What does the AI no longer have to improvise?
|
|
18
|
-
- What can ForgeCAD validate or inspect?
|
|
19
|
-
- What output, partner, or revenue path does it strengthen?
|
|
20
|
-
- What would make this feature obviously successful after one month?
|
|
21
|
-
|
|
22
|
-
If those answers are weak, keep the idea as research. If they are strong, the product likely has a real direction to explore.
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
# User Outreach Email Templates
|
|
2
|
-
|
|
3
|
-
This is a tactical product doc. For the product-first theme map, start with [Product Docs](README.md).
|
|
4
|
-
|
|
5
|
-
Use these templates for personal outreach to ForgeCAD users. They are intentionally written in a founder/operator voice: warm, specific, curious, and useful. The goal is to learn from real projects, make users feel supported, and open the door to deeper onboarding when it makes sense.
|
|
6
|
-
|
|
7
|
-
## Shared Guidance
|
|
8
|
-
|
|
9
|
-
- Personalize the first sentence with one real signal when possible: plan tier, recent activity, project name, export type, team domain, or signup source.
|
|
10
|
-
- Keep the ask small. A 20-minute chat is easier to accept than a vague "feedback call."
|
|
11
|
-
- Do not make the user prove they are important. The default posture is: if they are using ForgeCAD, their workflow matters.
|
|
12
|
-
- For Pro users, make support and team onboarding explicit. They already crossed the trust line.
|
|
13
|
-
- For active free users, lead with curiosity. Mention Pro only as a practical fit for commercial work, not as the reason for the email.
|
|
14
|
-
|
|
15
|
-
## Pro User Templates
|
|
16
|
-
|
|
17
|
-
### 1. Welcome And Use Case Discovery
|
|
18
|
-
|
|
19
|
-
**Subject:** Welcome to ForgeCAD Pro
|
|
20
|
-
|
|
21
|
-
Hi {{first_name}},
|
|
22
|
-
|
|
23
|
-
I saw that you upgraded to ForgeCAD Pro. Thank you for trusting us with your work.
|
|
24
|
-
|
|
25
|
-
I wanted to reach out personally because we are still early enough that real professional use cases can directly shape the product. If you are using ForgeCAD for client work, a product, internal tooling, robotics, 3D printing, fixtures, or anything else serious, I would love to understand what you are building and where the tool should become sharper for you.
|
|
26
|
-
|
|
27
|
-
Would you be open to a 20-minute call this week or next? I can help with onboarding, answer workflow questions, and learn what would make ForgeCAD more useful for your day-to-day work.
|
|
28
|
-
|
|
29
|
-
Best,
|
|
30
|
-
|
|
31
|
-
{{sender_name}}
|
|
32
|
-
|
|
33
|
-
### 2. Team Onboarding Exploration
|
|
34
|
-
|
|
35
|
-
**Subject:** Helping your team get further with ForgeCAD
|
|
36
|
-
|
|
37
|
-
Hi {{first_name}},
|
|
38
|
-
|
|
39
|
-
Thanks again for using ForgeCAD Pro. I wanted to check whether you are using it mostly on your own, or whether there are other people on your team who might need to work with the same models, project files, exports, or review flow.
|
|
40
|
-
|
|
41
|
-
If there is a team workflow behind your ForgeCAD use, I would be happy to help you think through the setup: local project structure, CLI usage, shared browser projects, AI-assisted modeling, exports, and any support expectations around commercial work.
|
|
42
|
-
|
|
43
|
-
Would it be useful to set up a short onboarding call? Even if you are not ready to add more people yet, it would help us understand what serious team adoption should feel like.
|
|
44
|
-
|
|
45
|
-
Best,
|
|
46
|
-
|
|
47
|
-
{{sender_name}}
|
|
48
|
-
|
|
49
|
-
### 3. Pro Check-In After Usage
|
|
50
|
-
|
|
51
|
-
**Subject:** How is ForgeCAD Pro fitting into your work?
|
|
52
|
-
|
|
53
|
-
Hi {{first_name}},
|
|
54
|
-
|
|
55
|
-
I wanted to check in now that you have had some time with ForgeCAD Pro.
|
|
56
|
-
|
|
57
|
-
The main thing I would love to understand is: what job are you trying to get done with ForgeCAD, and where does the product currently help the most or slow you down?
|
|
58
|
-
|
|
59
|
-
If you have a real project in progress, I am happy to look at the workflow with you. A short call would help us support you better, and it would also help us decide which Pro and team features should come next.
|
|
60
|
-
|
|
61
|
-
Best,
|
|
62
|
-
|
|
63
|
-
{{sender_name}}
|
|
64
|
-
|
|
65
|
-
## Active User Templates
|
|
66
|
-
|
|
67
|
-
### 1. Curious Product Discovery
|
|
68
|
-
|
|
69
|
-
**Subject:** Curious what you are building with ForgeCAD
|
|
70
|
-
|
|
71
|
-
Hi {{first_name}},
|
|
72
|
-
|
|
73
|
-
I noticed you have been active in ForgeCAD recently, and I wanted to reach out personally.
|
|
74
|
-
|
|
75
|
-
We are trying to understand what people are actually building: quick 3D-printable parts, mechanical assemblies, robotics ideas, fixtures, generated geometry, design automation, or something completely different. The product gets much better when we can see the real use cases behind the activity.
|
|
76
|
-
|
|
77
|
-
Would you be open to a 20-minute chat? I would mostly like to learn what you are working on, what feels promising, and what currently gets in your way.
|
|
78
|
-
|
|
79
|
-
Best,
|
|
80
|
-
|
|
81
|
-
{{sender_name}}
|
|
82
|
-
|
|
83
|
-
### 2. Active User With Commercial Hint
|
|
84
|
-
|
|
85
|
-
**Subject:** Learning from your ForgeCAD workflow
|
|
86
|
-
|
|
87
|
-
Hi {{first_name}},
|
|
88
|
-
|
|
89
|
-
I saw you have been using ForgeCAD and wanted to ask what kind of work you are exploring with it.
|
|
90
|
-
|
|
91
|
-
If this is personal, learning, open-source, or experimental work, I would simply love to understand the project and what would make ForgeCAD more enjoyable or capable for you. If you are using it commercially, ForgeCAD Pro may be the right fit, and I am happy to explain that too, but that is not the main reason I am writing.
|
|
92
|
-
|
|
93
|
-
The main reason is that active users teach us where the product is strong, where it is confusing, and what workflows deserve more attention.
|
|
94
|
-
|
|
95
|
-
Would you be open to a quick call?
|
|
96
|
-
|
|
97
|
-
Best,
|
|
98
|
-
|
|
99
|
-
{{sender_name}}
|
|
100
|
-
|
|
101
|
-
### 3. High-Activity User Check-In
|
|
102
|
-
|
|
103
|
-
**Subject:** Quick ForgeCAD question
|
|
104
|
-
|
|
105
|
-
Hi {{first_name}},
|
|
106
|
-
|
|
107
|
-
I noticed you have spent real time with ForgeCAD, so I wanted to ask one direct question:
|
|
108
|
-
|
|
109
|
-
What are you trying to make with it?
|
|
110
|
-
|
|
111
|
-
We are early, and this is the stage where understanding real projects matters more than polished surveys. If ForgeCAD is helping, I would like to know why. If something is awkward, missing, or confusing, I would like to know that even more.
|
|
112
|
-
|
|
113
|
-
Would you be open to a short chat this week or next?
|
|
114
|
-
|
|
115
|
-
Best,
|
|
116
|
-
|
|
117
|
-
{{sender_name}}
|
|
118
|
-
|
|
119
|
-
## Follow-Up Templates
|
|
120
|
-
|
|
121
|
-
### 1. Gentle Follow-Up
|
|
122
|
-
|
|
123
|
-
**Subject:** Re: {{previous_subject}}
|
|
124
|
-
|
|
125
|
-
Hi {{first_name}},
|
|
126
|
-
|
|
127
|
-
Just wanted to follow up once in case this got buried.
|
|
128
|
-
|
|
129
|
-
I would still be very interested to hear what you are using ForgeCAD for. Even a two-sentence reply would be useful if a call is too much right now.
|
|
130
|
-
|
|
131
|
-
Best,
|
|
132
|
-
|
|
133
|
-
{{sender_name}}
|
|
134
|
-
|
|
135
|
-
### 2. Concrete Reply Prompt
|
|
136
|
-
|
|
137
|
-
**Subject:** Re: {{previous_subject}}
|
|
138
|
-
|
|
139
|
-
Hi {{first_name}},
|
|
140
|
-
|
|
141
|
-
One quick follow-up. If a call is not convenient, could you reply with whichever of these is closest?
|
|
142
|
-
|
|
143
|
-
1. I am using ForgeCAD for personal projects or learning.
|
|
144
|
-
2. I am evaluating it for commercial work.
|
|
145
|
-
3. I am trying to use it with a team.
|
|
146
|
-
4. I am stuck or missing something important.
|
|
147
|
-
|
|
148
|
-
That alone would help us understand how to support you better.
|
|
149
|
-
|
|
150
|
-
Best,
|
|
151
|
-
|
|
152
|
-
{{sender_name}}
|
|
153
|
-
|
|
154
|
-
## Placeholder Checklist
|
|
155
|
-
|
|
156
|
-
| Placeholder | Meaning |
|
|
157
|
-
|---|---|
|
|
158
|
-
| `{{first_name}}` | User first name when known, otherwise use `there` |
|
|
159
|
-
| `{{sender_name}}` | Founder/operator name |
|
|
160
|
-
| `{{previous_subject}}` | Subject line from the first outreach email |
|
|
161
|
-
| `{{project_signal}}` | Optional project, command, export, or activity signal for manual personalization |
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# User Segments
|
|
2
|
-
|
|
3
|
-
ForgeCAD has several possible audiences. They should not be mixed too early.
|
|
4
|
-
|
|
5
|
-
The first wedge is the AI-first maker. This user owns or can access a 3D printer, laser cutter, CNC service, or online manufacturing service. They may know a little JavaScript, but they do not want to become a professional CAD operator. They want an agent to help make useful objects and they want enough control to trust the result.
|
|
6
|
-
|
|
7
|
-
The adjacent daily user is the creative manufacturing user. They may not care about code at all. They want a custom adapter, shelf part, enclosure, stand, organizer, jig, toy, lamp, or furniture fitting. For this person, ForgeCAD should feel like a practical object generator with editable parameters, not a programming environment.
|
|
8
|
-
|
|
9
|
-
The technical evaluator is a software engineer, automation engineer, robotics builder, or mechanical designer exploring whether code-first CAD fits a workflow. This user cares about repeatability, versioning, export quality, CLI checks, and whether the product can fit into a larger system.
|
|
10
|
-
|
|
11
|
-
The partner user is a company that wants physical customization inside an existing product surface. A 3D printer app, furniture site, marketplace, education product, robotics workflow, or custom-product storefront does not necessarily want a whole CAD system. It wants a safe parametric generator that can be embedded, constrained, validated, and exported.
|
|
12
|
-
|
|
13
|
-
The enterprise AI-CAD user is later and more specialized. They may want benchmarks, data, evaluation loops, backend routing, training workflows, or integrations with existing CAD systems. This segment can produce revenue and strategic pull, but it should not dilute the first product message.
|
|
14
|
-
|
|
15
|
-
The product should be honest about which segment each feature serves. A feature can serve multiple segments, but the first reason to build it should be clear.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Vision
|
|
2
|
-
|
|
3
|
-
ForgeCAD is not mainly a CAD library. It is an AI-native interface layer for physical design.
|
|
4
|
-
|
|
5
|
-
Traditional CAD assumes the human directly manipulates a complex model through a GUI. Classic CAD-as-code assumes the human writes the model. ForgeCAD assumes the human expresses a goal, the AI authors editable semantic code, and the system validates whether the result is real enough to manufacture.
|
|
6
|
-
|
|
7
|
-
That distinction matters because AI needs a surface it can understand, edit, test, and repair. Binary model state is hard for an agent to reason about. A purely visual prompt-to-mesh result can look impressive but fail when the user needs a parameter changed, a hole moved, or a manufacturing export produced. ForgeCAD's product bet is that the best AI CAD interface is a readable representation of design intent, plus a validation loop.
|
|
8
|
-
|
|
9
|
-
The backend should be chosen after the intent is clear. Fast browser preview, exact STEP export, STL/3MF printing, sheet output, robot packages, furniture cut lists, and future CNC routes are different output needs. The product should own the semantic intent layer and the workflow that turns intent into evidence.
|
|
10
|
-
|
|
11
|
-
The long-term product is therefore not "another geometry kernel." Geometry kernels are suppliers. ForgeCAD's durable product position is the language, workflow, validation evidence, project system, and partner surface through which AI creates editable physical objects.
|
|
12
|
-
|
|
13
|
-
The simple framing is:
|
|
14
|
-
|
|
15
|
-
```text
|
|
16
|
-
traditional CAD:
|
|
17
|
-
human intent -> GUI operations -> proprietary model state -> export
|
|
18
|
-
|
|
19
|
-
classic CAD-as-code:
|
|
20
|
-
human intent -> code -> geometry kernel -> export
|
|
21
|
-
|
|
22
|
-
ForgeCAD:
|
|
23
|
-
human goal + feedback -> AI-authored semantic code -> validation loop -> chosen backend/export
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
The product should be judged by how well it makes that third loop reliable for real users.
|