-
Notifications
You must be signed in to change notification settings - Fork 19
docs: add end term evaluation for gsoc 2025 #19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
IronJam11
wants to merge
1
commit into
main
Choose a base branch
from
gsocReport
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,150 @@ | ||
| # Google Summer of Code 2025 Final Project Report | ||
|
|
||
| ## Student Information | ||
| **Name:** Aaryan Jain | ||
| **GitHub:** [IronJam11](https://github.com/IronJam11) | ||
| **LinkedIn:** [Aaryan Jain](https://www.linkedin.com/in/aaryan-jain-02b44827a/) | ||
| **Organization:** Australian Open Source Software Innovation and Education (AOSSIE) | Stability Nexus | ||
| **Project:** Tree Planting Protocol - Decentralized Tree Verification Platform | ||
|
|
||
|
|
||
|
|
||
| ## Abstract | ||
|
|
||
| During GSOC 2025, I developed the **Tree Planting Protocol**, a blockchain-based platform for verifiable tree planting and environmental conservation. The platform enables users to mint tree NFTs with geographic verification, create decentralized organizations for collaborative verification, and participate in multi-owner governance systems. The primary technical challenge involved integrating MetaMask wallet connectivity in Flutter—a complex implementation I documented in my [Medium article](https://medium.com/@aaryanjain888/how-i-stopped-worrying-and-learned-to-connect-metamask-to-my-flutter-app-with-walletconnect-a916f77d8cdf). | ||
|
|
||
|
|
||
|
|
||
| ## Technologies Used | ||
|
|
||
| **Frontend:** Flutter, Provider (State Management), Go Router (Navigation) | ||
| **Wallet Integration:** WalletConnect Flutter V2, MetaMask | ||
| **Smart Contracts:** Solidity, Foundry, OpenZeppelin | ||
| **Blockchain:** Ethereum (Mainnet & Sepolia Testnet) | ||
| **Storage:** IPFS (Pinata), Shared Preferences | ||
| **Location Services:** Geolocator, Flutter Map, OpenStreetMap | ||
| **Testing:** Foundry Test Suite | ||
| **CI/CD:** GitHub Actions | ||
|
|
||
|
|
||
|
|
||
| ## Repositories and other resources | ||
|
|
||
| **Frontend:** [Treee Repository](https://github.com/StabilityNexus/Treee) | ||
| **Smart Contracts:** [Smart Contracts Repository](https://github.com/StabilityNexus/Treee-Solidity) | ||
| **Demo Video:** [Demo Video]() | ||
| **Figma:** [Screen Prototypes](https://www.figma.com/design/OScwToy77aIsgG7S3PBGZB/Tree-Planting-Protocol?node-id=0-1&t=iCNy2XfFIUdkQIai-1) | ||
|
|
||
|
|
||
|
|
||
| ## Project Description | ||
|
|
||
| The Tree Planting Protocol is a decentralized platform that combines blockchain technology with geographic verification to create an immutable record of tree planting efforts. The project consists of three main components: | ||
|
|
||
| **Smart Contracts:** Developed using Solidity and Foundry, managing NFT minting, multi-owner organization governance, and democratic verification voting systems. | ||
|
|
||
| **Flutter Frontend:** Cross-platform application (Android, iOS, macOS, Linux, Windows, Web) featuring wallet integration, interactive maps, and IPFS storage. | ||
|
|
||
| **Decentralized Storage:** IPFS integration via Pinata for storing tree images, verification proofs, and organization metadata. (Looking for better ways to handle decentralised Storage in the future) | ||
|
|
||
| The platform supports multiple user types: | ||
|
|
||
| - **Tree Planters:** Create tree NFTs with GPS coordinates, species information, and photographic evidence | ||
| - **Organization Owners:** Create and manage verification organizations with multi-owner governance | ||
| - **Verifiers:** Join organizations, submit verification requests, and vote on tree authenticity | ||
| - **Community Members:** View tree portfolios, track environmental impact, and monitor verification status | ||
|
|
||
| --- | ||
|
|
||
| ## Key Features | ||
|
|
||
| - **Multi-Chain Wallet Integration:** WalletConnect V2 implementation supporting MetaMask | ||
| - **Geographic NFT Minting:** Location-based tree registration with geohash encoding and interactive map selection | ||
| - **IPFS Storage:** Decentralized image storage for tree photos and verification proofs | ||
| - **Organization Governance:** Multi-owner organizations with democratic voting mechanisms | ||
| - **Verification System:** Majority-vote based tree verification with on-chain proof storage | ||
| - **User Profiles:** Token-based reputation system (Planter, Care, Verifier, Legacy tokens) | ||
| - **Comprehensive Theme System:** Light/dark mode support with consistent design language | ||
| - **CI/CD Pipeline:** Automated testing, formatting, and build verification | ||
|
|
||
| --- | ||
|
|
||
| ## Major Pull Requests | ||
|
|
||
| ### Frontend Development (Treee Repository) | ||
|
|
||
| **[PR #4](https://github.com/StabilityNexus/Treee/pull/4): Complete Architecture Overhaul & Wallet Integration** | ||
| Established foundational architecture with WalletConnect V2. Implemented multi-wallet support, deep linking, multi-chain switching, and Provider-based state management across six platforms. | ||
|
|
||
| **[PR #5](https://github.com/StabilityNexus/Treee/pull/5): End-to-End NFT Minting & Location Services** | ||
| Built four-step minting workflow with GPS capture, metadata entry, IPFS upload, and blockchain submission. Integrated maps and smart contract pagination. | ||
|
|
||
| **[PR #6](https://github.com/StabilityNexus/Treee/pull/6): Upload Workflow Optimization** | ||
| Streamlined image uploads by enabling direct IPFS integration, reducing memory usage and improving reliability. | ||
|
|
||
| **[PR #9](https://github.com/StabilityNexus/Treee/pull/9): User Profile & NFT Portfolio** | ||
| Created user registration with on-chain storage, token displays, and paginated NFT portfolio with interactive tree details. | ||
|
|
||
| **[PR #11](https://github.com/StabilityNexus/Treee/pull/11): CI/CD Pipeline & Quality Assurance** | ||
| Established GitHub Actions with Flutter analyze, format checking, and multi-platform builds. | ||
|
|
||
| **[PR #13](https://github.com/StabilityNexus/Treee/pull/13): Advanced NFT Details & Verification** | ||
| Built comprehensive tree details with verification management, proof uploads, and paginated verifier lists. | ||
|
|
||
| **[PR #15](https://github.com/StabilityNexus/Treee/pull/15): Comprehensive Theme System** | ||
| Implemented centralized light/dark mode theming and configured Android deep linking for wallet integration. | ||
|
|
||
| **[PR #16](https://github.com/StabilityNexus/Treee/pull/16): Organization Management System** | ||
| Created organization creation with IPFS logo uploads, member management, and domain-separated contract functions. | ||
|
|
||
| ### Smart Contract Development (Treee-Solidity Repository) | ||
|
|
||
| Here are concise, accurate summaries for all PRs based on the actual GitHub content: | ||
|
|
||
| **[PR #4](https://github.com/StabilityNexus/Treee-Solidity/pull/4): Organisation & OrganisationFactory Contracts** | ||
| Developed multi-owner governance, join/verification request systems with majority-vote mechanisms, and comprehensive testing with gas optimizations. | ||
|
|
||
| **[PR #6](https://github.com/StabilityNexus/Treee-Solidity/pull/6): TreeNFT & Token Integration** | ||
| Added TreeNFT and ERC20 token contracts with voting, rewards, and metadata logic. Enhanced modularity, access control, and test coverage. | ||
|
|
||
| **[PR #9](https://github.com/StabilityNexus/Treee-Solidity/pull/9): Deployment Scripts** | ||
| Introduced Foundry scripts for seamless multi-contract deployment and environment configuration, improving reproducibility and CI integration. | ||
|
|
||
| **[PR #10](https://github.com/StabilityNexus/Treee-Solidity/pull/10): Contract Refinements** | ||
| Optimized code structure, reduced gas usage, and improved inter-contract coordination with minor logic fixes and cleaner abstractions. | ||
|
|
||
| **[PR #11](https://github.com/StabilityNexus/Treee-Solidity/pull/11): Function Paginations & Final Updates** | ||
| Implemented pagination across organisation, member, and proposal views; improved role management and verification syncing; finalized testing and documentation. | ||
|
|
||
| ## Challenges and Solutions | ||
|
|
||
| ### Challenge 1: Flutter-MetaMask Integration | ||
| Connecting MetaMask to Flutter presented significant technical challenges due to limited documentation and platform-specific requirements. | ||
|
|
||
| **Solution:** Implemented WalletConnect V2 with custom deep linking, platform-specific intent filters, robust connection state management, and documented the process in a [Medium article](https://medium.com/@aaryanjain888/how-i-stopped-worrying-and-learned-to-connect-metamask-to-my-flutter-app-with-walletconnect-a916f77d8cdf). | ||
|
|
||
| ### Challenge 2: Multi-Owner Voting Mechanism | ||
| Designing a secure voting system for organization-based verification required careful consideration of edge cases and attack vectors. | ||
|
|
||
| **Solution:** Implemented majority-threshold voting (>50% approval), double-vote prevention, self-voting restrictions, last-owner protection, and comprehensive test coverage. | ||
|
|
||
| ### Challenge 3: Cross-Platform Consistency | ||
| Maintaining consistent UI/UX across six platforms while handling platform-specific requirements. | ||
|
|
||
| **Solution:** Created centralized theme system, reusable base components, platform-specific configurations, and responsive layouts. | ||
|
|
||
|
|
||
| ## Future Plans | ||
|
|
||
| - Add support for additional blockchain networks (Polygon, Arbitrum, etc) | ||
| - Deploy it on play store | ||
| - Make it multi-chain by the use of CCIP | ||
| - Add QR code generation for physical tree tags | ||
|
|
||
| --- | ||
|
|
||
| ## Acknowledgements | ||
|
|
||
| I express my sincere gratitude to my mentors **Dr. Bruno Woltzenlogel Paleo** and **Bhavik Mangla** at AOSSIE, who provided invaluable guidance, technical expertise, and continuous support throughout my GSoC journey. Their feedback was instrumental in shaping both the technical architecture and user experience of the Tree Planting Protocol. | ||
|
|
||
| Thank you. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Fill the empty demo video link or remove the placeholder.
The demo video link at line 35 is empty (
[Demo Video]()). Either populate it with the actual video URL or remove the placeholder line before merge.🏁 Script executed:
Length of output: 3777
🏁 Script executed:
Length of output: 2439
Fill the empty demo video link or remove the placeholder.
The demo video link at line 35 is empty (
[Demo Video]()). Either populate it with the actual video URL or remove the placeholder line before merge.🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
35-35: No empty links
(MD042, no-empty-links)
🤖 Prompt for AI Agents