# Polymodel

Polymodel is an AT Protocol-native model/project sharing app: roughly “Thingiverse on atproto.”

The initial concept is intentionally small:

- a lexicon for printable/model projects;
- a profile-oriented publishing surface;
- likes/saves and basic social feedback;
- feeds for recent projects, hot projects, and per-profile project streams;
- an in-browser STL viewer.

It is also a workplace demo for a highly integrated agent workflow built around Polytoken, Jira, Confluence, jj workspaces, and strong review gates.

Jira project/Confluence space key: `PM`.

## STL viewer

Decision: three-d.

- [`three-d`](https://github.com/asny/three-d): chosen STL viewer. Renders on a Dioxus-owned canvas via WebGL2; the renderer session is retained across model switches and STL assets load on demand from `public/models/`.
- [`kiss3d`](https://github.com/dimforge/kiss3d): rejected — no WebGL2/WebGPU adapter surfaced at runtime in the browser target (PM-21).

The viewer choice should be decided with a small spike that loads an STL, renders orbit controls, and fits cleanly into Dioxus.

## Development

Use Nix/direnv when available:

```sh
nix develop
```

Common commands:

```sh
just fix       # format and apply safe clippy fixes
just check     # native, server, and wasm checks
just test      # unit tests via nextest
just test-all  # pre-review local validation
just serve     # Dioxus dev server
```

## Workflow

- Jira is both the human source of truth and the agent working truth for implementation tasks.
- Confluence is the durable design/demo narrative space.
- jj workspaces are the default isolation mechanism for agent work.
- Polytoken skills and project vars live under `.polytoken/`.

## Stack

- Rust 2024 / nightly
- Dioxus 0.7
- Jacquard 0.12
- Nix flake dev shell
- just command runner
