# facets wiki 2 weeks 40 40 80*3 = 240 100*240=24,000 80*2 = 160 100*160=16,000 ## Milestones --- ### Milestone 1 - Facets.wiki Web App --- The objective is to implement and deploy the basic functionality of the diamond pattern inspector web app with database, frontend, backend rewritten in rust. duration: 2 weeks | Start | End | hours | cost | | -------- | -------- | -------- | -------- | | May 8, 2023 | May 22, 2023 | 240 | 15,000 USD | ## Developer 1 - Back end Gian Marco Alarcon [linkedin](www.linkedin.com) ### Ticket 1. Backend Design | Time | cost per hour | cost | | -------- | -------- | -------- | | 24 hours | 100 USD | 2,400 USD | At this stage : a new backend design will be made, targeting production, a better structure for the code and an out-of-the box code runnable backend. #### Scope : - Use [draw.io](http://draw.io) to create the new structure of the backend - make a plan of development of the backend in rust - clean up the code in the repo - have a clear README of the backend ### Ticket 2 Backend Development | Time | cost per hour | cost | | -------- | -------- | -------- | | 56 hours | 100 USD | 5,600 USD | ##### Summary: At this stage : the new server with its design will be rewritten in rust. a github workflow will be setup for further testing and development and it will be online. #### Scope : - a fully working backend in rust - a server deployed online - a server that meets the design from phase 1 - a clear README and out-of-the-box setup for the repo #### Notes: - all functionalities match existing facets.wiki page ## Developer 2: Smart Contracts Carlos Ramos [linkedin](www.linkedin.com) ### Ticket 3: Smart Contarcts Improvement / Clean up | Time | cost per hour | cost | | -------- | -------- | -------- | | 40 hours | 100 USD | 4,000 USD | #### Summary: At this stage : a new smart contract repo template for diamonds will be created with a clear README and setup instructions. #### Scope : - clean up previous code of smart contracts repo - create a clean project for basic diamond development and deployment using hardhat and foundry ### Ticket 4: Research | Time | cost per hour | cost | | -------- | -------- | -------- | | 40 hours | 100 USD | 4,000 USD | #### Summary: At this stage, different research will be conducted to see whether some features can be added into [facets.wiki](http://facets.wiki) , the features are listed below #### Scope : - Get storage slots and variables from diamonds - combining ABIs from facets - being able to see the storage data of a diamond just like in etherscan - Allow “forced edits” of eternal storage by admin(s) ## Developer 3: Web app Konrad Gnat [linkedin](www.linkedin.com) ### Ticket 5: Front end design improvements | Time | cost per hour | cost | | -------- | -------- | -------- | | 16 hours | 100 USD | 1,600 USD | #### Summary: There will be a wide research and design brainstorming on how can we improve the app looks. There will be a out of the box frontend and good instructions on how to run it #### Scope : - create new figma design - light + dark mode - create a new logo - better color schemes - research on better design patterns - research on better UX ### Ticket 6: Front end development | Time | cost per hour | cost | | -------- | -------- | -------- | | 64 hours | 100 USD | 6,400 USD | #### Summary: At this stage : the UI will be cleaned up, some components will be restructured for easier development in the future. a workflow will be implemented in github for further PRs and Issues. #### Scope : - have a fully working frontend out of the box - have a clear README on how to start the frontend - have a github workflow check for future versions - have a frontend that matches our new design - have stable version thats deployed and available online --- ### Milestone 2 - CLI --- The objective is to generate a CLI that will set up a foundry / hardhat project for developers to write their own facets and deploy without worrying about the setup duration: 2 weeks Developer 1 Smart Contracts Carlos Developer 2 Back end Rust Gian Developer 3 Front end React Konrad Acceptance Criteria: - feature: search facets - upload facet from address - support for multiple networks - polygon, mainnet, arbitrum, optimisim, avalanche - --- ### Milestone 3 duration: 2 weeks Developer 1 Smart Contracts Carlos Developer 2 Back end Rust Gian Developer 3 Front end React Konrad --- ## Other Hackathon Ideas 1. Account Abstraction Chrome Extension Wallet ## strategy 1. Build out facets.wiki 2. after 1-2 months bulid account abstraction features, using the existing work as foundation (CLI, web app tool) ## features list - add facet functions, after aproval of more than one admin with a multi sig - DAO approving adding facets through voting mechanism, exacuted on chain after vote - deploy from the app - multiple network support - load diamond - be able to deploy diamond with parameters, add and remove facets *key feature* - empty, with parameters - deploy from the app - tells youwhere it's at, address - add facets from db and interact with them - in any network, testnet, mainnet - download ABI is important *key feature* - combine ABIs from different facets - one ABI file for whole diamond system - remove one facet and ABI is updated - using facets from DB, we have the ABI's there - we combine all ABIs from user - we delete/add functions with search, it's a json file - new design, light + dark mode - research new design - 6 hours 0.5 days - landing page + home page, dashboard, upload page, facets search + list page, logo, color scheme, theme elements - create figma - 8 hours 1 days - to be used as reference - reusable themes, components, fonts, color pallete - update web app front end - 12 hours 1.5 days - create reusable components ## meeting with Leon - consider simple how to tutorial - to tutorial of creating a new facet - tutorial to update a facet - template for starter package - letting users deploy empty diamonds and facets - check storage, add/remove functions, do transactions - look at moralis, thirdweb, ipfs website - they have a lot of documentation, visuals - wiki part can emphasise that - education in general - missing in the space, where we can fit in - put the repo in game 7 - more high level, make it a wiki - focus on education - CLI - talk to users, get user feedback - approach: throw out content aroudn education, get a feel for what people need, build around that - ask what people are building # notes 1. eternal storage - displays not on etherscan - only displays abi - need to combine ABI from different facets - and using ethers provider getStorageAt - pass contract storage and index - can calculate all the ABI's and facets - you can see the data in the contract 2. be able to modify the admin of the contract - if facet is modifying one parameter - addmin can call a function can reset this parameter - eternal storage are using bytes to reference position on storage of contract - you can set a function that can set bytes on some parameters on - something like setBytes - pass index of facets where it's located - pass bytes and pass value - storage related to that facets, the value is going to be edited 3. CLI - when you do npx hardhat, use typescript, other predefined facets - choose basic diamond, basic facet, pre add some facets, gives out of the box hardhat or foundary folder - they (game 7) have CLI for summon repository - in hackathons - prompts user the CLI or update it and improve - 'create your own facet using our own CLI' - our prompt 5. have a hardhat template - currently we have POC - clone from GitHub and deploy and add facets - make it very intuitive 6. have a foundary template 7. on front end side - improvements - we have history of changes - add revert function - server side: - can rewrite server in RUST 8. Long term - account abstraction - migrate to other ecosystem, StarkNet 1. eternal storage - displays not on etherscan - only displays abi - need to combine ABI from different facets - and using ethers provider getStorageAt - pass contract storage and index - can calculate all the ABI's and facets - you can see the data in the contract 2. be able to modify the admin of the contract - if facet is modifying one parameter - addmin can call a function can reset this parameter - eternal storage are using bytes to reference position on storage of contract - you can set a function that can set bytes on some parameters on - something like setBytes - pass index of facets where it's located - pass bytes and pass value - storage related to that facets, the value is going to be edited 3. CLI - when you do npx hardhat, use typescript, other predefined facets - choose basic diamond, basic facet, pre add some facets, gives out of the box hardhat or foundary folder - they (game 7) have CLI for summon repository - in hackathons - prompts user the CLI or update it and improve - 'create your own facet using our own CLI' - our prompt 5. have a hardhat template - currently we have POC - clone from GitHub and deploy and add facets - make it very intuitive 6. have a foundary template 7. on front end side - improvements - we have history of changes - add revert function - server side: - can rewrite server in RUST 8. Long term - account abstraction - migrate to other ecosystem, StarkNet