# 3D Asset platform
## Concepts
**Asset**: Name, Description, Type, Photos*, Format*, Textures*, Colors*, Tags*
**Format**: Asset, Type, URL, Status
**FormatStatus**: Missing, Pending, Converting, Ready
**Stage**: Name, Description, Slots, Asset
**StageSlot**: Name, Tags*, Position
**Scene**: Stage, Name, Description, Props
**SceneProp**: Scene, StageSlot, Asset, Offset
**Session**: Scene, OriginalScene, AccessCode
Example:
```yaml
scenes:
- name: Koens Office
description: A perfectly squared office
stage:
name: squared-room
description: A 4x4 room
asset:
- name: room-prefab
description:
type: model
tags:
- room
- space
- squared
formats:
- type: prefab
url: https://x.com/room-prefab.pfb
status: ready
- type: 3dm
url: https://x.com/room-prefab.3dm
status: pending
photos:
- url: https://x.com/room-prefab-1.jpg
description: "Example photo 1"
- url: https://x.com/room-prefab-2.jpg
description: "Example photo 2"
textures:
// TODO
slots:
- name: desk
description: A place for the desk, max sized 200/90
position: [155, 155]
orientation: 270dg
tags:
- furniture
- desk
- name: chair
description: A chair in front of the desk
position: [100, 155]
orientation: 90dg
tags:
- furniture
- chair
- office
props:
- slot: desk
asset:
name: wooden-desk-1
type: model
tags:
- desk
formats:
- type: model
url: https://x.com/wooden-desk-1.md
status: ready
materials:
- name: soft-wood
type: material
formats:
- type: material
url: https://x.com/soft-wood.mat
status: ready
- type: png
url: null
status: converting
- name: hard-wood
type: material
formats:
- type: material
url: https://x.com/hard-wood.mat
status: ready
- slot: chair
asset:
name: sample-chair-1
tags:
- desk
formats:
- type: prefab
url: https://x.com/sample-chair-1.pfb
status: ready
colors:
- rgb(123,132,132)
- rgb(0,0,0)
```
## Deliverables
- Authentication / Authorization
- API
- Simple admin interface (web)
- Asset converter pipeline
- Unity scene renderer
## Fundamentals
- Distributed compute
- Distributed storage
- Local asset delivery
- E2E encrypted
## Estimates
### Auth
- Option 1: Self-hosted (identity server): 8 hours
- Option 2: Managed identity server: 2 hours
### API
- Platform fundamentals: 8 hours
- Storage abstractions: 4 hours
- Entities/Models: 4 hours
- Endpoints; 8 hours
- Documentation: 8 hours
- Storage implementation: 8 hours
### Admin interface
- Platform fundamentals: 8 hours
- CRUD pages: 8 - 40 hours. (Depends on requirements)
- Optional: Analytical pages: 8 - 40 hours. (Depends on requirements)
- Documentation: 2 hours
### Asset converter pipeline
*Open question*
### Unity scene renderer
*Outside of scope*