---
# System prepended metadata

title: NikolausDAO

---

# Software Design - Sketch

## Idea

> ⚠️ Just a sketch. 

`nikolaus.dao`

> 1 day dao for your scraps imps exchange on December 6.

### Problem

Don't have a present for `scrap imps exchange` gathering.

<details>
<summary>Read More</summary>
    There is a common tradition in many places on December 6 alias Nicholaus day. </br>
    It called Trash imping.(literally translated from german)</br> </br> 
    How does it work?</br> 
    You buy something funny for a certain defined range of value.</br> 
    f.e. something funny for around 10 bucks. </br> 
    You come together with your friends.</br> 
    Everyone throws his thingy in. </br> 
    It gets redistrubed. </br> 
    Some people are happy, some people are sad but everyone had a big fun </br> 
    
   Ok now we know whats trash imping.
   
   Nikolaus DAO is a group of people.
   Everyone can joins and throws his 3D prompt in.
   The contracts stores it.
   A 3d Models gets created and stored on the chain.
   Everything is own by you.
   
   December 6 is happening.
   
   All the 3d models are getting randomly redistrubted.
   All of them get printed and send to their new owners.
      Now you are the proud owner of a 3d modeled present created by one of your Nikolaus fellow.
      
Happy Nikolaus Day 🎁
   
    
</details>

### Solution

`nikolaus.dao`

## Requirements

### Functional Requirments

- The User should be able to become a member
- The User should be able to participate
- The SmartContract should handle the distrubiton
- The Backend should be able create ai 3D Model
- The Backend should be able to add 3D Model to chain

### Non Functional Requirmentens

- The WebApp should have a simple UI

## Diagrams

### UseCase

```plantuml
!theme plain
left to right direction
skinparam actorStyle awesome

Backend --> ("create 3D")
Backend --> ("add to Chain")
SmartContract --> (redistribute)
User --> (become Member)
User --> (participate)

```

### Class

```plantuml
class NikolausDAO{
    +members: address[]
    +prompts: string[]
    +models: cid[]
    +picture: cid[]
    
    +become_member()
    +add_prompt()
    +add_model()
    +get_all_model()
    +get_model()
}
```

### Sequence

```plantuml
actor User
entity WebApp
entity Backend
database SmartContract
group Members joins
Backend -> SmartContract: "listens"
User -> WebApp: "become_member('prompt')"
WebApp -> SmartContract: "become_member('prompt')"
Backend -> Backend: "create 3D, create cid"
Backend -> SmartContract: "add_models('user')"

end

group "6th December"
SmartContract -> SmartContract: "redistrubed"
Backend -> Backend: "print"
Backend -> User: "delivered"
end
```

<details>
<summary>Show more</summary>
 <img src="https://i.ibb.co/8PSHLg2/image.png" widht=500 height=250/>
</details>

## Notes

- Wanna add webar and show all presents on your nikloaus dao plate. (lets see, time consuming)
- w.i.p.