🤘 PunkSociety is a forkable social dapp.
- 🤹♂️ Posts can have text, image and links.
- 💬 Like, comment and share posts.
- 🫂 Follow other users.
- 🔔 Receive notifications on activity.
- 💌 Message other users and join group chats
- 🧑🦽 Accessibility for visually impaired users
- ✅ Create PunkPosts contract
- ✅ Create ProfileInfo contract for users to register their info
- ✅ Post creation page
- ✅ User profile page
- ✅ View other users profiles
- Search: By address, ENS or username
- Social features: Following users, liking, commenting and sharing posts.
- Integrate The Graph to index activity and save RPC calls (Reference: Bootstrap a Full Stack Modern dapp using the Scaffold-ETH CLI and Subgraph Extension)
- Individual post pages for displaying long texts and big images
- Notification system
- Signatures: Allow users to interact with the platform without paying gas fees
- Database: To store and retrieve EIP 712 signatures (Reference: grants.buidlguidl.com)
- Whitelist: Optional system to validate users to prevent spam
- Direct messages: Allow users to send messages to each other
- Group chats: Allow users to create and join group chats
- Accessibility support: Posts on the website must be ARIA compliant
⚙️ Built using Foundry, NextJS, RainbowKit, Wagmi, Viem, and Typescript,
🔗 To be deployed on EVM compatible chains
📥 To see current development tasks, see here
- Node (>= v18.17)
- Yarn (v1 or v2+)
- Git
- Foundry
To get started follow the steps below:
- Open a terminal and run this commands to clone this repo and install dependencies:
git clone https://github.com/luloxi/PunkSociety.git
cd PunkSociety
yarn install
- After everything is installed, run this command to start a local blockchain network:
yarn chain
This command starts a local Ethereum network using Foundry. The network runs on your local machine and can be used for testing and development.
-
Duplicate and rename
packages/foundry/.env.example
topackages/foundry/.env
(you don't need to fill it out until deploying to a live network) -
Open a second terminal, navigate to
PunkSociety
and run this command to deploy the test contract:
yarn deploy
This command deploys a test smart contract to the local network. The contract is located in packages/foundry/contracts
and can be modified to suit your needs. The yarn deploy
command uses the deploy script located in packages/foundry/script/Deploy.s.sol
to deploy the contract to the network. You can also customize the deploy script.
-
Go to
packages/nextjs/scaffold.config.ts
and comment outtargetNetworks: [chains.arbitrum]
and uncommenttargetNetworks: [chains.foundry]
-
Open a third terminal, navigate to
PunkSociety
and run this command to start your NextJS app:
yarn start
Visit your app on: http://localhost:3000
. You can interact with your smart contract using the Debug Contracts
page.