# Software Design - Sketch
## Idea
> ⚠️ Changes every second, drastically or slighty or completly or ...
Idea: `Imp DAO`
<center>
<img src="https://i.ibb.co/XLFJxMt/1cd72787-4570-4233-9a4a-2372f0aa0277.jpg" width=300 height=300>
</center>
### Problem
6th of December is comming. I don't have a present.
### Solution:
Buy a imp
<details>
<summary>Read More</summary>
There is a common tradition in many places. </br>
It called Trash imping.(literally translated from german)</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.
Imp DAO is a group of people who have imps.
The imp is 3D Printed.
If you hover over the imp you see all imps.
On the 6 of december everyone throws something in the DAO.
It gets redistrubed.
Everyone had a great fun and everyone has imp, who is ready for next year.
</details>
## Requirments
### Functional Requirments
- User has to be able to buy imp.
- User has to be able to see imps.
- User has to be able throw something in ImpDAO
- User get something on the 6 of December.
### Non Function Requirments
- The WebApp should have a simple UI
## Diagramms
### Use
```plantuml
!theme plain
left to right direction
skinparam actorStyle awesome
User --> (buy imp)
User --> (see imps)
User --> (participate)
User --> (get)
```
### Class
```plantuml
!theme plain
class ImpDAO {
+ members: adress[]
+ imps: string[]
+ gifts: string[]
+ addMember()
+ participate()
+ get_imps()
}
```
### Sequence
```plantuml
actor User
entity WebApp
database SmartContract
actor Frank
User -> Frank: "here 10 bucks give me imp"
Frank -> User: "sure, here your impy"
Frank -> SmartContract: "add_Member()"
User -> WebApp: "show me all impies"
WebApp -> SmartContract: "Give it to me"
SmartContract -> WebApp: "Ai ai, sir"
WebApp -> WebApp: "sure, look all 3D Impies"
User -> WebApp: "Its the 6th, here picture of my lazy cat"
WebApp -> SmartContract: "participate()"
WebApp -> User: "You participated"
WebApp -> User: "Gift time, you got a dog which smells buts"
```
### Notes
<details>
<summary>See More</summary>
I like the idea to give all the hype garbage some kind of reuse.
Some people lost quite a bit and just a laugh with some friends, sounds healthy to me.
Kind of therapy.
Personally my goal is to play with ar.js, they just got reactived. Curious about the tracking.
Tech stack will be something like this
- Frontend (javascript, polkadotJS, arJS)
- SmartContract Ink (pure ink, no libaries)
- UI/UX Figma
- 2D Concept Art Krita
- 3D Magicia Voxel
- Docs (markdown)
- Optional Backend (javascript)
Its inspired of my first polka.
We made bufficorn 3D.
Its highly modular, because its pixels and voxels. No curves, just pointy.
Its for everyone, people with minecraft expirience get it in a half an hour.
<img src="https://gitlab.com/frankbevr/mintprint/-/raw/main/MintPrint-Presentation/Art&Production.jpg?ref_type=heads" width=250 height=200 />
I completly failed to get something running on the frontend and the smart contract and in general :monkey: :shrug:
Now, I feel comfortable to get something done in 48 hours without losing my mind.
</details>