Closed naomiHauret closed 1 year ago
Our current challenges we are working on are the following:
We are still in the alpha phase, but we have several ideas for additional features to improve our platform. In the coming months, we hope to secure grants to help us achieve these goals:
TLDR
Rally is an open-source alternative to Clubhouse and Twitter Space for Web3 communities. Our goal is to create an easy and fun to use application that respects privacy, data ownership and require the bare minimum from users to onboard them.
During this hackathon, we worked on the following features:
We also started to work on the following feature, but couldn't finish on time :
We had the following ideas but didn't have the time to start working on them :
Our front-end https://alpha.letsrally.fm Our subgraph https://api.thegraph.com/subgraphs/name/timotejgerzelj/rallysubgraph Our verified smart contract, published on Mumbai: 0x584b082236a826e7b519aC88958331e8DB34eC8B User flows https://www.figma.com/file/SkQYC9s1vLeTQJRueWxCL9/Untitled?node-id=0%3A1&t=xVtPnITGOHuUEeqo-1
Subgraphs we are using : Uniswap V3 & Messari (Uniswap V3) to resolve ERC20 tokens https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3 https://api.thegraph.com/subgraphs/name/messari/uniswap-v3-polygon
Unlock to resolve locks https://api.thegraph.com/subgraphs/name/unlock-protocol/mainnet-v2 https://api.thegraph.com/subgraphs/name/unlock-protocol/polygon-v2
NFTPort API endpoints we are using :
ENS Resolver
Lens Protocol features we support :
We are Rally, a team of two developers based in Slovenia. We set out to address the shortcomings of current social audio apps, such as Clubhouse, Twitter Space, Zoom, and Discord.
Currently, there is no easy-to-use app that allows users to easily find, create, and monetize audio room/content without either:
To solve those issues, we decided to create Rally, an open-source social audio app designed for web3 communities. Our goal is to connect web2 and web3 technologies to create a social audio app that respects data ownership and privacy while offering the most seamless and user-friendly experience possible.
For this hackathon, we worked with the following technologies and protocols :
During this hackathon, we worked on the following features:
We also started to work on the following feature, but couldn't finish on time :
We had the following ideas but didn't have the time to start working on them :
You'll find below a detailed thread on Rally's features and what we implemented during this hackathon, as well as numerous screenshots that will show you the flow and UI.
Our website is live at : https://alpha.letsrally.fm
1. Connect wallet
The first thing to do on Rally is to connect your wallet - not just for the sake of it, but because your wallet and on-chain identity will be used to recommend content that match your interests and grant you access to specific content (audio rooms/recordings).
We implemented Sign in with Ethereum + Sign in with Lens ; SIWE is used in combination with Guild to grant access to audio rooms, and Sign in With Lens unlocks features related to the user's social graph (follow/unfollow for instance).
2. Search and retrieve content
Some of the biggest pain points in current social audio apps is the difficulty to easily find recordings/and or rooms matching your interests.
Our attempt to tackle down this issue in Rally relies on Polygon, The Graph and Lens Protocol :
3. Creating a rally
All users can create a rally by using our smart contract (deployed on Mumbai).
We decided to rely on a blockchain based solution to manage the state of our audio rooms (called rallies) in order to have a single source of truth for all audio rooms. This ensure the state integrity of the audio room (if the creator has a sudden bad network, the room won't close - it needs manual input) and censorship-resistance (only the rally creator can close the room).
We decided to use Polygon as it offers low-fees and is going carbon-neutral, but also because of the great efforts Polygon is making to bridge the gap between web2 and web3.
Back to the rally creation - the user just needs to input the typical data for an event (name, date, category...). The difference between Rally and drop-in audio platforms is that our gated-room feature is powered by Guild, a platformless membership system that allows creators to gate access to their rallies with a very large requirement spectrum, like having certain words in your Twitter bio, interacting with a certain function of a smart contract, etc. This also eases onboarding for users and creators: no need to recreate/rejoin a group, everyone is already there.
Rally also makes it easy to invite co-hosts and speakers: you just need to add the Ethereum address of the co-host/speaker. To ease this process, we crafted every "Input an Ethereum address" fields so that users can search for other people by their Lens handle and their ENS name.
Additionaly, besides token gating, creators can also set-up who can access their rallies by deciding to index it or not. As mentioned before, indexed rallies appear in multiple pages (home page, search pages, upcoming pages, profile pages ...), which is why we offer the option of keeping a rally "unindexed" (it will still be accessible by anyone that has a link, and will be accessible by the creator from their dashboard).
Once the creator is ready, they just need to click on the "Create Rally" button, which will upload the rally metadata to IPFS and create the rally on chain.
4. Dashboard & rally management
Once a rally was created, it will be displayed in the creator's dashboard. From there, they can decide to :
5. Join a rally and interact
Once a rally is created, its creator needs to "open" it. This is done by signing an on chain transaction which will change the rally status and make it possible for other people to join it. Depending on the gating conditions and the maximum of people allowed in the room, other users will be able to join the room. Before that, they can configure their room identity by picking their Lens profile, their ENS, or to customize their display name and avatar. Other users in the room will still be allowed to view each others on-chain identity by clicking on each participants avatar (just like Clubhouse or Twitter Space).
Once a user joins a rally, they get one of those 3 roles:
The rally creator and other co-hosts can grant speaking privileges to audience members, and all audience members can require to join the stage by raising their hand: then, it's up to the creator and their co-hosts to grant them speaking privileges or not. When joining the stage, users need to activate their microphone - the UI indicates whether they are muted or not, and also indicates when someone is speaking.
In addition of granting speaking privileges, the creator and their co-hosts can revoke this privilege, as well as also kick out permanently a participant from this rally. Beside raising their hands, all participants can also react using an emoji.
To approach the Clubhouse/Twitter Space user experience, we crafted the audio room to be "portable" : users are free to continue navigating Rally and change page while chatting. They can easily go back to the room page from the toolbar. We also added a "help" modal that details all the icons on the toolbar and their effects.
6. Recording a rally
If the user enabled the "Enable recording" option when they created their rally, they will be able to activate the "Recording" feature. Only the creator can record the room via Rally. The audio tracks of all users will be combined in a single
.ogg
file that the creator will be able to download afterwards.To record a room, the creator just need to click on "Manage live", and click on "Start recording". Once they are done, they go back to the "Manage live" menu and click on "Stop recording".
Room recordings are done through Livekit, and all recordings are saved on a StorJ bucket. From the dashboards, users can easily display, listen and download to their recordings. We give users 3 days to download their recordings before deleting them.
7. Closing a rally
The creator can decide to close their rally whenever they want ; but before that, all users can freely decide to leave the rally by clicking the "Leave quietly" button in the toolbar.
Closing the rally will trigger a transaction in the creator's wallet. When successful, any ongoing recording is stopped, the room is destroyed, and the user is redirected to their dashboard.
8. Publishing a recording
Creators can attach a recording to their rally so that other users can listen to it later. To do so, they just need to click on "Publish recording" or "Update recording" from their dashboard.
In the "Publish recording page", the creator will first need to activate Bundlr, the storage solution we use for recordings. Once this is done, the user just needs to add their file, and add other information about their recording.
If they wish too, they can :
Users can gate their access with :
If the creator wants to, they can also cross-share their recordings to Lens : they just need to enable the option and complete the different Lens modules to configure who can view, access and and interact with their publication.
Both the recording file and its metadata file are uploaded to Bundlr ; if the user opted-in to gate access to their recording, the metadata file will be encrypted with Lit protocol before being uploaded. To create the recording, the user will need to sign a couple of messages in their wallet :
To reduce the amount of interactions needed with the wallet, we use Lens dispatcher to publish gasless transactions.
If the user enabled sharing on Lens, they'll be able to see their publications on other applications that support Lens, like Lenster.
9. Lens publication / Interacting with a recording
If a creator shared their recording on Lens, they will be able to unlock a comment/collect/mirror section on the rally page. Both the publication and the comment will also render as a timestamp that will make jumping to a specific moment of the recording very simple (like Youtube comments).
Only users which wallet meet the requirements specified by the creator of the recording will be able to interact with it.
![
10. Interacting with a recording / Lit Protocol
As mentioned before, creators can gate the access to their recordings so that only specific people can listen to it. When a recording is encrypted, a "Decrypt" button is displayed, and only a signature done from an eligible wallet with decrypt the recording metadata file.
Rally uses Lens as its decentralized social graph to make interoperabiltity and onboarding easier: other content creators are already there, along with their content. Rally supports decrypting Lens publications, and display videos in Livepeer player.