Open 0xys opened 2 years ago
I have been a Cadence code developer since the beginning and have developed various tools for the Flow Dev Community. I believe that we can develop a better tool that satisfies the desired requirements.
Hey @avcdsld and @0xys thanks for submitting the PRD. Your previous batch transfer tool looks awesome! Dapper Collectives' engineering team will review your PRD and get back to you in the next 1-2 weeks.
Hello @avcdsld and @0xys! Thank you for your patience while we reviewed your proposal for the Batch Transfer Tool.
After careful review, the Dapper Collectives team has decided that your proposal for this bounty is compelling and we'd like to request a couple of refinements to the proposal in order to evaluate moving forward:
Front-End Engineering Support
According to your proposal, there is a single developer working on the bounty with you. They're listed as a 'crypto engineer', can you clarify whether or not they are able to also handle front-end engineering work that the project requires? Alternatively, you may choose to bring on a front-end engineer to support you.
UI Design Support from Dapper Collectives
In the spirit of collaborating with our bounty partners, we'd like to offer input on the user interface design and user experience for the the Batch Transfer Tool in order to ensure it is as accessible and easy-to-use as possible. Please confirm that this is acceptable to your team— we can decide at a later date if this input should take the form of a brief call, asynchronous notes on UI designs, or some other format.
Feel free to ask any clarifying questions about this feedback! We look forward to your response. Pending review of your response to the feedback, we will wrap up any further questions and aim to approve awarding the bounty to your team.
Thank you for giving us the feedback! Happy to hear that our proposal has been accepted and we can contribute to further development of Flow ecosystem.
Maybe our job titles are misleading. @avcdsld is an experienced developer in frontend, particularly Next.js. And I (@0xys) also have a fair experience of frontend. So, we can manage the frontend development on our own with @avcdsld taking a lead.
Definitely welcome more people engaging in brushing up UI designs, which is core to our project.
Thank you again and hope to work with you all.
@0xys @avcdsld Thank you for your thoughtful responses! On behalf of the Dapper Collectives team, I'm excited to announce that we'd like to award this bounty to the FlowJP team!
With the initial milestone complete, @zikewu will be reaching out with details on next steps soon. Looking forward to collaborating together with you!
Congrats again @0xys @avcdsld !!! Can you guys give me your email contact so I can send over the payment details?
These are our emails addresses. Please, have a look.
@markedconfidential @zikewu It's been a little while, but we have created a front-end prototype. It is now working on testnet.
Demo site: https://batch-token-transfer-tool.vercel.app/
We are still implementing some features such as validation, csv upload and custom token. But the rough front design is complete. We would appreciate your feedback. If you have a logo, UI design, etc. that you prefer, we can change it.
@avcdsld upon first click - it's looking amazing! the team and I are going to review this tomorrow and get back notes hopefully by end of week. Awesome work :)
@avcdsld Hello hello! We've reviewed the prototype and are very happy to report that we can consider the 2nd milestone complete!
From our initial check, all of the basic product requirements are in order.
Please note that we will likely contribute updates to the front-end design before the launch of this tool, but we are not expecting your team to handle that specific work as it is out of scope for the bounty.
Next steps:
@zikewu Please coordinate with the team on details regarding payment for the 2nd milestone!
Hi, @markedconfidential @zikewu Thanks and happy to hear we're moving to 3rd phase!
As we get closer to fixing the product design, I want to share one concern over how to handle custom fungible token.
Unlike Ethereum, Flow users can't just send custom token to any accounts. To send token, the receivers must have allocated in their account storage a specific "receiver module" to each receiving token type. This "receiver module" is called "vault" in Flow term. Flow token doesn't need this vault since it's native token. But, any types of user-defined fungible token require this vault module to be present in the accounts interacting with the token. Remember each type of token requires its own type of vault, so n vaults are needed if you want to have n different tokens in your account. For this Flow-specific technical reason comes the unique ceremony when people use custom token: They create a vault before receiving new token.
Finally, speaking of our batch transfer tool, how should we handle token transfers that destined to accounts who don't own the vaults for that token? We came up with the following possible solutions:
I want to hear from you which one of solutions is the closest to the ideal final product?
@0xys Hello! We are doing some research to determine what the best plan of action is for this challenge; thank you for highlighting it. Hoping to get back to you this week with a clear direction to move forward in.
@0xys Hello! After discussing with the Dapper team, we've ascertained that the recommended best practice is to avoid the temporary contract approach and instead assume that Senders are going to be alerting Recipients that they need to instantiate the receiver module in their account before receiving funds.
In most scenarios, such as a DAO, this is likely to be a simple message to members of the group. So, for this MVP of a Batch Token Transfer tool, we're comfortable moving forward with the assumption that we're going to allow transactions to fail if the Sender tries to send tokens to an address that hasn't instantiated a receiver module.
In the future, we'll explore ways to make it easier for Receivers to instantiate vaults for common/popular/vetted tokens.
Okay, we'll take the simplest approach as suggested. Thanks for your comment!
@zikewu Please coordinate with the team on details regarding payment for the 2nd milestone!
How do we proceed to payment this time? cc @markedconfidential
@0xys apologies for the delays on milestone 2 payment. I've connected with the team and we will get on that today. Thank you!
@0xys - I have just received word that this will be paid out by end of this week.
@deayora Hey, we haven't received payment yet. How is it going?
@deayora @zikewu @markedconfidential Hi. Haven't received an email about payment yet, but we will continue to develop Phase 3. If we should still wait please let me know.
@deayora @zikewu @markedconfidential Oh.. I just noticed. Five days ago, I'v received an additional FLOW to the address where I received my previous reward. Last time I sent an invoice, but this time I did nothing. I will check to the team for details. Anyway, we will continue to develop. Let’s keep in touch 👍
@deayora @markedconfidential We noticed the payment received five days ago. Sorry for not being aware of it.
We are moving on to phase 3.
Hi @avcdsld and @0xys ! Wanted to check if there is anything I can help facilitate or unblock. Looking forward to moving the bounty to Phase 3 soon!
Hey @avcdsld and @0xys, any update on Phase 3? Still holding my breath here 🤓
@zikewu Sorry for the delay in getting back to you. 🙏
We envision the following development items for phase 3:
These should be completed in the next week or so.
Is there anything else you need?
Hi @avcdsld that sounds great :) Is there anything we can do on our side to help push phase 3 forward, let us know. Always happy to jump into a group chat or on the phone to help unblock development.
@deayora @zikewu cc: @0xys Hi. We have completed the following developments:
- Validation feature (checking for address existence, token vault)
- Mainnet/Testnet switching feature
The demo site and source code are below. Please confirm😃 You can try it on the Mainnet now.
Recently we investigated the Geeft (https://geeft.ecdao.org/) 's contract. If we just send a transaction which call this contract, we will be able to send tokens to accounts that do not have the Vault. We would like to work on this as phase 4. Let me know your thoughts.
Thank you! We will look through this week. Looking forward to it!
Hello @avcdsld @0xys ! We are in process of reviewing the code base. Our team noticed there is no function that checks user has enough $FLOW tokens before transferring. This will create risk for users running out of $FLOW during sending process. Can you make sure the $FLOW token amount is checked before transferring?
Thanks @avcdsld @0xys ! We reviewed the balance validation and the full code base. Happy to announce that Phase 3 for Batch Token Transfer is complete! I'll coordinate the phase 3 payment shortly. @deayora will follow up with phase 4 deployment plan. Ty for the awesome work 🙌
Hi, @zikewu @markedconfidential @deayora
As we finalize our project, we plan to do some miscellaneous tasks.
If you have any features that will improve our final product, please share anything with us here.
Also, we want to choose a good naming of the service, which currently is "Batch Transfer Tool" that is bit boring. We are welcome if you have nice one.
Thanks.
Hello!! Thanks for the above - super exciting!
I met with our designer on Friday and we're going to put together a very light weight frontend design (with service description) that we think will really help the ecosystem capture as much value as possible from this awesome tool. We'll send that over with some product name ideas for your thoughts/feedback by end of week!
Very excited to get this live 🔥
Awesome! Thanks for sharing the idea!
Hi @0xys and @avcdsld - Thanks for allowing us to collaborate on the design and product side. Our speciality! This is an awesome and incredible useful tool you've built - our hope is to get it into as many hands as possible - and with your amazing build and some some design tweaks, we know it can get there. Awesome to work on this together!
We've put together some work based on the requests for:
Potential Names: Raindrop
and Spritz on FLOW
- we thought that because this tool essentially enables a user to drip out funds on Flow, that something evoking water/rain imagery felt apropos. Feel free to use or discard! :)
Designs: I've shared the following designs with your email addresses directly.
As far as adding Japanese and/or Chinese language support/versioning, we think this would be a huge addition helping to make the tool even that more accessible. Is this something your team has the bandwidth to provide translations for? Would be great!
Please let us know if you have any further questions!
Thanks for great design!!
We'll create frontend page based on this. And as for translation, we have Chinese and Japanese collaborators who help us.
Thanks
Awesome - Sounds great 🚀
@deayora @zikewu Thanks for providing a great design. We have updated UI significantly. You can check out the new screens here. Feedback would be very helpful. https://batch-token-transfer-tool.vercel.app/?network=testnet
As for the remaining work, we are going to add multi languages support. We need to put a button somewhere to switch languages. Do you have a design proposal for this?
We have also implemented languages switching feature (still working on some translations) We would appreciate feedback on the UI.
@avcdsld it looks amazing :) I just ran through the flow on Testnet successfully.
To wrap up milestone #4:
In testing, we noticed that when user inputs for transfer, it says "balance after transfer shows NaN" instead of remaining wallet balance before user hits "send tokens"
We think it would be helpful to use a vanity URL (example: www.raindroponflow.com) to get away from vercel link? Thoughts?
Would your team like to manage the official deployment of Raindrop or would you like to hand code over to Dapper Collectives? We had previously said our team would handle, but that was before permisionless deployment. We would love for the FlowJP team to own this, but it is your choice.
We would like to give the FlowJP team credit for this amazing product in our official communications. What is the best way to tag your team (Twitter, Github, Discord) and do you have an official website and/or any new projects you're working on that you'd like us to shoutout?
@deayora Sorry for the late reply.
- "balance after transfer shows NaN"
Thanks for reporting the bug! It has been fixed.
- We think it would be helpful to use a vanity URL (example: www.raindroponflow.com) to get away from vercel link? Thoughts?
Yes, I totally agree with you. We have acquired the domain and the following URL is live! https://www.raindroponflow.com
- We would love for the FlowJP team to own this, but it is your choice.
Yes, we would like to own this and also maintain the hosting environment 😄 This would provide a useful tool for the community and we would be honored to be a part of it.
We would like to give the FlowJP team credit for this amazing product in our official communications. What is the best way to tag your team (Twitter, Github, Discord) and do you have an official website and/or any new projects you're working on that you'd like us to shoutout?
Thank you, Twitter is the best way! It would be great if you could include the following:
@arandoros
@abmushi
@flowbc_jp
Discord: https://discord.com/invite/dSnagSmyds
Currently, there are no other projects in particular. Thank you! :) We are ready to go!
@deayora @zikewu Hi, how is the reviewing process going??
Overview
The Batch Token Transfer Tool allows for a user to easily set up and automate transfers to multiple Flow wallet addresses from a single Flow wallet address. Useful to anyone who manages a community or works with multiple collaborators, this tool saves users the time required to initiate transfers individually to large groups of people.
Team
Architecture and Technology
User Experience
Maintainance Plan
Past Project
We have already created the batch transfer tool to distribute bounties to the event participants.
Misc
This document is also shared in google doc: https://docs.google.com/document/d/1ZZgFD7otoFZkJv_xrvpaz4g2JMsT130NXCw-l2PRM5g/edit?usp=sharing