Inspiration
Mainstream content platforms and established payment processors often impose restrictive policies and payment issues that disproportionately affect adult creators, especially those in niche communities. We were inspired to create Ruff as a decentralized alternative, specifically for the LGBTQ+ and Furry communities, who deserve a platform that is censorship-resistant and provides direct, transparent monetization. By leveraging cryptocurrency, we aim to empower creators, giving them full control over their content and earnings without relying on traditional banking systems.
What it does
Ruff is a decentralized adult content platform built on the Algorand blockchain.
- Wallet-Based Identity: Users connect with their Algorand wallet (like Pera or Defly) for secure, password-free authentication.
- Crystal Economy: Fans can purchase an in-platform currency, "Crystals," using ALGO. These Crystals are used to unlock premium posts or subscribe to creators.
- Tiered Content Access: Creators can set different access levels for their posts:
- Public: Free for everyone.
- Subscribers-only: For paying subscribers.
- Premium: Pay-per-view using Crystals.
- Social Features: The platform includes familiar social interactions like following creators, liking posts, and commenting.
How we built it
Ruff is built on a modern, hybrid Web3 stack:
- Frontend: A responsive single-page application built with React, Vite, TypeScript, and styled with TailwindCSS.
- Blockchain Integration: We used the Algorand blockchain (currently on TestNet) for all payment transactions. Wallet connectivity is seamlessly handled by
@txnlab/use-wallet-react, providing a smooth user experience for connecting and signing transactions. - Backend & Database: We chose Supabase for our backend to manage user profiles, post data, comments, and transaction records. We utilized Supabase's PostgreSQL database and RPC functions to bridge on-chain events with our off-chain application state.
Challenges we ran into
One of the primary challenges was designing a seamless user experience that bridges the Web2 and Web3 worlds. Creating an intuitive flow for purchasing Crystals with ALGO—from transaction creation, to wallet signing, to waiting for blockchain confirmation, and finally updating the user's balance in our Supabase backend—required careful state management and clear user feedback.
Another challenge was architecting the multi-tiered content access system. Ensuring that access rules for public, subscriber, and premium content were correctly applied based on a user's on-chain and off-chain status was a complex integration task.
Accomplishments that we're proud of
We are particularly proud of implementing a fully functional, end-to-end payment flow on the Algorand TestNet. Users can connect a real wallet, use TestNet ALGO from a faucet, purchase Crystals, and see their balance update, with every payment being a verifiable on-chain transaction.
We're also proud of the robust component-based architecture we built with React and TypeScript, which makes the platform modular and easy to extend. The UI for creating posts with different access levels and the modal for purchasing Crystals are key accomplishments that make the platform's core concept tangible.
What we learned
This project was a deep dive into the practicalities of building a dApp. We learned how to use the Algorand SDK to construct and submit transactions from a web application. We gained significant experience in managing complex, asynchronous state, especially when waiting for blockchain events. Most importantly, we learned how to design a hybrid system that leverages the strengths of a traditional backend like Supabase for speed and flexibility, while using a blockchain for the critical components of identity and value transfer.
What's next for Ruff
Our roadmap is focused on evolving Ruff from a proof-of-concept to a fully-featured, secure platform:
Transition to MainNet: After thorough testing and security audits, we plan to move all transactions to the Algorand MainNet.
Full Subscription Model: Implement the full logic for paid monthly subscriptions, allowing creators to set their own prices in Crystals.
Enhanced Creator Tools: Build out the creator dashboard with analytics on post performance, earnings tracking, and follower management.
Security Hardening: Conduct a full security review, particularly on the interactions between our Supabase backend and on-chain payment verification, to ensure all transactions are validated server-side.
Community & Social Features: Add more social features like direct messaging, notifications, and improved discovery feeds to foster a stronger community on the platform.
IPFS for Decentralized Content: To become truly decentralized, we will integrate IPFS (InterPlanetary File System) for hosting all media. Instead of linking to a central server, creators' content will be stored on a distributed network, making it censorship-resistant and removing single points of failure.
** Use NFTs for Subscriptions (More Programmable Assets) & Turn "Crystals" into a True On-Chain Asset (To Add Programmable Digital Assets) :** Create an Algorand Standard Asset (ASA) called "Crystal" (e.g., $CRSTL). and When a user subscribes to a creator, mint a unique NFT for them that signifies their subscription.
Built With
- algorand
- javascript
- supabase
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.