Argo is a fast, focused navigation launcher for the Arweave Permaweb. It provides intelligent autocomplete, filtered search modes, and quick launch capabilities for seamless navigation across Permaweb resources.
Built with Vue 3, it focuses on dual functionality: Discovery (multi-select filters for finding content) and Launch (direct access to ArNS domains, transactions, and future hyperbeam hashpaths).
Current Features: Multi-select filters, transaction shortcuts, ArNS resolution, undername support, automatic transaction detection. Future Roadmap: Launch/Find mode split, Hyperbeam integration for device calling via hashpaths.
- Install dependencies:
bun install - Start dev server:
bun run dev - Build for production:
bun run build - Preview build:
bun run preview - Deploy:
bun run deploy(builds project, deployment handled by GitHub Actions)
- Vue 3 Composition API with
<script setup> - JavaScript (ES6+), no TypeScript
- Use existing composables and helpers from
/src/composables/and/src/helpers/ - Follow established component patterns in
/src/components/ - Consistent formatting, no semicolons
- Prefer functional patterns where possible
- Build verification:
bun run build(ensure no build errors) - Test in browser after dev server starts
- Check Vue DevTools for component issues
- Verify ArNS resolution and AO integration functionality
- Test mobile responsiveness
src/
├── components/ # Vue components
│ ├── ArweaveWalletConnection.vue
│ ├── BangEditor.vue
│ ├── Explorer.vue
│ ├── HeadlessRedirect.vue
│ ├── KeyboardShortcuts.vue
│ ├── LoadingScreen.vue
│ ├── ResultDisplay.vue
│ ├── SearchBar.vue
│ └── UrlForm.vue
├── composables/ # Vue composables
│ ├── useAppState.js
│ ├── useBangs.js
│ ├── useKeyboardShortcuts.js
│ ├── useSearch.js
│ └── useWallet.js
├── helpers/ # Utility functions
│ ├── arnsResolver.js
│ ├── arweaveWallet.js
│ ├── bangHelpers.js
│ ├── cacheModule.js
│ ├── searchLogic.js
│ └── walletManager.js
├── assets/ # Static assets
├── App.vue # Main app component
├── main.js # App entry point
├── polyfills.js # Browser polyfills
└── store.js # State management
- Vue 3 - Frontend framework
- @ar.io/sdk - ArNS resolution and AR.IO integration
- @permaweb/aoconnect - AO process integration
- lodash - Utility functions
- Vite - Build tool and dev server
- Multi-select filters (All, ArNS, Docs, Glossary)
- ArNS domain resolution with autocomplete (10,000+ domains)
- Undername support (mobile inline, desktop side panel)
- Real-time content filtering and suggestions
- Transaction shortcuts (tx, data, raw, msg)
- Automatic transaction ID detection
- Direct ArNS navigation
- Headless mode support
- Dark mode toggle
- Keyboard navigation
- Mobile-first responsive design
- Launch/Find mode split for focused workflows
- Hyperbeam integration for hashpath creation and device calling
- Use existing composables for state management
- Follow established patterns in components
- Maintain mobile-first responsive design
- Test ArNS resolution functionality
- Verify AO integration works correctly
- Check keyboard shortcuts functionality
- Ensure dark mode compatibility
- Focus on discovery and launch workflows
- Prepare for future launch/find mode separation
- Never commit wallet files or private keys
- Use environment variables for sensitive data
- Follow Arweave security best practices
- Validate user inputs for ArNS names and transaction IDs
- GitHub Actions handle automatic deployment
- Two workflows:
deploy-arweave.ymlanddeploy-vercel.yml - Uses permaweb-deploy for Arweave deployment
- No manual deployment required
- Build artifacts go to
/distdirectory
- Modifying search logic: Update
useSearch.jsandsearchLogic.js - Adding new filters: Update filter components and search logic
- ArNS resolution improvements: Update
arnsResolver.js - Transaction handling: Modify transaction detection and shortcut logic
- Styling changes: Modify
/src/assets/styles.css - Component updates: Follow existing component patterns
- Preparing for launch/find mode: Plan component separation for future updates
- Bang-related functionality (
useBangs.js,bangHelpers.js,BangEditor.vue) - Do not extend or enhance - Focus development on filter-based discovery and direct launch capabilities
- Do not add Lua files (project uses JavaScript/Vue only)
- Do not commit wallet files or private keys
- Avoid adding unrelated project files
- Follow existing .gitignore patterns
- Do not create new bang-related features (focus on filters and launch capabilities)