Projects

Etherway

Cross-chain swaps, token and NFT transfers, and gas refuelling in one application.

Built end to end by CJSKI.

Next.jsTypeScriptLayerZeroHyperlane
Etherway project banner from its public repository.

The problem

Cross-chain activity involves different networks, wallets, fees and protocol rules. Etherway brings swaps, token and NFT transfers, and gas refuelling into one application.

My contribution

I built Etherway end to end, including the interface and its integrations.

Architecture

Application interface

Next.js and TypeScript components manage network and token selection, quotes, wallet state and transaction-status views.

Protocol integrations

Squid routing and provider-specific LayerZero V2 and Hyperlane handlers handle route execution, fee quotes and contract calls.

Application data

Prisma models a PostgreSQL data layer for users, interactions, referrals and project/task records.

Integration decisions

Separate quoting, execution and status

The bridge keeps route-fetching, transaction-execution and status-modal state separate. That makes an asynchronous cross-chain operation visible as more than a single button click.

Keep protocol rules in adapters

Provider-specific handlers contain differences in fee quoting and contract calls. This keeps those differences out of the shared interface, while leaving separate integration paths to maintain.

Reconcile dependent network selections

The gas-refuel interface checks valid destination networks when the source changes and resets an incompatible selection. Network choice changes the valid operation, not just its label.

Evidence and current limits

The public repository includes the bridge interface, refuelling flow, protocol adapters and database models. The source links below show each part.

  • The hosted demo could not be reached during the latest link check.
  • Live workflows depend on external RPC endpoints, routing services and bridge providers.
  • Network and provider support should be checked against current deployments before reusing the code.

Inside the repository

Bridge interfacesrc/components/squid/bridge.tsxPostgreSQL data modelsprisma/schema.prismaGas-refuel workflowsrc/components/gas/gas-refuel.tsxContract interaction handlerssrc/utils/contracts/handlers/handleBridging.ts