Achilles
A JavaScript lifecycle layer for Rails and Turbo apps, with component classes as an alternative to Stimulus.
Use it for class-based browser behavior, Turbo lifecycle hooks, and importmap-based JavaScript inside a Rails app.
We built these libraries for recurring jobs in Rails applications, including metadata, form objects, and JavaScript lifecycle behavior. They are available for other teams to use.
Each tool handles a specific job inside a Rails app. You can use the one you need.
A JavaScript lifecycle layer for Rails and Turbo apps, with component classes as an alternative to Stimulus.
Use it for class-based browser behavior, Turbo lifecycle hooks, and importmap-based JavaScript inside a Rails app.
A Rails gem that renders page titles, meta tags, Open Graph tags, Twitter cards, breadcrumbs, and Schema.org JSON-LD from page objects.
Keep metadata consistent across pages without writing the same tags in every template.
A Rails gem for getting model-like behavior without saving records to the database.
Use it for contact forms, request objects, and other inputs that need validation but do not need their own database records.
We write examples, test changes, and document releases so other teams can understand and use the tools.
We keep the gems small, with releases, changelogs, tests, and README examples to help people use them.
These tools grew out of work on metadata, form objects, Turbo behavior, and Rails engine integration in our applications.
We aim for small, documented APIs that are easier to understand and maintain through Rails upgrades.
We can help your team work on Rails code, shared libraries, and upgrades with clear interfaces, tests, and documentation.