Full-featured Solana dapp using the Rails 8 default stack. Wallet auth, token portfolio, real-time updates, and transactions.
Portfolio Value
$2,847.63
Solana
24.5 SOL
$2,284.65
USD Coin
412.50 USDC
$412.50
Jupiter
182.3 JUP
$150.48
Bonk
2.4M BONK
$48.20
Built with the Rails 8 default stack. No external dependencies beyond what ships with Rails.
Sign in with any Solana wallet via SIWS. Ed25519 signature verification in Ruby. No passwords.
SOL and SPL token balances with icons, names, and USD prices from Jupiter. Metadata persisted in DB.
Solana WebSocket subscriptions push balance changes instantly via ActionCable and Turbo Streams.
Rails validates, @solana/kit builds the transaction, wallet signs it. Confirmation tracked via background job.
Solid Cache for RPC responses, Solid Queue for background jobs, Solid Cable for WebSocket broadcasts. All SQLite.
Hotwire, Turbo, Stimulus, Tailwind, esbuild, Kamal. No React. No external infrastructure. Just Rails.
Standard Rails patterns you already know. No new framework to learn.
class SiwsVerifier
def verify!
verify_message_format!
verify_domain!
verify_signature!
end
def verify_signature!
pubkey = Base58.base58_to_binary(addr)
key = Ed25519::VerifyKey.new(pubkey)
key.verify(signature, message)
end
end
def create
verifier = SiwsVerifier.new(
wallet_address: params[:wallet],
message: params[:message],
signature: params[:signature]
)
if verifier.verify
session[:user_id] = user.id
end
end
<%= turbo_stream_from "wallet_#{@address}" %>
<%= render "portfolio_value" %>
<%= render "token_list" %>
<%= render "recent_activity" %>
import { pipe,
createTransactionMessage,
compileTransaction
} from "@solana/kit"
const tx = pipe(
createTransactionMessage({ version: 0 }),
tx => setFeePayer(sender, tx),
tx => appendInstruction(ix, tx),
)
This app is powered by SolRengine — open-source Ruby gems for building Solana dApps with Rails 8. Wallet auth, RPC, tokens, transactions, and real-time updates out of the box.
$
bundle add solrengine