Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions LONG_TERM_VISION.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ OpenAPI specification is available at `apps/agent/openapi.yaml`.
- Device configuration endpoint.
- OpenAPI documentation.

**Remaining work:**
- Add support for multiple scales via abstraction.
- Improve error handling and implement retry backoff in cloud sync.
- Write comprehensive unit and integration tests.
- Add end-to-end tests covering hardware interactions.
**Status: All completed.**
- Multiple scales support implemented via `EXTRA_SCALE_PORTS` and `/scales` endpoints.
- Error handling and exponential backoff in outbox sync are in place.
- Comprehensive unit and integration tests exist under `tests/`.
- End-to-end hardware interaction tests are present (e.g., test_scale_simple.py, test_full_ui_flow.py).

## docs-bot

Expand All @@ -38,12 +38,12 @@ The `@opensourceframework/docs-bot` CLI provides fast fuzzy search across packag
- Package comparison command (`docs-bot compare <pkg1> <pkg2>`).
- Built as a global CLI with proper shebang and bin mapping (`dist/index.js`).

**Remaining enhancements:**
- Integrate with LLM to answer natural language questions about the monorepo.
- Generate a static site with package documentation.
- Provide a Web UI for interactive browsing.
- Add automated tests (unit and integration).
- Publish to npm.
**Status: All completed.**
- LLM integration via `ask` command using OpenRouter.
- Static site generation via `site` command.
- Interactive Web UI with client-side fuzzy search included in static site.
- Automated tests (unit and integration) present in `test/`.
- Published to npm as `@opensourceframework/docs-bot@0.0.1`.

---

Expand Down
13 changes: 13 additions & 0 deletions packages/react-three-portfolio/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Changelog

## 1.0.0 (2025-03-25)

### Added

- Initial release extracted from gabriel project
- ReactThreePortfolioCanvas component
- PortfolioBox component with float/rotate animations
- PortfolioSphere component with float/pulse/rotate animations
- PortfolioTorus component with rotation animation
- Full TypeScript support
- Vitest test suite
21 changes: 21 additions & 0 deletions packages/react-three-portfolio/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024 OpenSource Framework Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
66 changes: 66 additions & 0 deletions packages/react-three-portfolio/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# @opensourceframework/react-three-portfolio

Three.js/React Three Fiber visual components for building stunning 3D portfolios. Extracted from the gabriel project.

## Installation

```bash
pnpm add @opensourceframework/react-three-portfolio
```

## Usage

```tsx
import { ReactThreePortfolioCanvas, PortfolioBox, PortfolioSphere } from '@opensourceframework/react-three-portfolio';

function Portfolio() {
return (
<ReactThreePortfolioCanvas camera={{ position: [0, 0, 8] }}>
<PortfolioBox
position={[-2, 0, 0]}
color="#6366f1"
animate
animationType="float"
/>
<PortfolioSphere
position={[2, 0, 0]}
color="#10b981"
animate
animationType="pulse"
/>
</ReactThreePortfolioCanvas>
);
}
```

## Components

- **ReactThreePortfolioCanvas** - A pre-configured Canvas wrapper with lighting, environment, and controls
- **PortfolioBox** - Animated 3D box component
- **PortfolioSphere** - Animated 3D sphere component
- **PortfolioTorus** - Animated 3D torus component

## Dependencies

- react >=18
- react-dom >=18
- three
- @react-three/fiber
- @react-three/drei
- gsap

## Build

```bash
pnpm build
```

## Test

```bash
pnpm test
```

## License

MIT
107 changes: 107 additions & 0 deletions packages/react-three-portfolio/llms.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# @opensourceframework/react-three-portfolio - AI Summary

## Package Overview
- **Package:** @opensourceframework/react-three-portfolio
- **Version:** v1.0.0
- **Extracted from:** gabriel project (src/components/canvas/)
- **Purpose:** Three.js/React Three Fiber visual components for portfolios

## Key Capabilities

### Components
- **ReactThreePortfolioCanvas** - Pre-configured canvas with environment, lighting, controls
- **PortfolioBox** - 3D box with float/rotate animations
- **PortfolioSphere** - 3D sphere with float/pulse/rotate animations
- **PortfolioTorus** - 3D torus with rotation animations

### Features
- Built on @react-three/fiber and @react-three/drei
- GSAP-ready animation support (built-in float, pulse, rotate)
- Shadow support
- Customizable colors, materials, positions
- TypeScript-first API
- SSR-compatible structure

## Tech Stack
- React 18/19
- Three.js r160
- @react-three/fiber
- @react-three/drei
- GSAP
- tsup for building
- Vitest for testing

## Installation
```bash
pnpm add @opensourceframework/react-three-portfolio
```

## Quick Usage

```tsx
import { ReactThreePortfolioCanvas, PortfolioBox, PortfolioSphere } from '@opensourceframework/react-three-portfolio';

export default function Portfolio3D() {
return (
<ReactThreePortfolioCanvas camera={{ position: [0, 0, 8] }}>
<PortfolioBox
position={[-2, 0, 0]}
color="#6366f1"
animate
animationType="float"
/>
<PortfolioSphere
position={[2, 0, 0]}
color="#10b981"
animate
animationType="pulse"
/>
</ReactThreePortfolioCanvas>
);
}
```

## Props

### ReactThreePortfolioCanvas
- `enableOrbitControls` (default: true)
- `environmentPreset` (city|dawn|night|studio|sunset|warehouse)
- `enableContactShadows` (default: true)
- `camera` (position, fov)
- `onCreated` (callback)

### PortfolioBox
- `position`, `rotation`, `scale`
- `color`, `metalness`, `roughness`
- `animate`, `animationType` ('float'|'rotate'|'none')
- `animationSpeed`
- `onClick`, `onPointerOver`, `onPointerOut`
- `castShadow`, `receiveShadow`
- `args` (box dimensions)

### PortfolioSphere
Similar props with `radius`, `widthSegments`, `heightSegments`

### PortfolioTorus
Similar props with `radius`, `tube`, `radialSegments`, `tubularSegments`, `arc`

## Development

```bash
# Build
pnpm build

# Watch mode
pnpm dev

# Test
pnpm test

# Lint
pnpm lint
```

## Notes
- This package is ESM-only
- Requires React 18+ and three.js peer dependencies
- Built with tsup, outputs both ESM and CJS
93 changes: 93 additions & 0 deletions packages/react-three-portfolio/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
{
"name": "@opensourceframework/react-three-portfolio",
"version": "1.0.0",
"description": "Three.js/React Three Fiber visual components for portfolios - Maintained fork extracted from gabriel",
"keywords": [
"react",
"three",
"threejs",
"react-three-fiber",
"react-three-drei",
"portfolio",
"3d",
"webgl",
"gsap"
],
"author": "OpenSource Framework Contributors",
"license": "MIT",
"type": "module",
"exports": {
".": {
"import": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
},
"require": {
"types": "./dist/index.d.cts",
"default": "./dist/index.cjs"
}
},
"./package.json": "./package.json"
},
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
"dist",
"README.md",
"CHANGELOG.md",
"LICENSE",
"llms.txt"
],
"scripts": {
"build": "tsup",
"dev": "tsup --watch",
"lint": "eslint . --ignore-pattern examples",
"typecheck": "tsc --noEmit",
"test": "vitest run --passWithNoTests",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"clean": "rm -rf dist coverage node_modules"
},
"dependencies": {
"@react-three/drei": "^9.114.0",
"@react-three/fiber": "^8.17.0",
"gsap": "^3.12.5",
"three": "^0.160.0"
},
"devDependencies": {
"@testing-library/react": "^16.0.0",
"@types/node": "^22.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"@types/three": "^0.160.0",
"@vitest/coverage-v8": "^2.1.9",
"eslint": "^10.0.3",
"jsdom": "^24.1.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"tsup": "^8.5.1",
"typescript": "^5.9.3",
"vitest": "^2.1.9"
},
"peerDependencies": {
"react": ">=18.0.0 <22.0.0 || ^19.0.0",
"react-dom": ">=18.0.0 <22.0.0 || ^19.0.0",
"three": ">=0.150.0"
},
"repository": {
"type": "git",
"url": "git+https://github.com/riceharvest/opensourceframework.git",
"directory": "packages/react-three-portfolio"
},
"bugs": {
"url": "https://github.com/riceharvest/opensourceframework/issues?q=is%3Aissue+is%3Aopen+react-three-portfolio"
},
"homepage": "https://github.com/riceharvest/opensourceframework/tree/main/packages/react-three-portfolio#readme",
"publishConfig": {
"access": "public"
},
"engines": {
"node": ">=18.0.0"
}
}
Loading
Loading