- π Overview
- β¨ Key Features
- ποΈ Architecture
- π οΈ Tech Stack
- π€ Contributing
- π License
Feedana is a decentralized feedback platform that empowers users to collect valuable feedback effortlessly. Built on the Solana blockchain with IPFS for distributed storage, it ensures complete anonymity and censorship resistance while maintaining data integrity.
Create a feedback ecosystem where honest opinions can be shared without fear of retaliation, enabling organizations and individuals to receive authentic insights for continuous improvement.
- No user registration required
- Anonymous feedback submissions
- Privacy-first design philosophy
- Zero personal data collection
- Built on Solana for sub-second transactions
- Real-time feedback updates
- Instant board creation and sharing
- Live feedback counter system
- IPFS for distributed data storage
- Blockchain-based board ownership
- No single point of failure
- Immutable feedback records
- Upvote/downvote feedback submissions
- Simple feedback ranking
- User-driven content rating
- Vote tracking on blockchain
- Archive boards when feedback collection is complete
- Prevent new submissions to archived boards
- Maintain historical feedback data
- Creator-controlled board lifecycle
- Modern, responsive design
- Interactive animations with GSAP
- Glass morphism UI elements
- Mobile-first approach
flowchart TB
subgraph Frontend["Frontend Layer"]
UI[React Application]
Wallet[Solana Wallet Adapter]
end
subgraph Blockchain["Blockchain Layer"]
Solana[Solana Network]
Anchor[Anchor Program]
PDA[Program Derived Accounts]
end
subgraph Storage["Storage Layer"]
IPFS[IPFS Network]
Supabase[Supabase Database]
end
subgraph Services["Services"]
API[Supabase API]
IPFS_Service[IPFS Service]
Anchor_Service[Anchor Service]
end
UI --> Wallet
UI --> API
UI --> IPFS_Service
UI --> Anchor_Service
Wallet --> Anchor
Anchor_Service --> Anchor
API -.->|Board Metadata| Supabase
IPFS_Service -.->|Board Data and Feedbacks| IPFS
Anchor -.->|Transactions| Solana
Anchor -.->|Board Metadata| PDA
sequenceDiagram
participant User
participant Frontend
participant Wallet
participant IPFS
participant Solana
participant Supabase
Note over User, Supabase: Board Creation Flow
User->>Frontend: Create Board
Frontend->>Wallet: Request Connection
Wallet->>Frontend: Wallet Connected
Frontend->>IPFS: Create Board File
IPFS->>Frontend: Board Created
IPFS->>Frontend: IPFS CID
Frontend->>Solana: Add Board Metadata Onchain
Solana->>Frontend: Transaction Successful
Frontend->>Supabase: Store Board Metadata in DB
Supabase->>Frontend: Board Saved
Note over User, Supabase: Feedback Submission Flow
User->>Frontend: Submit Feedback
Frontend->>IPFS: Fetch Board Data
IPFS->>Frontend: Current Data
Frontend->>IPFS: Upload Updated Data
IPFS->>Frontend: New CID
Frontend->>Solana: Update CID Onchain
Solana->>Frontend: Transaction Successful
Frontend->>Supabase: Update Board CID
Supabase->>Frontend: Updated
Note over User, Supabase: Voting Flow
User->>Frontend: Vote on Feedback
Frontend->>IPFS: Fetch Current Data
IPFS->>Frontend: Board Data
Frontend->>IPFS: Upload Data with Votes
IPFS->>Frontend: New CID
Frontend->>Solana: Update CID with Vote
Solana->>Frontend: Vote Recorded
Frontend->>Supabase: Update Board CID
Supabase->>Frontend: Updated
Note over User, Supabase: Board Archival Flow
User->>Frontend: Archive Board
Frontend->>IPFS: Fetch Current Data
IPFS->>Frontend: Board Data
Frontend->>IPFS: Upload Data with is_archived=true
IPFS->>Frontend: New CID
Frontend->>Solana: Archive Board Onchain
Solana->>Frontend: Board Archived
Frontend->>Supabase: Update with New CID
Supabase->>Frontend: Status Updated
Feedana follows a decentralized architecture with three core layers:
- React Application - Modern React 18 with hooks and component-based architecture
- Wallet Integration - Solana wallet adapter for seamless Web3 connectivity
- State Management - Redux Toolkit for global application state
- Solana Network - High-performance blockchain for board ownership and transactions
- Anchor Program - Smart contract framework for program logic
- Program Derived Addresses (PDAs) - Deterministic accounts for board management
The smart contract implements 5 core instructions with comprehensive validation and fee collection:
create_feedback_board
- Initialize new feedback boards with metadata and IPFS integration (Platform fee: 10 lamports)submit_feedback
- Process anonymous feedback submissions and update IPFS storage (Platform fee: 1 lamport)upvote_feedback
- Users can upvote feedback with IPFS updates (Platform fee: 1 lamport)downvote_feedback
- Users can downvote feedback with IPFS updates (Platform fee: 1 lamport)archive_feedback_board
- Creator-only board archival to prevent new interactions while preserving data (No fee)
- Archive Protection: Prevents voting and feedback submission on archived boards
- Creator Authorization: Only board creators can archive their boards
- IPFS Validation: Comprehensive CID format and length validation (32-64 chars, must start with "Qm" or "b")
- Platform Fee Collection: Automatic fee transfer to platform wallet
96fN4Eegj84PaUcyEJrxUztDjo7Q7MySJzV2skLfgchY
- Event Emission: All actions emit blockchain events for tracking and analytics
pub struct FeedbackBoard {
pub creator: Pubkey, // Board creator's wallet address (32 bytes)
pub ipfs_cid: String, // Current IPFS content identifier (4 + up to 64 bytes)
pub board_id: String, // Unique board identifier (4 + up to 28 bytes)
pub is_archived: bool, // Archive status flag (1 byte)
}
The program implements 15 comprehensive error types:
InvalidIpfsCid
- Invalid IPFS CID format validationBoardIdTooLong
- Board ID exceeds maximum lengthEmptyBoardId
/EmptyIpfsCid
- Empty field validationDuplicateFeedbackBoard
- Prevents duplicate board creationInsufficientFunds
- Validates sufficient SOL balanceCreatorCannotSubmit
- Prevents creators from self-feedbackBoardAlreadyArchived
- Duplicate archival preventionCannotSubmitToArchivedBoard
- Archive interaction protectionCannotUpvoteInArchivedBoard
/CannotDownvoteInArchivedBoard
- Archive voting protectionUnauthorizedAccess
- Creator-only action enforcement
FeedbackBoardCreated
- Board initialization trackingFeedbackSubmitted
- Feedback submission loggingFeedbackUpvoted
/FeedbackDownvoted
- Vote tracking with voter identityFeedbackBoardArchived
- Board lifecycle management
- IPFS Network - Distributed storage for feedback data and board content
- Pinata Service - Reliable IPFS pinning for data availability
- Supabase Database - Real-time database for metadata and board indexing
The application integrates these layers through dedicated service modules:
supabaseApi.js
- Database operations and board managementipfsService.js
- IPFS operations for distributed storageanchorService.js
- Solana blockchain interactions
- React 18.2.0 - Modern React with hooks and concurrent features
- Vite - Lightning-fast build tool and dev server
- TailwindCSS - Utility-first CSS framework
- Framer Motion - Smooth animations and transitions
- GSAP - Professional-grade animations
- React Router - Client-side routing
- React Hook Form - Performant forms with easy validation
- Solana Web3.js - Solana blockchain interaction
- Anchor Framework - Solana program development
- Wallet Adapter - Universal wallet connection
- @coral-xyz/anchor - TypeScript client for Anchor programs
- Supabase - PostgreSQL database with real-time subscriptions
- IPFS - Distributed file storage
We welcome contributions from the community! Here's how you can help:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Follow existing code style
- Add tests for new features
- Update documentation
- Ensure responsive design
- π Bug fixes and improvements
- β¨ New features and enhancements
- π Documentation improvements
- π¨ UI/UX enhancements
- π§ Performance optimizations
This project is licensed under the MIT License. See the LICENSE file for details.
Built with β€οΈ for the future of anonymous feedback