Build your next panel
with Lato
A Rails Engine that gives you a complete web application starter kit: authentication, user management and UI components, ready in minutes.
- No paid tiers, no lock-in
- MFA and passkeys built in
- WCAG 2.2 AA audited
- 4 languages
- 5 official engines
Everything you need to launch.
Nothing you have to rebuild.
Stop writing the same login, account page and data table for every project. Lato gives you the foundation, you focus on what makes your product unique.
User Management
Full authentication system with signin, signup, password recovery, email validation, Google Authenticator and WebAuthn (passkeys) MFA, and ETH wallet connection.
Modern UI
Web interface built with Bootstrap and Bootstrap Icons, featuring integrated UI components like data tables, forms, and modals.
Stack Agnostic
Works with different databases (PostgreSQL, MySQL, SQLite), job processors (Solid queue, Sidekiq, Delayed Job), and cache systems.
Customizable & Extendable
The gem is designed to be easily customizable and extendable. You can fully customize the UI and functionalities, add new features to your main application, or develop new engines to extend the panel.
Modern Rails Features
Ready to use with Rails 8.1 (>= 8.1.3.1, < 8.2) features like ESM import maps, Turbo and Stimulus. The front-end is responsive and mobile friendly.
Accessible by Design
Keyboard friendly, screen reader aware components audited with axe-core against WCAG 2.2 AA rules. Accessibility comes built in, not as an afterthought.
See it in action
Data tables, forms and account management, ready on day one.

Index tables with search, sorting, pagination and custom columns

Forms with advanced inputs: autocomplete, lists, signatures, dropzone

Account management with email verification, password change and MFA

Complete authentication flow, including Web3 wallet login
Accessible panels,
out of the box
Accessibility is quickly becoming a requirement, not a nice to have: the European Accessibility Act applies to many digital services since June 2025, and public tenders ask for it. With Lato, every screen you build already follows accessible patterns, so your team ships features instead of retrofitting them.
Ship faster
No accessibility backlog at the end of the project: forms, tables and modals are accessible from day one.
Reach every user
Keyboard, screen reader, password manager and mobile users get a panel that simply works.
Win more deals
Answer accessibility questions in tenders and security reviews with a measured, documented baseline.
Lower the risk
Start from components tested against WCAG 2.2 AA rules instead of auditing everything yourself.
Built in, no configuration needed
- Labelled fields
- Linked error messages
- Keyboard friendly modals
- Focus return
- Skip link
- Sortable tables with aria-sort
- Live region notifications
- Readable badge colors
- Autofill and one-time-code hints
Automated audits catch many issues but do not prove full WCAG conformance. We recommend manual testing with assistive technologies for your application, especially if you customize colors.
Grow with official engines
Add only what you need. Every engine plugs into the same panel, permissions and design.
Your engine
Build your own module with the same components and conventions.
Installation
Up and running in a few minutes, in any Rails 8.1 application.
-
Add Dependencies
Add required dependencies to your application's Gemfile:
# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] gem "importmap-rails" # NOTE: Probably already installed in default Rails 8 project # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] gem "turbo-rails" # NOTE: Probably already installed in default Rails 8 project # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] gem "stimulus-rails" # NOTE: Probably already installed in default Rails 8 project # Use Sass to process CSS gem "sassc-rails" # Use lato as application panel gem "lato"Lato stores rate limits and verification codes in
Rails.cache: use a persistent cache shared across processes (Redis, Solid Cache, Memcached). Wallet login (Web3) also requiresgem "eth"in your Gemfile. -
Configure Asset Manifest
If not already present, add app/assets/config/manifest.js file with the following content:
//= link_tree ../images //= link_directory ../stylesheets .css //= link_tree ../../javascript .js //= link_tree ../../../vendor/javascript .js -
Install and Setup
Install gem and run required tasks:
$ bundle $ rails active_storage:install $ rails lato:install:application $ rails lato:install:migrations $ rails db:migrate -
Configure Routes
Mount lato routes on the config/routes.rb file:
Rails.application.routes.draw do mount Lato::Engine => "/lato" # .... end -
Import Styles
Import Lato Scss on app/assets/stylesheets/application.scss file:
@import 'lato/application'; // .... -
Import JavaScript
Import Lato Js on app/javascript/application.js file:
import "lato/application"; // .... -
Setup I18n
Setup I18n on the config/application.rb file:
module MyApplication class Application < Rails::Application config.i18n.available_locales = [:it, :en] config.i18n.default_locale = :it # ... end endLato ships translations for
it,en,frandro. Any key can be overridden in your application locale files. Emails are available in Italian and English (other locales receive English).
Ready to build better panels, faster?
Free and open source under the MIT license. Start with the tutorial and have your first panel running today.