manages an ipfs node and automatically pins NFTs owned or minted by the user
build and run the app
go run main.go
build the app
go build
to do:
- add wallet entry ui and store in config
- fetch minted/collected nfts based on wallet entries
- add tray menu to show wallet entries
- add tray menu to pin/unpin wallet entries
- add tray menu to show pinned entries
- add tray menu to open ipfs webui
- move away from exec.Command and use go-ipfs-api
reference: https://gist.github.com/mattdesl/47f4ea12ea131eed8401bdacf95a1f47 https://nftbiker.xyz/ https://hashquine.github.io/hicetnunc/artists-by-income-3/index.html https://github.com/hicetnunc2000/hicetnunc/wiki/Tools-made-by-the-community
https://github.com/zir0h/teia-backup - backup tool specifically for teia
- Starts and manages an IPFS daemon
- Connects to a local IPFS node
- Loads and saves a list of pinned CIDs
- Provides a system tray interface for basic interactions
- Allows adding and removing CIDs from the pin list
- Performs IPFS setup operations (bootstrap, peering, swarm connect)
The code is structured around a main App
struct that encapsulates the core functionality. It uses the fyne.io/systray
library for the system tray interface and github.com/ipfs/kubo/client/rpc
for IPFS interactions.
- Clear separation of concerns with methods for different functionalities
- Use of Go's concurrency features (goroutines) for background tasks
- Persistent storage of pinned CIDs
- Error handling: Many errors are just printed to console; consider a more robust error handling strategy
- Configuration: Hard-coded values (e.g., IPFS peer address) should be moved to a configuration file
- Use of
exec.Command
: As noted in the TODO, moving togo-ipfs-api
would be more idiomatic - User Interface: Current CLI prompts for adding CIDs could be replaced with GUI dialogs
- Concurrency: Some operations could benefit from better concurrency control
- Testing: No tests are present in the current code
- Manage an IPFS node
- Automatically pin NFTs owned or minted by the user
- Provide a system tray interface for easy management
- Integrate with Tezos blockchain for NFT data
-
IPFS Node Management
- Start and stop IPFS daemon
- Connect to local IPFS node
- Perform initial IPFS setup (bootstrap, peering, swarm connect)
- Implement proper error handling and recovery for IPFS operations
- Add configuration options for IPFS settings
-
Tezos Integration
- Implement Tezos API client
- Add wallet management functionality
- Create UI for adding/removing wallet addresses
- Store wallet information securely
- Fetch NFT data from Tezos blockchain
- Retrieve minted NFTs for each wallet
- Retrieve collected NFTs for each wallet
- Implement periodic scanning for new NFTs
-
NFT Management
- Implement basic CID pinning and unpinning
- Automate pinning of owned and minted NFTs
- Implement smart pinning strategy (e.g., based on storage limits, NFT age)
- Add metadata storage for pinned NFTs (e.g., title, artist, collection)
-
User Interface Improvements
- Basic system tray functionality
- Add tray menu to show wallet entries
- Add tray menu to pin/unpin wallet entries
- Add tray menu to show pinned entries
- Add tray menu to open IPFS WebUI
- Implement GUI dialogs for user interactions (e.g., adding CIDs, managing wallets)
- Add notifications for important events (e.g., new NFT pinned, IPFS node status)
-
Data Management and Storage
- Implement a proper database for storing app data (e.g., SQLite)
- Create data models for wallets, NFTs, and pin list
- Implement data migration strategy for updates
-
Performance and Stability
- Replace
exec.Command
usage withgo-ipfs-api
- Implement proper concurrency control for IPFS operations
- Add retry mechanisms for failed operations
- Implement logging system for better debugging
- Replace
-
Testing and Quality Assurance
- Write unit tests for core functionalities
- Implement integration tests for IPFS and Tezos interactions
- Set up CI/CD pipeline for automated testing and building
-
Documentation and User Guide
- Create detailed README with setup instructions
- Write user documentation explaining app features and usage
- Document API and core functions for future development
-
Packaging and Distribution
- Set up build process for multiple platforms (Windows, macOS, Linux)
- Create installers for easy user setup
- Implement auto-update mechanism
-
Security Considerations
- Implement secure storage for wallet information
- Add option for encrypted storage of pinned NFT data
- Perform security audit of IPFS and Tezos interactions
This expanded overview provides a more comprehensive roadmap for the project, addressing both the immediate TODO items and long-term considerations for a robust, user-friendly application.