DapperCollectives / BOUNTY-Token-Minter-Tool

[Bounty Claimed by Emerald City] The Token Minter is an dapp that allows users to easily mint tokens onto the Flow blockchain using a guided process and GUI.
14 stars 3 forks source link

Emerald City Proposal #1

Open jacob-tucker opened 2 years ago

jacob-tucker commented 2 years ago

Hellooo! This is Jacob Tucker, filling out an issue to initiate this bounty on behalf of Emerald City.

Team Members: The Building Guild of Emerald City. We have ~40 community members interested in building this out as a community and applying their talents to specific areas of the project.

Contact Info: You can reach out to me at jacobtucker818@gmail.com or ping me in Discord (tsnakejake#8364). Additionally, you will be able to see the progress of the development of this platform in an open-source format in our Discord: discord.gg/emeraldcity

Why should we take on this bounty? Emerald City has around 40 community members who are interested to take on this task. Because we have built projects/tools in an open-source format already (including the FLOAT platform and Emerald bot), we already know and identify the specific talents of our community members and can leverage that to build this platform quickly.

In addition, Emerald City treats the projects we build as a learning experience for Flow developers. We have a ton of members who recently graduated from our Academy who want to get their hands dirty with a full-scale DApp on Flow. In addition, some have not been a part of building full-scale projects in the past, and would like to use this as an opportunity to learn so they can create their own projects on Flow. They would not only learn how to tackle a "serious" application, but also learn how to make real MainNet projects on Flow.

Lastly, of course, we would use this as an opportunity to reward our experienced developers looking for work with this bounty and give them a place to contribute during the duration of the bounty.

Product Requirements Documentation and Tech Spec:

The NonFungibleToken standard as it currently stands requires that you have 1 type of NFT per contract. Platforms like Rarible, though, use 1 Contract for all of their NFTs, and differentiate them by the metadata within the NFT itself. We will take a different approach, which I believe is more aligned with the requirements of this bounty, to deploy a different NFT contract for each creator (which I also think is what the example platforms provided were doing).

In order for this to take place, it will be required to have access to MainNet deployment at some point, but that is something to worry about at the end. For the duration of the bounty, we will test this deployment of contracts to the user's account on Emulator + Testnet.

One interesting side effect of this platform is that it requires us to think more deeply about NFT Metadata. As we know, the NFT Metadata standard was released not too long ago on MainNet, and has sought to become adopted by projects across the ecosystem. This is a perfect opportunity to integrate the standard without having to go through the pain of encouraging developers to implement it. If we automate it directly in the code, every NFT Collection created will automatically implement the standard, allowing for greater NFT discoverability across the ecosystem.

The platform itself will be straightforward - it will allow a user to log in through Blocto, walk through a step-by-step process to fiddle with NFT Metadata (which will have IPFS integration for images/videos/etc), and then display a resulting modal with the configured contract. I also really liked that https://www.721.so/ displayed the contract on the side bar while you were configuring the contract because it allows for the creator to learn something about smart contracts in the process. So we will have that too.

At that point, it's just a matter of making things look pretty.

deayora commented 2 years ago

TYSM @jacob-tucker and Emerald City! We will be reviewing this proposal and will get back to you in the next 1-2 weeks. We appreciate all your work and are looking forward to diving in.

deayora commented 2 years ago

Hi @jacob-tucker! Thank you for your teams interest in this bounty. We are eager for you all to get started on it. Per the bounty requirements, can your team please:

Re: MainNet Deployment - Per the last step of Milestone 4 (Production-Grade Build Complete)

Definitely let us know if you have any questions on this feedback. Once those are updated in a revised PRD commented below, we'll review, wrap up any further questions or approve and count this bounty awardedπŸ™

jacob-tucker commented 2 years ago

Thank you for response. We're super hyped to get started on this too.

Maintenance Plan It is important to me and the Emerald City community that this tool be maintained and branded by Emerald City since our success relies on people knowing and recognizing our free tooling. Thus, we will take the responsibility of hosting the website and making sure things are smooth sailing once launched. In addition, we will constantly update the site with new features to the NFT Metadata Standard.

I can confirm that we will build out all of the features listed:

In regards to MainNet deployment, I want to confirm the process for what the deployment will look like. Each user who uses this platform will be creating their own NFT, and thus their own contract. So when this bounty is completed and sent in, there will be no contracts to deploy. Rather, they will need to be deployed on the fly when a user creates their own NFT. This is not supported on Flow at the moment, as MainNet deployment is closed. As per my understanding, it will be possible in the upcomings months though. Does this seem like what you were thinking as well?

Thanks deayora!

deayora commented 2 years ago

@jacob-tucker we would like to build this in a way - and get it audited and signed-off on internally - so that users can deploy their contracts on the fly. We feel that if the template is tight enough and through the GUI users are only updates metadata/images, this should be possible and a great first step for people deploying at will on Flow.

We will need to get double confirmation on this plan internally -- but in the meantime, I think if we build with the plan for deployment to be owned by users and remain aware of any design needs/steps that would need to be baked in if in interim we manage for manual deployment if we are unable to give users this ability.

If you feel you can approach this with the two potential paths in mind - we can consider this bounty awarded and get to building :)

jacob-tucker commented 2 years ago

Sounds great. I will get our community moving on this right away.

We will prioritize users owning deployment, but keep the other option in the back of our minds as well. At the very least, deployment should be open for all in a few months time, so worst case we have that path developed out for when that time arrives

deayora commented 2 years ago

Best news!! Milestone #1 complete :) I will alert my team and they'll kick-off reaching out and getting payment in progress. CONGRATULATIONS, EMERALD CITY!

jacob-tucker commented 2 years ago

If it's okay, I have a clarifying question @deayora to make sure we deliver as expected.

The proposal mentions that users should be able to learn how to upload their metadata to IPFS, and then use that metadata for their NFT collection, as mentioned here: a.) Learn how to upload their assets and metadata to a service like IPFS; and b.) Upload the metadata for their NFT collection.

There are many ways to create an NFT Collection, but most popularly is "generative art" where a user uploads like 500 images, names, and descriptions for their NFTs, and each one of those bundles is tied to a certain NFT ID. For example, NFT with ID #0 is mapped to the first image with name X and description Y, and ID #1 is mapped to the second image with name N and description M, etc.

Thus, our imagined end-user workflow is this:

  1. User has a bunch of images, names, descriptions, etc for their NFTs in a folder
  2. Uploads all of those to IPFS through our webpage
  3. Uses the produced IPFS link to be passed into the collection and used for the NFT metadata

Is this the sort of functionality you were picturing for this bounty? I believe this is how https://721.so does it.

Thank you!

deayora commented 2 years ago

@jacob-tucker This workflow is awesome and sounds great - some small notes/thoughts πŸ”₯

Let me know any further thoughts or questions 🀸

Andreandi commented 2 years ago

will this be project no.1 in the future

jacob-tucker commented 2 years ago

@deayora That sounds great, thank you <3

One more question I have for you: The bounty mentions creating the collections for the NFTs, which means our website will have to support people creating their own NFT collections. We are currently working on this right now. This means we don't have to include a page where users actually mint those NFTs from a collection, is this correct? The collection creator will handle this on their own.

Thanks again :)

deayora commented 2 years ago

@jacob-tucker missed this somehow! apologies :) sounds correct!

jacob-tucker commented 2 years ago

@deayora @zikewu I have some updaaaaates! :D :D

We are submitting just for Milestone #2 right now. We have the frontend clickable prototype: https://token-minter-kr7ibrjw1-emerald-dao.vercel.app/

It has both the guide and the collection generator. These are just prototypes and not finalized, but shows anticipated user workflow. Let us know what you think!

zikewu commented 2 years ago

@jacob-tucker WOAH the prototype looks Awesome!!! I sent the prototype to DC team for review. Will get back to you next week!

deayora commented 2 years ago

Good morning! Apologies for delay here @jacob-tucker and team :) This prototype is looking really awesome. We have some fine-tuning details that we believe will help from a usability and product standpoint.

deayora commented 2 years ago

Really love the addition of Spanish to the user guide section. Are you planning to translate the collection generator section as well?

Same with the Discord Management Tool: We're eager to see the completed descriptions of the features on the main page in order to consider the front-end complete. In those descriptions, we especially want to make sure people understand what they're creating and how -- from landing page, to collection generator to user guide. Let us know if you have any questions there....

Thanks again - and as always - awesome work!

jacob-tucker commented 2 years ago

Hello there @deayora ! Apologies for the delay in response, we have been working very hard on trying to handle asset uploading to show a proper demo for our project :)

Milestone #2 (Ready for Review) We have taken all of your suggestions into account and implemented them, you can see them here: https://token-minter-sand.vercel.app/

At the moment we do not have translations for the collection generator part, however we will likely include translations for the extra part of this bounty. We actually have over 10 languages for our educational part already and are working on getting them on the demo.

Also, we have written descriptions on the front page in hopes of completing Milestone #2.

As always, thank you very much for the feedback, and let us know if we can fix anything else to complete Milestone #2! :D

Milestone #3 (Not Ready for Review) We have made significant progress for Milestone #3. So far, we have completed all the necessary steps to actually completing the process of the NFT Collection creation except for the actual uploading of the IPFS assets. Once we complete that, we'll be ready for Milestone #3 review.

Unrelated to the Bounty Even though this isn't a part of the bounty, we have decided to include a page to actually "Mint" NFTs from created collections! We will automatically set up a minting page for users to handle primary sales of their collections.

markedconfidential commented 2 years ago

@jacob-tucker Great progress on this so far! One quick note from me -- is there an existing tutorial the team meant to link to for the IPFS Token, or is that something that still needs to be drafted?

jacob-tucker commented 2 years ago

Hey @markedconfidential , yes that is still under development. Once we have ironed out the upload to IPFS step we will have that ready

zikewu commented 2 years ago

Hello @jacob-tucker ! Just a friendly reminder: phase 2 completion is still blocked by providing an IPFS Token and the tutorial on how to get that 😎

jacob-tucker commented 2 years ago

Hey there @zikewu , we have successfully completed the IPFS stage: https://token-minter-sand.vercel.app/

In order to test the asset uploading to IPFS, you an use these example files: Collection Data: https://github.com/emerald-dao/token-minter/blob/main/assets/set1_clean.csv Collection Images: https://github.com/emerald-dao/token-minter/tree/main/assets/set1_clean

Right now, the process works all the way through contract deployment. In fact, if you deploy to testnet, you will see the contract in your account.

The last step is to finalize uploading assets to the contract itself. This is trickier but we have most of it completed already. We have an example page to show you how users will upload assets to the contract once you deploy the contract. However, we are still finalizing this step. Once it is done, the platform will be ready to go! πŸ₯³

zikewu commented 2 years ago

Awesome progress @jacob-tucker ! Looking forward to the update on uploading assets to the contract! πŸ™Œ

jacob-tucker commented 2 years ago

New Updates!

We have almost completed uploading assets to the contract. Right now, if you deploy the contract after following the steps above, you will be taken to an "Upload Metadata" stage. If you click the first button which upload from 0-499, it will successfully upload all of your assets. Will finalize this step soon.

We are also really happy to say that we have included a whole section to perform primary sales of your collection. We set up a buyers page automatically for the user. Here is an example of that: https://token-minter-sand.vercel.app/0x6c0d53c676256e8c/HatsNFT11

(some images are broken, but the general idea is there). We have also implemented purchasing directly from that page.

jacob-tucker commented 2 years ago

Hello once again!

We have completed the functionality of the upload metadata to contract stage. Most of the platform is now completed!

https://touchstone.city/

We are finalizing some other things to get the platform ready for production. Here are those things: πŸ•š A way to show error on the Upload Metadata step if an error happens πŸ•š A way to show all the uploading has been completed πŸ•š A way to view NFT metadata when you click on it on the collection page (unrelated to this bounty) πŸ•š I will make a youtube video as a guide for Token Minter and put it in the Guide

Will keep you updated as we make the final steps to greatness

markedconfidential commented 2 years ago

@jacob-tucker Great progress! Quick Q - am trying to complete a run-through but am running into an error with my CSV file no matter how I format it. Any pointers on what I might be overlooking?

metadata.csv .

jacob-tucker commented 2 years ago

@markedconfidential Sorry about that! We just fixed that up.

If curious, the reason was because the csv file had an empty line at the end, so it thought it was reading a mal-formed piece of metadata. But we've accounted for this scenario now :)

deayora commented 2 years ago

@jacob-tucker hello! I'm currently trying to upload my csv and having some issues doing it successfully. Is there a required format for the required fields?

jacob-tucker commented 2 years ago

Hi @deayora !

The CSV we have been using to test are here: https://github.com/emerald-dao/token-minter/blob/main/assets/set1_clean.csv And here's a longer version of it we are also using to test: https://github.com/emerald-dao/token-minter/blob/main/assets/set2_clean.csv

We also tested @markedconfidential 's CSV above, which lives here: https://github.com/emerald-dao/token-minter/blob/main/assets/dc_test.csv

Following the format of those CSVs is probably best. If you want to make your own, the only requirements are that you have a name, description, and image attribute. This tutorial may help better describe as well: https://www.touchstone.city/guide/en/token-minter#upload-assets

deayora commented 2 years ago

Awesome - Thank you! Looking now :)

deayora commented 2 years ago

Awesome - Got it to work :) Going through the rest of the flow now - a few small product suggestions that could be really valuable to the user (and alleviate the risk of them thinking something is a bug vs. user error/need).

Screen Shot 2022-08-08 at 1 24 16 PM

Will get back shortly on completing the process and with any further Qs. Thanks!

jacob-tucker commented 2 years ago

@deayora Great! We will make sure to incorporate these changes. As always, let us know any other feedback you may have. Cheers!

jacob-tucker commented 2 years ago

@deayora @markedconfidential Hello! We are a few weeks away from launching Touchstone out into the public. Wanted to catch up on the status of this bounty so we can get some funds to the team working on this, as we haven't reached Milestone #2 yet.

If there's anything we can do to progress further, just let us know :) Thanks a bunch

deayora commented 2 years ago

Going through https://token-minter-kr7ibrjw1-emerald-dao.vercel.app/ again:

Homepage

Collection Generator:

NFT Generator

Once we get these things in place and can review the full flows, we can call #2 complete. Excited for it! Reach out with any other questions. Thanks!

jacob-tucker commented 2 years ago

Oh, sorry about that @deayora ! That is totally my fault. All of our updates are actually at https://touchstone.city/

That other link is very old, sorry to make you go through that!

That being said, I have tweaked some things (like changing Collection Generator -> Contract Generator). I believe the only remaining thing is adding a bit more description to the Upload Step. But we do have a whole guide on that here https://www.touchstone.city/guide/en/token-minter since it is hard to describe all those details during the process

deayora commented 2 years ago

Happens - no worries :) Will check it out now ~

deayora commented 2 years ago

I'm getting an error that my CSV and images do not match. I have created the "names" and then Under "image" I have file name (ie jpeg.jpeg). Any advice on what might be going wrong here?

Screen Shot 2022-09-07 at 12 39 14 PM Screen Shot 2022-09-07 at 12 39 20 PM Screen Shot 2022-09-07 at 12 39 27 PM

jacob-tucker commented 2 years ago

Hey there @deayora ! Do you mind sending the files you're trying to use so I can try them out on my end?

deayora commented 2 years ago

Absolutely - Attached! And FTR: Trying to go through flow as "ignorantly" as possible - like if I'm a user who knows nothing/googles nothing, can I be successful πŸ”₯ So I'm sure this is on user-error side, but hoping it reveals some further tweaks/language we can add.

metadata - Sheet1 (2).csv _126616317_gettyimages-1421111868 image merlin_212474157_3d9ced27-e576-4343-aab9-3cfa8e88e257-videoSixteenByNine3000 WireAP_fb18d9e6a955476a92f240f7f9b3f2ce_16x9_992

jacob-tucker commented 2 years ago

Hahahha I love the images - AND HARRY STYLES! Testing these now, will report back.

jacob-tucker commented 2 years ago

@deayora I just gave these a go, and weirdly enough it actually worked first try. What I did was take all the image file names and copy them into the metadata sheet. I will try to play around with it to see if I can produce an error when it shouldn't

deayora commented 2 years ago

<3 Harry :)

@jacob-tucker can you reshare the metadata sheet you used so I can see as reference where mine may have been off? I think regardless, taking the hand-holding approach of giving the user as much information as possible about the types of images they can upload and exactly how to fill out that metadata sheet the better (visual examples, written help, etc.). We know that will be the hardest step for people.

jacob-tucker commented 2 years ago

Sure thing! The file I used is below. metadata.-.Sheet1.2.csv

I am also adding some helpful error messages to the user to show what match isn't matching correctly

deayora commented 2 years ago

Sounds good - To description/how-to, clarifying that they should add "headers" to each column (oogle drname description image serial), what those should be, and any "exact" info required and where to pull that from - ie image = file names.

I think with those additions, we'll be good to check out again and give green light pending anything else that may come up! Very exciting!!! Almost there πŸ”₯

jacob-tucker commented 2 years ago

Hi there @deayora

One of the things we have been trying to avoid is cluttering the Contract Generator step since it will seem like a stressful experience. Instead, we encourage users to check out our User Guide first which has a detailed walkthrough of the process. Is it okay if we leave the explanations and examples to a separate User Guide, or do you think it is essential to have all in the same step? Either way, we will make it happen πŸ‘

jacob-tucker commented 1 year ago

Hi @deayora @markedconfidential , just checking in

Curiosity-Flow commented 1 year ago

@deayora @markedconfidential

Hello,

I'm one of the translators that participated in the bounty for Emeraldy City. All of the content for Touchstone is completely translated to correct and beautiful Spanish.

I delivered 3/4 of the translations back on May. And translators needed to wait to translate the last section, since it was still being built out by the developers.

I translated and delivered the last section back on September to @jacob-tucker .

When will the bounty funds be finally released to us? The wait has just been overwhelming for me as a translator, since translations are fairly quick to finish (a couple of weeks at most), yet we must wait months until the whole project is done to be paid.

I look forward to your response!

markedconfidential commented 1 year ago

@jacob-tucker Hey Jacob, pardon the delayed reply here. After further review, I think I understand where you're coming from RE: the Contract Generator, so as long as you feel you're sufficiently pushing users to review the User Guide before moving forward, I think we're in a solid place.

Curiosity-Flow commented 1 year ago

@markedconfidential @deayora @Andreandi @zikewu @jacob-tucker

Can someone from Dapper please answer my question above?

zikewu commented 1 year ago

Hello @Curiosity-Flow, thank you for providing the beautiful translation on Touchstone! We are close to phase 2 front-end completion. Once it's approved we will transfer the 25% payment. In the meantime I'll coordinate with Emerald City and check if there is anyway we can prioritize the payment to translators. Thank you! πŸ™Œ

Curiosity-Flow commented 1 year ago

@zikewu

Thank YOU for answering! And yes please about prioritizing the payment to translators. I can only speak for myself: my translation is 100% completed in Spanish and I shared the files with @jacob-tucker (as mentioned before).

I'll stay tuned on this page about any updates and progress on this. Thank you again!

jacob-tucker commented 1 year ago

Hey @zikewu , thank you for the updates.

If Milestone #2 is complete, that's awesome! Please let us know if there's anything we need to do to complete Milestone #3. I believe this is the code review step, and all the code can be found here: https://github.com/emerald-dao/token-minter

In the meantime, assuming the additional translation bounty is approved, we can prioritize distributing these payments. Thank you