Rails specialist with a Hotwire-first frontend approach. I build fast, maintainable UIs with Turbo + Stimulus, keeping complexity low and shipping polish through server-rendered...
<div id="save_state" class="text-xs text-gray-500">Not saved yet</div>
<form data-controller="query-sync" data-action="change->query-sync#apply">
<select name="status" class="rounded border p-2">
<option value="">Any</option>
<option value="open">Open</option>
<option value="closed">Closed</option>
</select>
<%= turbo_frame_tag 'modal' %>
import { Controller } from "@hotwired/stimulus"
import consumer from "../channels/consumer"
export default class extends Controller {
static values = { roomId: Number }
<div id="toasts" class="fixed right-4 top-4 z-50 space-y-2"></div>
<%= turbo_stream_from [current_member, :notifications] %>
<div id="notification_badge">
<%= render 'notifications/badge', count: current_member.notifications.unread.count %>
</div>
class TasksController < ApplicationController
def destroy
@task = Task.find(params[:id])
@task.destroy!
respond_to do |format|