Skip to content

Repository files navigation

PawFund Logo

PawFund

Blockchain-Powered Crowdfunding for Animal Rescue & Welfare

View Demo Β· Features Β· Getting Started Β· Usage Β· Report Bug

PawFund Platform

πŸ“‹ Overview

PawFund is a decentralized crowdfunding platform built on Ethereum blockchain technology that connects animal rescuers with supporters worldwide. The platform enables transparent, secure, and efficient fundraising for animal rescue and welfare initiatives.

By leveraging blockchain technology, PawFund ensures:

  • Complete transparency in fund allocation
  • Secure and immutable transaction records
  • Direct connection between donors and animal rescue projects
  • Elimination of intermediaries and reduced fees

🌟 Key Features

  • Decentralized Crowdfunding: Create, discover, and contribute to animal welfare campaigns with full transparency
  • Blockchain Security: All transactions secured by Ethereum smart contracts
  • IPFS Integration: Decentralized storage for campaign images and data
  • Real-time Updates: Track campaign progress and fund allocation in real-time
  • Wallet Integration: Seamless connection with MetaMask and other Web3 wallets
  • Responsive Design: Modern UI built with React and Tailwind CSS for all devices
  • Campaign Management: Create, edit, and manage rescue campaigns with ease
  • Direct Support: Contribute directly to animal rescue initiatives with ETH

πŸ› οΈ Technology Stack

Category Technologies
Frontend React.js, Tailwind CSS, React Router
Blockchain Ethereum, Hardhat, Ethers.js
Storage IPFS (InterPlanetary File System)
Testing Waffle, Chai
Development Node.js, Yarn/NPM

πŸš€ Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

Installation

  1. Clone the repository

    git clone https://github.com/HumayunK01/PawFund.git
    cd PawFund
  2. Install dependencies

    npm install
    # or if you prefer yarn
    yarn install
  3. Set up environment variables

    # Create a .env file in the root directory
    cp .env.example .env
    
    # Edit the .env file with your configuration
    # Required variables:
    # - REACT_APP_IPFS_PROJECT_ID
    # - REACT_APP_IPFS_PROJECT_SECRET
  4. Start the development environment

<<<<<<< HEAD

πŸ“Š System Architecture & Workflows

Contract Interaction Diagram

Contract Interaction Figure 12: Smart Contract Interaction Flow - Detailed view of how smart contracts interact within the system

System Flow Diagram

Flow Diagram Figure 13: System Flow Diagram - Complete system workflow and process flow

System Architecture

System Architecture Figure 14: System Architecture - High-level view of the platform's technical architecture

User Flow

User Flow Figure 15: User Flow Diagram - Step-by-step user journey through the platform

πŸ› οΈ Tech Stack

======= In separate terminal windows:

25c00a3ebaa7804d62bb649579425923b1704a29

Terminal 1 - Start local blockchain:

npx hardhat node

Terminal 2 - Deploy smart contracts:

npx hardhat run scripts/deploy.js --network localhost

Terminal 3 - Start the application:

npm start
# or
yarn start
  1. Access the application

    Open your browser and navigate to http://localhost:3000

πŸ’‘ Usage

Creating a Rescue Campaign

  1. Connect your Web3 wallet by clicking the "Connect Wallet" button
  2. Navigate to the dashboard and click "Create New Campaign"
  3. Fill in the required details:
    • Campaign title
    • Description
    • Funding goal
    • Campaign duration
    • Upload images
  4. Submit the campaign for review
  5. Once approved, your campaign will be live on the platform

Contributing to a Campaign

  1. Browse available campaigns on the homepage or search for specific causes
  2. Select a campaign you wish to support
  3. Click "Support This Rescue"
  4. Enter the amount you wish to contribute
  5. Confirm the transaction in your Web3 wallet
  6. Receive confirmation and track your contribution

Managing Your Campaigns

  1. Access your dashboard to view all your created campaigns
  2. Monitor funding progress and supporter activity
  3. Update campaign details as needed
  4. Communicate with supporters through updates
  5. Withdraw funds once campaign goals are met

πŸ“ Project Structure

PawFund/
β”œβ”€β”€ public/                 # Static files
β”œβ”€β”€ src/                    # Source files
β”‚   β”œβ”€β”€ abis/               # Smart contract ABIs
β”‚   β”œβ”€β”€ components/         # Reusable UI components
β”‚   β”œβ”€β”€ contracts/          # Solidity smart contracts
β”‚   β”œβ”€β”€ services/           # External service integrations
β”‚   β”œβ”€β”€ store/              # State management
β”‚   β”œβ”€β”€ views/              # Page components
β”‚   β”œβ”€β”€ App.jsx             # Main application component
β”‚   β”œβ”€β”€ index.jsx           # Application entry point
β”‚   └── index.css           # Global styles
β”œβ”€β”€ scripts/                # Deployment and utility scripts
β”œβ”€β”€ test/                   # Test files
β”œβ”€β”€ .env.example            # Example environment variables
β”œβ”€β”€ hardhat.config.js       # Hardhat configuration
β”œβ”€β”€ package.json            # Project dependencies
└── README.md               # Project documentation

πŸ–ΌοΈ Application Screenshots

Click to view screenshots

Homepage

Homepage Main landing page showcasing featured rescue campaigns

About Us

About Learn about our mission and vision for animal welfare

How It Works

How It Works Step-by-step guide to using the PawFund platform

Active Rescue Cases

Cases Comprehensive view of ongoing rescue campaigns

Rescue Cases Dashboard

Rescue Cases Overview of active and completed rescue cases

Create New Rescue Campaign

Listing Rescue Interface for creating new rescue campaigns

Support and Donation Page

Support Page Detailed view of a rescue case with donation options

πŸ”„ Deployment

Local Deployment

Follow the Getting Started section for local deployment.

Production Deployment

  1. Build the application

    npm run build
    # or
    yarn build
  2. Deploy to hosting service

    The project can be deployed to various hosting services:

    • Vercel:

      npm install -g vercel
      vercel
    • Netlify:

      npm install -g netlify-cli
      netlify deploy
    • Firebase:

      npm install -g firebase-tools
      firebase login
      firebase init
      firebase deploy
  3. Deploy smart contracts to testnet/mainnet

    # For Ethereum testnet (Goerli)
    npx hardhat run scripts/deploy.js --network goerli
    
    # For Ethereum mainnet
    npx hardhat run scripts/deploy.js --network mainnet

πŸ§ͺ Testing

Run the test suite to ensure everything is working correctly:

# Run all tests
npx hardhat test

# Run specific test file
npx hardhat test test/Genesis.test.js

🀝 Contributing

We welcome contributions to PawFund! Please follow these steps:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your code follows the project's coding standards and includes appropriate tests.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgements

  • OpenZeppelin for secure smart contract libraries
  • IPFS for decentralized storage solutions
  • Hardhat for Ethereum development environment
  • Tailwind CSS for the UI framework
  • React for the frontend library

πŸ“§ Contact

For any questions, suggestions, or collaboration opportunities, please reach out:


Made with ❀️ for animals everywhere

About

PawFund is a decentralized crowdfunding platform for animal rescue, connecting donors with urgent cases through blockchain technology. Create campaigns, contribute ETH, and track your impact in real-time. Every donation directly helps save and improve animals' lives through transparent funding.

Resources

Stars

Watchers

Forks

Used by

Contributors

Languages