A modern Next.js application for decoding Hyperliquid CoreWriter actions from transaction logs. Built with React 19, Next.js 15, and TypeScript for optimal performance and developer experience.
- π Transaction Analysis: Decode CoreWriter actions from Hyperliquid transaction logs
- π Multi-Network Support: Mainnet, Testnet, and custom RPC endpoints
- β‘ Modern Stack: Next.js 15 with App Router, React 19, TypeScript
- π Zero Vulnerabilities: Secure, up-to-date dependencies
- π± Responsive Design: Works seamlessly on desktop and mobile
- π Optimized Performance: Static export with automatic code splitting
- π οΈ Developer Experience: Hot reload, TypeScript, ESLint
- Node.js: 18.18.0 or higher (or active LTS 20+ recommended)
- pnpm: 9.15.0 or higher (required - this project uses pnpm)
# Clone the repository
git clone https://github.com/silhouette-exchange/corewriter-trace.git
cd corewriter-trace
# Install dependencies with pnpm (preferred)
pnpm install
# Alternatively, you can use npm if needed
npm installNote: This project uses pnpm as the preferred package manager. While npm will work, pnpm provides better performance and disk space efficiency. The
package-lock.jsonfile is gitignored in favor ofpnpm-lock.yaml.
# Start development server
pnpm dev
# The app will be available at http://localhost:3000# Build the application (produces static files in out/ directory)
pnpm build
# Serve the static export with a static file server
pnpm start
# Or use npx serve directly
npx serve out/Note: This project uses Next.js with output: 'export' which produces static files. Next.js production server (next start) is disabled for export mode, so a static file server must be used instead.
- Select Network: Choose between Mainnet, Testnet, or enter a custom RPC endpoint
- Enter Transaction Hash: Paste the transaction hash you want to analyze
- Load Transaction: Click "Load" to fetch and decode CoreWriter actions
- View Results: Examine the decoded actions with detailed parameter information
Try this sample transaction hash on Mainnet:
0xfda27b7180779cfd99ebcd5a451bb68dead6d89fab8e508a7b5b6d137dccd51e
corewriter-trace/
βββ app/ # Next.js App Router
β βββ components/ # React components
β β βββ CoreWriterActionLog/ # Action log decoder component
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Main page component
βββ public/ # Static assets
βββ next.config.js # Next.js configuration
βββ package.json # Dependencies and scripts
βββ pnpm-lock.yaml # pnpm lockfile
βββ tsconfig.json # TypeScript configuration
βββ README.md # This file
app/page.tsx: Main application component with transaction loading logicapp/components/CoreWriterActionLog/: Decoder component for CoreWriter actionsapp/layout.tsx: Root layout with metadata and global styles
- Framework: Next.js 15 with App Router
- UI Library: React 19
- Language: TypeScript 5.9
- Blockchain: Ethers.js 6.15
- Package Manager: pnpm 9.15+
- Styling: CSS with modern features
- Linting: ESLint with Next.js configuration
# Development
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Start production server
# Quality Assurance
pnpm lint # Run ESLint
pnpm type-check # Run TypeScript type checking
pnpm test # Run tests (when configured)
# Maintenance
pnpm clean # Clean build artifacts and cacheThe application supports multiple network configurations:
- Mainnet RPC:
https://rpc.purroofgroup.com - Testnet RPC:
https://rpc.hyperliquid-testnet.xyz/evm - Custom RPC: User-configurable endpoint
- Components: Add new components in
app/components/ - Styles: Add component styles to
app/globals.css - Types: Define TypeScript types inline or in separate files
- Utils: Add utility functions as needed
The app is configured for static export in next.config.js:
const nextConfig = {
output: 'export', // Static export
trailingSlash: true, // Add trailing slashes
images: {
unoptimized: true // Disable image optimization for static export
}
}Optimized for Next.js with modern features:
{
"compilerOptions": {
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"plugins": [{"name": "next"}],
"paths": {"@/*": ["./*"]}
}
}The application is configured for static export, making it deployable to any static hosting service:
# Build and export
pnpm build
# The static files will be in the 'out' directory
# Deploy the 'out' directory to your hosting service- Vercel: Automatic deployment with Git integration
- Netlify: Drag-and-drop or Git-based deployment
- GitHub Pages: Static hosting with GitHub Actions
- AWS S3: Static website hosting
- Any CDN: Upload the
outdirectory
No environment variables are required for basic functionality. For custom configurations, you can add:
# .env.local (optional)
NEXT_PUBLIC_DEFAULT_RPC_URL=your-custom-rpc-url- β Zero vulnerabilities: All dependencies are up-to-date and secure
- β No deprecated packages: Modern, maintained dependencies only
- β TypeScript: Type safety throughout the application
- β ESLint: Code quality and security linting
- β Static export: No server-side vulnerabilities
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Use TypeScript for all new code
- Follow the existing code style and patterns
- Add appropriate error handling
- Test your changes thoroughly
- Update documentation as needed
This project is private and proprietary to Silhouette Exchange.
For questions, issues, or feature requests:
- Check existing GitHub Issues
- Create a new issue with detailed information
- Contact the development team
This application was migrated from Create React App to Next.js 15 for:
- Better Performance: Automatic code splitting and optimization
- Modern Features: Latest React and Next.js capabilities
- Security: Zero vulnerabilities vs. 9 in the previous version
- Developer Experience: Better tooling and faster builds
- Future-Proof: Built on modern, actively maintained technologies
All functionality from the original CRA version has been preserved while gaining significant improvements in performance, security, and maintainability.
Built with β€οΈ by the Silhouette Exchange team