A 100% user-owned, community-governed social media platform
TikTok-style vertical video + Facebook-style social feed + Reddit-style threads β governed entirely by token holders via on-chain voting.
This project explores how a large product idea can be broken into architecture, governance, mobile experience, content systems, and operating rules. The most valuable learning was not only the blockchain stack; it was the product thinking required to connect user trust, moderation, cost, ownership, and long-term governance.
Recruiter takeaway: this is a systems-thinking project. It shows comfort with new technical domains, but also the account-management skill of translating complicated requirements into a roadmap that stakeholders can discuss.
A decentralized social media app where:
- Users own their content (Lens Protocol NFTs)
- Community votes on everything (algorithm weights, moderation, features)
- No corporate control after year 1 (trustless handover via smart contracts)
- 100% open source (MIT license β fork it, audit it, run your own instance)
Mobile App (React Native)
β
Lens Protocol (social graph) + Livepeer (video)
β
IPFS/Arweave (decentralized storage)
β
Base Blockchain (governance contracts)
4 Smart Contracts:
PlatformToken.solβ ERC-20 governance token (100M PLAT, fixed supply)PlatformGovernor.solβ On-chain voting (1-day delay β 7-day vote β 4% quorum)PlatformTimelock.solβ 2-day execution delay on all governance actionsHandoverVault.solβ Locks founding tokens for 365 days; releases via community vote
cd step-1-contracts
npm install
npx hardhat test # All tests must pass
npx hardhat run scripts/deploy.js --network baseSepoliacd step-3-app
npm install
cp .env.example .env # Add your Livepeer API key + WalletConnect ID
npx expo start # Press 'i' for iOS, 'a' for Android, 'w' for web# Grant Governor permission to queue proposals in Timelock
# (See deploy.js output for exact commands)
# Founding multisig deposits their allocation into HandoverVault
vault.deposit(50_000_000 * 1e18)
# Token holders self-delegate to activate voting power
token.delegate(yourAddress)| Folder | Description |
|---|---|
step-1-contracts/ |
Solidity: Token + Governor + Timelock + HandoverVault |
step-2-repo/ |
GitHub setup: CI/CD, branch protection, governance templates |
step-3-app/ |
React Native app: Video feed, social feed, threads, governance UI |
docs/architecture.md |
9 Mermaid diagrams + cost estimates + security model |
Total: 43 TypeScript files, 4 Solidity contracts, 3,764 lines of production code.
- 50% tokens β Wallet A (right-leaning trusted individual)
- 50% tokens β Wallet B (left-leaning trusted individual)
- They manually airdrop to early builders/creators
- All distributions logged on-chain (transparent + auditable)
- Community proposes: "Transfer locked tokens to address X"
- 7-day vote (4% quorum required)
- If passed β 2-day Timelock delay
- Vault automatically transfers all locked PLAT to winning address
- Founding wallets renounce all roles β full community control
- Anyone with 100k PLAT can propose (algorithm changes, features, treasury spends)
- All proposals pass through Governor β Timelock β execution
- No admin keys, no backdoors (even upgrades require a vote)
| Feature | Tech Stack |
|---|---|
| Vertical video feed | Livepeer transcoding + HLS streaming + React Native gesture handler |
| Social graph | Lens Protocol v2 (profiles, posts, follows, comments as NFTs) |
| Threaded discussions | Lens publications with nested comment references |
| On-chain voting | OpenZeppelin Governor + ERC20Votes |
| Decentralized storage | IPFS (metadata) + Arweave (video backup) |
| Recommendation algorithm | Python scoring engine (open-source, community-votable weights) |
| Moderation | AI flagging β elected council β public appeals β governance override |
At 10,000 monthly active users:
- Livepeer video: ~$50β200/month
- IPFS pinning: ~$20/month
- Base governance gas: ~$5β20/month
- Redis + ranking service: ~$30β80/month
Total: ~$135β450/month (scales 8β10x at 100k MAU)
Livepeer grants available for early-stage projects.
- β All contracts use OpenZeppelin audited libraries
- β ReentrancyGuard on all state-changing functions
- β No minting after genesis (fixed 100M supply)
- β Timelock prevents instant malicious proposals
- β
Full test coverage (see
dao.test.js)
MIT β Fork it. Ship it. Govern it.
- Contracts: Solidity 0.8.20 + OpenZeppelin 5.0 + Hardhat
- Frontend: React Native (Expo) + wagmi + viem + Lens SDK
- Video: Livepeer Studio API + HLS.js
- Storage: Pinata (IPFS) + Arweave
- Blockchain: Base (recommended) or Polygon
- Low voter turnout kills DAOs β Design every UX to encourage delegation
- Legal: Get a crypto + content moderation lawyer before mainnet
- Video costs: Apply for Livepeer grants early; set governance-controlled upload limits
- Quorum: 4% quorum on 100M tokens = 4M PLAT must vote. Start lower (1%) if distribution is thin.
- Use Snapshot.org for gasless voting β only execute final decisions on-chain
- Full Architecture β 9 diagrams covering every layer
- Deployment Guide β Step-by-step contract deploy
- Governance Log β Append-only decision history
- Contributing β How to submit governance proposals + PRs
- Fork this repo
- Build your feature
- Submit a governance proposal (use template in
.github/ISSUE_TEMPLATE/) - Community votes
- If passed β merge PR
All code changes require a passed governance proposal (enforced by CI).
- GitHub Issues: Bug reports + feature requests
- Discord: [coming after beta launch]
- Governance Forum: [Snapshot.org space TBD]
Built by the community, for the community.