The official graphical user interface for the Pactus blockchain, built with Flutter.
Pactus GUI aims to democratize access to blockchain technology by providing an intuitive interface that bridges the gap between complex blockchain operations and user-friendly interaction. Our primary objectives are:
- Accessibility: Make blockchain technology approachable for users of all technical levels
- Security: Maintain the highest security standards while providing a seamless user experience
- Decentralization: Empower users to participate in the network without compromising decentralization principles
- Education: Provide clear guidance and information to help users understand blockchain concepts
- Interoperability: Ensure compatibility across multiple platforms and devices
Pactus GUI offers a comprehensive suite of features designed to meet the needs of both casual users and blockchain enthusiasts:
- Windows: Fully supported with native Windows UI/UX
- macOS: Optimized for Apple's ecosystem with native look and feel
- Linux: Compatible with major Linux distributions
- Wallet Management:
- Create and manage multiple wallets with secure seed phrase backup
- Import/export wallet functionality with encryption
- Node Operation:
- Run a Pactus node in Full or Pruned mode
- Real-time node status monitoring
- Network health and connectivity diagnostics
- Validator Setup:
- Step-by-step validator configuration
- Staking management and reward tracking
- Validator performance analytics
- Send and receive transactions with intuitive interfaces
- Transaction history with detailed information
- Address book for frequently used addresses
- Multi-signature transaction support
- Real-time account balance and transaction history
- Validator information and network statistics
- Block explorer integration
- Smart contract interaction (future implementation)
- Multi-language support
- Dark/Light theme options
- Responsive design for various screen sizes
- Accessibility features for visually impaired users
- Comprehensive help and documentation
- Biometric authentication support
- Hardware wallet integration
- Transaction confirmation safeguards
- Security audit trail
- Regular security updates and patches
Explore our UI/UX design and components in Figma :
- Pactus Design System
- Applications-UI-Team (Private view for development team)
- Applications-UI-Team (Public view for community)
We use Widget Book for documenting and showcasing our UI components:
The Widget Book serves as:
- A living style guide for the application
- A component library for developers
- A visual documentation of all UI elements
- Flutter 3.27.3 or higher
- Dart 3.6.1 or higher
- Android Studio/VSCode with Flutter plugin
- Android SDK (for Android builds)
- Xcode (for iOS builds)
-
Clone the repository:
git clone https://github.com/pactus-project/pactus-gui.git cd pactus-gui
-
Install dependencies:
flutter pub get
Use the build runner script to handle all build and run operations:
# Make the script executable
chmod +x build_runner.sh
# Run the script
./build_runner.sh
You'll be presented with two options:
- Automatic Execution: Handles all build processes and runs the application
- Re-Generate Asset Files: Only regenerates asset files
If you prefer to run commands manually:
# Generate localization files
flutter gen-l10n --output-dir=lib/l10n --arb-dir=lib/l10n
# Run build runner
flutter pub run build_runner build --delete-conflicting-outputs
# Run the application
flutter run
We welcome contributions to the Pactus GUI project! Please follow these guidelines to ensure your contributions align with our standards.
- Understand the Project: Familiarize yourself with the project goals and architecture
- Check Figma Design: Verify if the component or feature you're working on exists in our Figma Design (Public view for community)
- Review Widget Book: Check our Widget Book for existing components
- Follow clean code principles as outlined in Robert C. Martin's "Clean Code"
- Write comprehensive tests for new code or changes
- Ensure all tests pass before submitting a pull request
- Maintain consistent code style and formatting
We use Conventional Commits format for commit messages and PR titles. Follow these rules:
Type | Description |
---|---|
fix | A bug fix |
feat | A new feature |
docs | Documentation changes |
test | Adding or correcting tests |
build | Build system or dependency changes |
ci | CI configuration changes |
perf | Performance improvements |
refactor | Code changes that don't fix bugs or add features |
style | Formatting, white-space, etc. |
chore | Other changes not modifying src/test files |
Specify which part of the code is affected (e.g., wallet, validator, ui). Multiple scopes can be used if changes impact several areas.
- Keep under 50 characters
- Start with lowercase letter
- No ending punctuation
- Use imperative mood (e.g., "fix bug" not "fixed bug")
Examples:
- Correct ✅: "feat(wallet): add biometric authentication"
- Incorrect ❌: "feat(wallet): Added biometric authentication."
Your PR will go through these checks:
- Flutter environment setup (v3.27.3)
- Dependency installation (
flutter pub get
) - Localization file generation (
flutter gen-l10n
) - Localization file verification
- Code formatting check (
dart format .
) - Code analysis (
flutter analyze
) - Test execution (
flutter test
) - Final merge check
- If Approved: Your PR will be merged into main
- If Rejected: You'll receive feedback for improvements
When reporting bugs, include:
- Detailed reproduction steps
- Environment information
- Suggested fixes if possible
We follow the Contributor Covenant Code of Conduct. Please read it before contributing.