Welcome to the Quid codebase!
We are thrilled that you're interested in contributing. Quid isn't just another dApp; it is a critical piece of infrastructure for the Stellar ecosystem. We are solving the "Ghost Town" problem in Web3 product development by creating a liquid marketplace for honest feedback.
Whether you're a Rustacean, a React wizard, or a design pro, there is a place for you here.
Building on-chain is lonely. Founders launch dApps to empty Discord channels. When they do get feedback, it's often low-effort spam from airdrop farmers ("Good project sir!").
- No Incentive: Real users have no reason to spend 20 minutes testing your edge cases.
- No Trust: Founders can't verify if a user actually used the protocol or just looked at the landing page.
Quid is "Feedback-as-a-Service" (FaaS). We turn feedback into a transaction.
- For Founders: It's a Bounty Vault. You lock funds, and you only pay for feedback that actually helps you.
- For Users: It's a Job Board. You get paid instantly in USDC/XLM for your time and expertise.
The "Secret Sauce": We use on-chain data (Transaction History, Asset Holdings) to verify that the feedback comes from a real, active human—not a bot.
These are the pillars of the platform. When you pick up an issue, you are likely building a part of one of these systems.
At the heart of Quid is the QuidStore contract. It replaces the need for "trust."
- Escrow Logic: When a Founder creates a Mission, the reward pool (e.g., 500 USDC) is pulled from their wallet and locked in the contract. Users know the money is there.
- Refund Mechanism: If a mission expires or is canceled, the contract automatically calculates the remaining funds and refunds the Founder. We never hold user funds hostage.
We don't clutter the Stellar ledger with paragraphs of text. We use a hybrid approach:
- Off-Chain (IPFS): The actual feedback (long text, screenshots, screen recordings) is hashed and pinned to IPFS.
- On-Chain (Soroban): Only the CID (Content Identifier) is stored in the smart contract. This keeps gas costs low while maintaining data immutability.
This is our anti-spam defense. Founders can set requirements for who can enter a mission.
- Token Gating: "You must hold at least 50 AQUA to join this mission."
- NFT Gating: "Only holders of the 'Early Adopter' NFT can provide feedback."
Dev Note: This checks the user's balance on-chain before allowing the submit_feedback transaction.
We track a user's value on-chain.
- Stats: Every time a user's submission is "Approved" and paid out, their
successful_missionscounter increments. - Trust Score: Future features will calculate a score based on
Earnings / Submissions. High-reputation users will eventually get access to exclusive, high-paying missions.
- Rust (Latest Stable)
- Node.js (v18+)
- Soroban CLI
- Freighter Wallet
# Clone the repo
git clone https://github.com/YOUR_USERNAME/quid.git
cd quid
# Install dependencies for frontend
cd web
npm installWe use a Makefile to simplify Soroban commands.
cd contracts/quid-store
# Build the contract
make build
# Run unit tests (Please run this before pushing!)
make testNavigate to the Issues Tab.
- good first issue: Perfect for newcomers. Usually UI tweaks or simple contract helpers.
- help wanted: A bit more complex, but we definitely need hands on deck.
- priority: Critical features for the MVP.
- Assign Yourself: Comment on the issue "I'd like to work on this!" so we don't duplicate work.
- Branch Out: Create a branch using the convention:
type/short-description.feat/create-mission-formfix/wallet-connectionchore/update-readme
- Commit: Write clear commit messages.
- Pull Request: Open a PR to
main.- Link the issue (e.g., "Closes #4").
- Include screenshots if you changed the UI.
- Include test results if you changed the Contract.
- Safety First: Never use
.unwrap()in production code. Always handle errors withResult<T, E>. - Gas Optimization: Avoid large loops. Use Persistent storage for main data and Instance storage for counters.
- Formatting: Run
cargo fmtbefore committing.
- Components: Use functional components and Hooks.
- Styling: Use Tailwind CSS utility classes. Avoid inline styles.
- Types: strict TypeScript mode is on. No
any!
We are building a community of trust. Harassment, hate speech, or spamming will not be tolerated. Be kind, be constructive, and let's build something amazing together.
Ready to ship? Let's go! 🦑