- Introduction
- Technology Stack
- Architecture
- Run Locally
- Usage Guide
- Smart Contract Documentation
- Deployment
- Future Improvements
- Contributing
- Community
Fundr is a blockchain based platform for community-driven funding. Users can deploy funding vaults, deposit funds, and submit proposals for funding. The platform uses a voting mechanism to decide which proposals receive how much funding.
- Frontend: Next.js, TailwindCSS, ShadCN UI
- Backend: Next.js API Routes, Prisma ORM, NextAuth, SIWE, Web3Modal
- Blockchain: Foundry, Solidity
- Database: PostgreSQL
- Other tools and libraries: Wagmi, Viem, React Hook Form
-
Foundry Setup: Ensure you have Foundry installed and setup. You can follow the instructions given here: Foundry Docs.
-
Node.js: Ensure you have Node.js Installed. You can follow the instructions here: Nodejs Docs
-
Navigate to the Blockchain Directory:
cd app/blockchain -
Install Dependencies:
forge install
-
Run Tests:
forge test -
Run Local Anvil Chain:
anvil
-
Deploy Mock Smart Contracts:
make mock-all
Note: This will automatically update relevant contract addresses and ABIs for smart contract in web-app folder.
-
Deploy to the Testnet:
- Ensure you have a
.envfile set up. You can use.env.exampleas a template. - Load the environment variables:
source .env- Deploy the contract:
deploy-sepolia
- Ensure you have a
-
Navigate to the Web App Directory:
cd app/web-app -
Install Dependencies:
npm install
-
Update the environment variables: Create a
.envfile in theweb-appdirectory and add all the values. You can use.env.exampleas a template. -
To use local instance of postgreSQL database:
- Start docker desktop
- Run
docker compose up
-
Run the Development Server:
npm run dev
-
Access the Web App:
- Open your browser and navigate to
http://localhost:3000.
- Open your browser and navigate to
Our platform supports three types of users: Vault Creators, Proposal Creators, and Voters/Community Members. Here's how each user type can navigate and use the application:
-
Getting Started
- On the landing page, click "Get Started" to access the dashboard
- Connect your wallet and sign in with Ethereum
-
Creating a Vault
- Click the "Create" button and select "Vault" from the dropdown
- Choose a space for your vault (multiple vaults can exist in one space)
- Enter the vault description, token configurations, and funding parameters
- Review and submit the proposal (requires a wallet transaction)
-
Optional: Add Funds
- After creation, you can immediately add funds to your vault
-
Vault Management
- You'll be redirected to the vault page to view all details
-
Getting Started
- On the landing page, click "Get Started" to access the dashboard
- Connect your wallet and sign in with Ethereum
-
Creating a Proposal
- Click the "Create" button and select "Proposal" from the dropdown
- Search and select the vault you want to create a proposal for
- Enter the proposal description, minimum and maximum request amounts, and recipient address
- Review the information and submit
-
Tracking Proposals
- View your created proposals in the "My Activity" page or on the vault details page
-
Accessing Vaults
- On the landing page, click "Get Started" to access the dashboard
- Click "Spaces" in the navbar to view available spaces
- Select a space and then choose a vault within that space
-
Participating in a Vault
- On the vault page, register to vote
- Deposit tokens for distribution
- Create new proposals (if desired)
- After the tally date, withdraw remaining funds (if applicable)
-
Viewing Results
- After the tally date, results page will be accessible to view the distribution statistics and other vault-related information
Smart contract documentation can be found here.
- Smart Contract: [Sepolia Testnet](https://sepolia.etherscan.io/address/0x01688B3c89cDCb6fa64378DF2aD8Eb37DDFf9721
- Frontend: https://fundr-nu.vercel.app/