Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BOUNTY] Build dApp of Your Choice Using Waku (Decentralized Communication) and Next.JS #13

Open
fryorcraken opened this issue Aug 30, 2023 · 23 comments
Assignees
Labels
open Can be picked up by a hacker

Comments

@fryorcraken
Copy link
Contributor

Context

Waku Is Uncompromising Web3 Communication at Scale.
A family of robust, censorship-resistant communication protocols, designed to enable privacy-focused messaging for web3 apps.

The JavaScript implementation of Waku, js-waku, enables web apps to utilize the Waku network for off-chain message transmission.

Disclaimer: Waku is experimental, you may find blocking issues while developing your web app. We will prioritize their resolution to unblock you, which means you may have to pause development until done.
Thank you for your patience and understanding.

Your participation in this bounty is subject to your acceptance of our terms and conditions.
Please see https://github.com/waku-org/bounties#applying-for-a-bounty for details.

Rewards

1000 DAI

Timeframe to Completion

Once the application is approved, the result must be submitted within 30 days.

Application Evaluation

To ensure you are selected for this bounty, provide the following information:

  • Describe the approach you will take to tackle the bounty.
  • A timeline within which you expect to deliver the bounty.
  • Any previous relevant work you have done.

This bounty specifies 3 deliverables, all needed to consider the bounty complete. Partial delivery of the bounty will not make you eligible for the prize. The deliverables are:

  1. A simple web app written using Next.JS
  2. A post on your blog to guide a reader through building the web app.
  3. A tweet thread explaining how your web app works and leverages Waku for private, decentralized communications.

The bounty aims to inspire developers to build applications using Waku. This is why the web app's nature is up to the hacker. However, to push for creative use of Waku, we will not accept chat apps or chat features using Waku.

Impact

The web ecosystem has a number of frameworks that each have different pre-configured bundler.
To ensure a smooth dev ex for all web developer, it is best to not only test @waku/sdk against the last version of each framework but also provide examples on how @waku/sdk can be used with concepts unique of said framework.
It is difficult to have expert of all frameworks in a team, so best to outsource this to the community.

Deliverables

(1) Web App

Build a web app using Next.JS.

Acceptance Criteria

You must fulfil all the criteria below to consider the bounty valid:

  • Must use best and idiomatic practices for Next.JS.
  • Must use the latest stable version of Next.JS and @waku/sdk
  • Must be a frontend only, browser web app (no backend, no NodeJS, no SSR, no lambda function otherwise it's not decentralized).
  • Must not be a chat app or use Waku for chat messages. Be creative!
  • Must use Waku for a core communication feature.
  • The web app must be deployed on IPFS or permissionless decentralized storage solutions.
  • In addition to that, you are free to host the website on a web server of your choice, such as GitHub pages (not mandatory)
  • All code must be licensed under MIT+Apache2.0.

Please describe your idea as part of the application to ensure your submission will fulfil the criteria.

We may add high-quality submissions to our example repo.

(2) Blogpost

Write a blog guide that takes a reader through building your web app.
The reader should be able to build a working web app by following your guide.

We recommend building a simple web app to make the guide easy to write and read.

The blog post must be licensed under CC0.

High-quality guides maybe be edited and added to the Waku docs at https://docs.waku.org/.

Acceptance Criteria

We prefer moderate-length articles, ideally between 1500 to 3000 words (excluding code). While not mandatory, we strongly encourage you to adhere to this guideline.

When relevant, reference concepts and definitions from our documentation (https://docs.waku.org) and provide a link to our community (https://docs.waku.org/community) for additional assistance.

Avoid submitting articles you have already published or have a high plagiarism score to existing ones.

(3) Twitter thread

Post a Twitter thread from your Twitter account that describes how the web app uses Waku.

For example, if you build a tic-tac-toe game, describe how your web app finds another player using Waku and then exchange the moves over Waku.

Acceptance Criteria

  • The thread must tag the @Waku_org Twitter account.
  • The thread must explain how Waku is enabling this use case/app.

Resources

Learn more about Waku at https://docs.waku.org/.
Join our Discord to get support at https://discord.waku.org/.
Various examples available at https://github.com/waku-org/js-waku-examples/.

@fryorcraken fryorcraken added the open Can be picked up by a hacker label Aug 30, 2023
@b4s36t4
Copy link

b4s36t4 commented Sep 11, 2023

Proposal

Title: Web3 Version of stackoverflow

Title is not yet confirmed though :)

Idea is to build a de-centralized a stackoverflow alternative, where users can ask questions, answer to questions and share questions.

Features
* Shareable question
* Decentralized profile
* Communication powered by Waku

Tech-stack

* Next.js
* Waku-js
* Waku-react

A simple & intuitive design to power the question & answer mechanism using powered by a markdown editor fully developed using next.js

The aim of the project is to build a simple yet powerful code/question sharing platform all powered by decentralization.

For whatever it's needed we're going to use decentralized solutions only itself, like auth etc.

Track-Record

  • Had worked on several open-source projects
  • Had freelancing experience.

Deadline

Expected: 2 Weeks
Buffer: 1 Week.

My Second Proposal 😍

@fryorcraken
Copy link
Contributor Author

Thanks @b4s36t4

I am not sure this would work well over Waku because Waku is focused on ephemeral communication. Whereas stackoverflow is a long-term forum: answers can be used years later.
Which means if no plan for long term storage of the data is done, then questions and answer will be lost after a while.

Also, timely-ness/latency does not seem to be a strong need for such use case. The advantage of using Waku is that you have a live system (you get messages within hundred of ms).

Do you have another idea?

@b4s36t4
Copy link

b4s36t4 commented Sep 14, 2023

IDEA:

Bid on NFT

A Platform to host my NFT's and user can come and bid on my NFT.

The core communication part of this application is bidding, instead of using the existing platforms/centralized platforms to host one NTFs.

With this platform one can enter the Address of NFT collection / NFT and place their bid to buy the NFT.

Approach Diagram:

image

Login with metamask is needed.

@fryorcraken New Idea :)

@fryorcraken
Copy link
Contributor Author

@b4s36t4 great idea. Let's get #1 out of the door first.

@5war00p
Copy link

5war00p commented Sep 26, 2023

@fryorcraken any bounty for Astro.js?

@fryorcraken
Copy link
Contributor Author

@fryorcraken any bounty for Astro.js?

Not in particular (looking at https://stackdiary.com/front-end-frameworks/ )

But I will open the free format bounties soon where one can propose any kind of web application with any framework.

@TouchstoneTheDev
Copy link

TouchstoneTheDev commented Nov 20, 2023

@b4s36t4 is already implementing one. Multiple projects are welcome right @fryorcraken. So i can also start building dapp.
simple:is this bount open ?

@fryorcraken
Copy link
Contributor Author

@b4s36t4 is already implementing one. Multiple projects are welcome right @fryorcraken. So i can also start building dapp. simple:is this bount open ?

@b4s36t4 is alreayd doing a few bounties indeed so very happy to let you have a go.

Please go through the application process

@5war00p
Copy link

5war00p commented Nov 29, 2023

Hey @fryorcraken, even I'm interested to build the Waku use-case in Next.js, either @b4s36t4 idea or I have one in my mind which is an attracts e-commerce DApp ideas to use Waku for communication layer.

My Proposal

Title: Cart syncing with Waku Communication protocols
Description: This idea concentrates for e-commerce DApps, the cart syncing is useful when user had login in several devices or different browsers of same device or different tabs of the same browser.

Flow:
image

Steps:

  • On each login, we will create a new Waku topic with wallet address and the node subscribes to that topic.
  • User can see the list of items and have an option to add them to cart.
  • Add to cart will push this info to the Waku topic.
  • The all receivers (other devices, browsers, tabs) will receive update and re-render the cart list as they've already subscribed to the same waku topic at the time of login.

@fryorcraken
Copy link
Contributor Author

Title: Cart syncing with Waku Communication protocols Description: This idea concentrates for e-commerce DApps, the cart syncing is useful when user had login in several devices or different browsers of same device or different tabs of the same browser.

What kind of ecommerce dapps are you thinking about? would such dapp have a backend, DB, etc? can you point to an example of an ecommerce dapps that is FE only?

@5war00p
Copy link

5war00p commented Nov 29, 2023

You can see couple of related link here:
https://github.com/goldenglorys/decentralized-ecommerce
https://moralis.io/web3-e-commerce-create-a-web3-e-commerce-platform-in-5-steps/

These are not exactly products but people are already into it, and this is a big step to build whole e-commerce on blockchain.

I mean we can also think this off in terms of other goods or services, a web3 job platform, a tokens/NFT market place, etc.
Simply this applies for any kind of market place. Coming to database and backend, yes they might depend on centralised or decentralised services for that, which is up to their requirement. But the job platforms (recruitment sites like https://web3.career/), can depend only Frontend, or any NFT marketplace can only have frontend.

@5war00p
Copy link

5war00p commented Nov 29, 2023

@fryorcraken If we really wanted to mimic the real backend, then we can have a REST API call and have some sort of db.

@b4s36t4
Copy link

b4s36t4 commented Nov 29, 2023

It's a simple use-case, building a synchronous website (doesn't have to e-commerce) using Waku does show the capability of waku.

if I understand the idea correctly, what @5war00p is suggesting is that say we have a e-commerce website where people come and order. Say I have two tabs opened one from one system and other in mobile (or on a different system fully), using waku he want to sync the state of the user's data. Say I add to cart then using waku sync other systems, say I remove the cart item or increase the count of a particular cart item. This is a great use-case if this is that he meant.

@5war00p
Copy link

5war00p commented Nov 29, 2023

Yes exactly thats what I meant @b4s36t4. And I wanted to show this idea in real use-case, so e-commerce is one in that or may be a simple recruiting platform with frontend only as we just wanted to show the usage of Waku.

@5war00p
Copy link

5war00p commented Dec 6, 2023

@fryorcraken Any updates for the comments?

@vpavlin
Copy link
Member

vpavlin commented Dec 8, 2023

I can only assume what @fryorcraken meant when asking about the backend, but then my assumption is - if there already is a backend, why would I sync devices over Waku and not by querying my own backend?

So where Waku could some in, is probably if I have a FE only + on-chain (smart-contracts) marketplace (for simplicity let's assume NFT marketplace where the goods are already on-chain), you don't want to execute TXs to put things into basket. So that's where Waku would make sense to me. On the other hand Waku is ephemeral for the most part, so you cannot rely on it for historical data - i.e. I add a thing to basket and then come back in 2 days on another device and it won't be there, because I cannot reliably query it from Waku.

So if we consider making things privaty (and partially decentralized), where you could leverage Waku in e-commerce is while communicating between FE and BE - i.e. when a user clicks "add to basket" or "submit order", it is not actually an HTTP request to API, but a message published on Waku which is then picked up by the app Backend and stored in DB.

It does not solve decentralization of the backend (you could consider some decentralized DBs etc, but that is probably out of scope of this bounty:) ), but it help with privacy of the users and could potentially decentralize frontend. Questions is whether we could do product listings etc. this way as well (concern might be Waku latency and max message size).

@5war00p
Copy link

5war00p commented Dec 12, 2023

Completely agreed, and it wouldn't be nice for the product listing or maintaining cart (as user expects to save for a while).
I'm thinking to have waku placed in one of the use-cases after visting this site: https://daren.market/ and got these ideas
for the e-commerce something like get notified when the product is available, and report to seller when customers looking for availability of the product, may be a review system so that buyers can notified to review or answer questions of the new customers (we will use db for the each customer orders and subscribe to the topic as user-id something like onesignal user-id and gets notifications).

@vpavlin
Copy link
Member

vpavlin commented Dec 12, 2023

Ah, yes, yeah, I guess some live view of who is looking at particular products might be good idea. Yeah and notifications in general could probably work

@5war00p
Copy link

5war00p commented Dec 12, 2023

In that case, let me know which one among these makes more sense to build. All the ideas circles around notifications.

  1. (For Users)Users can subscribe to the product, and gets updates like its price, availability, QA, reviews etc.
  2. (For Sellers)Sellers get updates regarding users looking for availability of the products or had given reviews or asked a question.

@J0shcodes
Copy link

@fryorcraken Can we implement a smart contract, or does it have to be just a frontend and waku-sdk?

@b4s36t4
Copy link

b4s36t4 commented Jan 9, 2024

@fryorcraken since react-native bounty is at halt (I got delayed and now waku-react-native is deprecated in which I don't know how to move forward), I'm up for this to take on.

@Shivansh2287
Copy link

Proposal
Title: Scribble game for Web3

Plan: Create a web3 version of the Scribble game using Waku. The app will feature chat, and chat stickers during the hinting phase followed by the whiteboard guessing phase.

Timeline: After discussion, it can take around 2-3 weeks keeping a week as a buffer

@gmkung
Copy link

gmkung commented Feb 12, 2024

Proposal
Title: Creating a temporary jury discussion room for Kleros Court cases

Plan: Create ephemeral chat rooms for each Kleros Court case using Waku.

Description and rationale: The Kleros Court is a fully decentralized court system that uses a decentralized and anonymous jury to rule on cases ranging from insurance payouts, DAO governance disputes to data curation.
Each Kleros Court case draws in a certain number of jurors, who have a certain amount of time to deliberate and decide on their vote for the case. As jurors have a significant amount of tokens at stake with each vote, they often want to cross-check their opinion with other jurors before casting their vote.

The Kleros Court currently has an interface for uploading evidence and arguments to the case, but it requires gas to post the information on-chain (i.e. expensive) and is not very suitable for juror 'chit-chat' as jurors who just want to discuss and check things briefly with each other before putting anything onto the perma-web.
There is a currently a Telegram chatroom for this purpose (https://t.me/klerosjuror). However, besides the fact that Telegram is not a decentralized platform, it also requires jurors to know about it and make use of their Telegram account, making it not completely inclusive or private (if they use their everyday TG account for this).
Using Waku to create this chatroom would create a fully decentralized alternative for jurors to casually exchange information and opinions before casting their vote, further increasing the security of the Kleros Court and it's reliance on centralized infrastructure for fringe communication.

Timeline: After discussion and deciding on the vote, it could be completed within a month.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
open Can be picked up by a hacker
Projects
None yet
Development

No branches or pull requests

9 participants