How to Contribute
We welcome contributors of all kindsβwhether you want to improve our smart contracts, enhance the front-end, fix bugs, or help write documentation. Here's how to get started:
π Repo Structure
OmniSocial is structured as a monorepo using pnpm workspaces. The main directories include:
/contracts β Solidity smart contracts (OmniWallet, DAO, PersonaNFT, etc.)
/frontend β React front-end for OmniSocial dApp
/explorer β Omnitopia Explorer interface
/subgraph β The Graph subgraph code and schema
/scripts β Deployment, registration, and helper scripts
/docs β Markdown-based developer & user documentation
/packages/sdk β (optional) SDK or GraphQL client utilities
π§βπ» How to Contribute Code
1. Fork & Clone
git clone https://github.com/OmniSocialBlockchain/omnisocial-monorepo.git
cd omnisocial-monorepo
pnpm install
2. Create a Feature Branch
git checkout -b feat/add-new-component
3. Commit Guidelines
Follow Conventional Commits:
feat: add tipping interface to FeedCard
fix: resolve bug with .omni alias resolution
docs: update contributing section
β
Coding Standards
Solidity (contracts)
Style: Solhint rules enforced
Compiler version:
^0.8.20
Named returns and NatSpec (
@notice
,@param
) encouragedUse
require()
with clear revert messagesGroup state-changing functions at the top of each contract
JavaScript/TypeScript (frontend)
Code style: ESLint with Prettier
Framework: React + Next.js
Styling: TailwindCSS
i18n: Next-i18next
Wallets:
wagmi
withviem
and@rainbow-me/rainbowkit
π§Ύ Documentation Contributions
All docs live in
/docs
(Markdown)Each section of the platform has its own
.md
fileUse clear, beginner-friendly language
PRs with typo fixes, formatting improvements, or new sections are welcome
π£οΈ Communication & Feedback
π¬ Discord β Ask questions, suggest features, get real-time help
π GitHub Issues β Report bugs or request features
π¦ Pull Request Checklist
Before submitting your PR:
π Start Here
Browse open issues
Comment if you want to take one
Open a PR when ready
Get feedback from core maintainers
Last updated
Was this helpful?