Compare commits

..

3 Commits

3 changed files with 128 additions and 166 deletions

218
README.md
View File

@ -1,159 +1,103 @@
# Turborepo starter # Thob Capability Mapping Sprint
This Turborepo starter is maintained by the Turborepo core team. A professional benchmarking repository designed to evaluate the current capabilities, strengths, and limitations of the **Thob 3D Builder** compared to industry-standard 3D web frameworks (**Vanilla Three.js** and **React Three Fiber**).
## Using this example ---
Run the following command: ## Project Overview
This sprint focuses on mapping 3D "Capabilities"—from simple visual changes to complex interactive states—across three primary implementation strategies:
1. **Vanilla Three.js**: Imperative, pure-code implementation.
2. **React Three Fiber (R3F)**: Declarative, component-based implementation.
3. **Thob Page Builder**: No-code/Visual 3D editor experience.
```sh ---
npx create-turbo@latest
## Project Structure
The repository is organized by "Weeks," with each week containing multiple task benchmarks.
```text
/
├── Week-1/
│ ├── Task-1/ (Material Color Change)
│ │ ├── vanilla/ ← Imperative Three.js setup
│ │ ├── r3f/ ← Declarative React setup
│ │ ├── thob/ ← Builder Exploration Notes
│ │ └── report.md ← Comparative Capability Report
│ ├── Task-2/ (Texture Mapping)
│ │ ├── vanilla/ ← TextureLoader implementation
│ │ ├── r3f/ ← useLoader implementation
│ │ ├── thob/ ← Texture workflow observations
│ │ └── report.md ← Comparative Capability Report
│ ├── Task-3/ (Hover Interaction)
│ │ ├── vanilla/ ← Raycaster-based hover
│ │ ├── r3f/ ← onPointerOver/Out events
│ │ ├── thob/ ← Interaction engine gap notes
│ │ └── report.md ← Comparative Capability Report
│ ├── Task-4/ (Click Toggle State)
│ │ ├── vanilla/ ← Click-to-state raycasting
│ │ ├── r3f/ ← onClick state management
│ │ ├── thob/ ← Persistent state limitation notes
│ │ └── report.md ← Comparative Capability Report
│ ├── GeneralNotes.md ← Strategic Overview
│ └── Week-1-PersonalSummary.md ← Personal Narrative
└── README.md
``` ```
## What's inside? ---
This Turborepo includes the following packages/apps: ## 🛠️ Tech Stack
* **Engine**: Three.js
* **Frontend**: React (for R3F)
* **Styling**: CSS Modules / Vanilla CSS
* **Build Tool**: Vite
* **Platform**: Thob 3D Page Builder
### Apps and Packages ---
- `docs`: a [Next.js](https://nextjs.org/) app ## 🏁 Week 1 Milestone Summary
- `web`: another [Next.js](https://nextjs.org/) app
- `@repo/ui`: a stub React component library shared by both `web` and `docs` applications
- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`)
- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo
Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). | Task | Capability | Vanilla | R3F | Thob Builder |
| :--- | :--- | :--- | :--- | :--- |
| **01** | Material Color | Yes | Yes | Yes (Static) |
| **02** | Texture Mapping | Yes | Yes | Yes (Fastest) |
| **03** | Hover Interaction | Yes | Yes | Planned / Limited |
| **04** | Click Toggle State | Yes | Yes | Unstable / Broken |
### Utilities ### 🔦 Key Week 1 Insights:
* **Speed Advantage**: Thob Builder is exceptionally fast for **Static Visual Configuration**. Setting up meshes and textures in the UI is roughly **3-5x faster** than writing the equivalent boilerplate in code.
* **Interaction Gap**: The primary limitation currently identified is the **Interaction Engine**. Hover events and persistent state toggles (onClick) are currently unreliable or missing in the builder.
This Turborepo has some additional tools already setup for you: ---
- [TypeScript](https://www.typescriptlang.org/) for static type checking ## 🚀 Getting Started
- [ESLint](https://eslint.org/) for code linting
- [Prettier](https://prettier.io) for code formatting
### Build ### 📦 Installation
The project uses `yarn` for dependency management.
```bash
# Clone the repository
git clone [repo-url]
To build all apps and packages, run the following command: # Install all dependencies (Monorepo root)
yarn install
With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed (recommended):
```sh
cd my-turborepo
turbo build
``` ```
Without global `turbo`, use your package manager: ### 💻 Development Servers
To run any specific task implementation:
```sh ```bash
cd my-turborepo # Example: Running Task 4 (R3F)
npx turbo build cd Week-1/Task-4/r3f
yarn dlx turbo build yarn dev
pnpm exec turbo build
``` ```
You can build a specific package by using a [filter](https://turborepo.dev/docs/crafting-your-repository/running-tasks#using-filters): ---
With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed: ## Contribution & Reporting
Each task includes a **`report.md`** file. These reports follow a standardized format to capture:
* **Complexity**: How many lines of code vs. clicks?
* **Limitation Type**: Is it a runtime, editor, or UX issue?
* **Workarounds**: How did we solve the gap?
* **Business Value**: Why does this feature matter to our users?
```sh ---
turbo build --filter=docs
```
Without global `turbo`: **Sprint Lead**: Divya Pahuja
**Goal**: Identify the "Interactivity Threshold" where code becomes more efficient than the builder UI.
```sh
npx turbo build --filter=docs
yarn exec turbo build --filter=docs
pnpm exec turbo build --filter=docs
```
### Develop
To develop all apps and packages, run the following command:
With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed (recommended):
```sh
cd my-turborepo
turbo dev
```
Without global `turbo`, use your package manager:
```sh
cd my-turborepo
npx turbo dev
yarn exec turbo dev
pnpm exec turbo dev
```
You can develop a specific package by using a [filter](https://turborepo.dev/docs/crafting-your-repository/running-tasks#using-filters):
With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed:
```sh
turbo dev --filter=web
```
Without global `turbo`:
```sh
npx turbo dev --filter=web
yarn exec turbo dev --filter=web
pnpm exec turbo dev --filter=web
```
### Remote Caching
> [!TIP]
> Vercel Remote Cache is free for all plans. Get started today at [vercel.com](https://vercel.com/signup?utm_source=remote-cache-sdk&utm_campaign=free_remote_cache).
Turborepo can use a technique known as [Remote Caching](https://turborepo.dev/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup?utm_source=turborepo-examples), then enter the following commands:
With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed (recommended):
```sh
cd my-turborepo
turbo login
```
Without global `turbo`, use your package manager:
```sh
cd my-turborepo
npx turbo login
yarn exec turbo login
pnpm exec turbo login
```
This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview).
Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:
With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed:
```sh
turbo link
```
Without global `turbo`:
```sh
npx turbo link
yarn exec turbo link
pnpm exec turbo link
```
## Useful Links
Learn more about the power of Turborepo:
- [Tasks](https://turborepo.dev/docs/crafting-your-repository/running-tasks)
- [Caching](https://turborepo.dev/docs/crafting-your-repository/caching)
- [Remote Caching](https://turborepo.dev/docs/core-concepts/remote-caching)
- [Filtering](https://turborepo.dev/docs/crafting-your-repository/running-tasks#using-filters)
- [Configuration Options](https://turborepo.dev/docs/reference/configuration)
- [CLI Usage](https://turborepo.dev/docs/reference/command-line-reference)

View File

@ -1,10 +1,29 @@
# General Notes - Week 1 # Week 1 — General Notes & Personal Summary
## Day 1 ## Milestone Recap: Tasks 14
- * **Task 1 (Material Color)**: Handled color changes imperative (Vanilla), declarative (R3F), and UI-driven (Thob).
## Day 2 * **Task 2 (Texture Mapping)**: Successfully applied checkerboard and URL-based textures. **Thob speed was the highlight here.**
- * **Task 3 (Hover Feedback)**: Identified a **major gap**—Hover is standard in code but missing from the builder UI.
## Day 3 * **Task 4 (Click Toggle)**: Discovered that the `onClick` interaction engine is currently **unstable/broken** in the builder.
-
## Day 4 ---
-
## Top Reflections
### Speed vs. Control
* **The Thob Advantage**: Setting up a 3D scene (adding a cube + lighting + texture) in the builder is **lightning-fast**. What takes a 10-minute Vite setup in Vanilla takes **2 minutes** in the Thob UI.
* **The Interactivity Threshold**: As soon as we moved from "Static Visuals" to "Interactive Behavior," the strength shifted back to **R3F**. The builder's UI for interactions exists, but the execution logic isn't there yet.
### Declarative vs. Imperative
* Writing the **Raycaster** manually in Vanilla felt outdated and boilerplate-heavy compared to the clean **`onPointerOver`** props in R3F.
* **Insight**: Thob would benefit immensely by mirroring R3F's declarative event model (simple triggers linked to property changes).
---
## Critical Discoveries (The "Interaction Blackout")
The most valuable part of this week's sprint was identifying that:
1. **Hover (PointerOver/Out)**: Is not just "hidden"—it's currently missing as a first-class feature in the Thob engine.
2. **Click (Interaction Dispatcher)**: Is unreliable. Even when wired correctly in the UI, it doesn't always fire in the runtime.
3. **CORS/Asset Linking**: External URL textures are prone to browser blocking, making internal "Project Library" uploads the only safe path for now.
---

View File

@ -1,26 +1,25 @@
# Divya — Week 1 Summary # Week 1: Personal Sprint Summary
## Tasks Completed ## Favorite Task: Task 2 (Texture Mapping)
-Task 1: This task was the most satisfying because it highlighted the **"No-Code Visual Loop."** Being able to see the checkerboard align instantly in the viewport vs. having to refresh the browser and check the console logs for URL errors made the builder feel like a proper "Artist's Tool."
-Task 2:
-Task 3:
-Task 4:
## What Thob Supports Well ## The Biggest Challenge
-1. The biggest hurdle was the **Interaction engine's inconsistency.**
-2. - It was frustrating to see a button trigger in the UI that simply didn't fire in the runtime.
-3. - Realizing that **Hover** is currently unsupported was a reality check: it reminded me that while the builder is a strong visual layout engine, it's not yet a full interaction engine.
## What Feels Weak / Awkward ## Tooling Comparison summary
-1. - **Vanilla Tree.js**: Felt like the "Ultimate Control" but required too much "Boilerplate Math."
-2. - **React Three Fiber**: The "Sweet Spot." Declarative, powerful, and very clean for managing complex states.
-3. - **Thob Builder**: The "Future." If the interaction engine catches up to the visual engine, it will be the fastest way to build 3D web apps.
## Most Product-Relevant Discovery ---
-
## Best Improvement Recommendation ## Progress Checklist (Week 1)
- - [x] Task 1: Material Color Logic (Complete)
- [x] Task 2: Texture Mapping (Complete)
- [x] Task 3: Pointer/Hover Interaction (Complete - Discovery: Not Possible)
- [x] Task 4: Persistent Click Toggle (Complete - Discovery: Unstable)
## What I Learned About Vanilla vs R3F vs Thob
- **Personal Note**: Transitioning between three different ways of thinking (Imperative → Declarative → Visual) has been an incredible way to map the landscape of 3D Web Development.