# Belt > Belt is a Rails-inspired framework for serverless Ruby on AWS Lambda. A Ruby DSL (routes.rb) plus the belt CLI and the conveyor-belt Terraform provider turn a Rails-like app into complete AWS serverless infrastructure (API Gateway, Lambda, DynamoDB, Cognito, CloudFront). Documentation is plain markdown, one file per topic. `llms-full.txt` contains all of it in a single file. ## Docs - [Authentication](https://belt.dev/docs/authentication.md): Cognito owns authentication — passwords, MFA, hosted signup, groups. Belt owns the record of the human Cognito authenticated, so your app can answer its own que - [Backups](https://belt.dev/docs/backups.md): Belt integrates automated pre-deploy backups into the deploy lifecycle. When configured, belt deploy creates recovery points before applying changes. - [Console](https://belt.dev/docs/console.md): belt console (alias: belt c) starts an interactive Ruby session with your application fully loaded — models, configuration, AWS clients, everything. - [Controllers](https://belt.dev/docs/controllers.md): Belt controllers inherit from BeltController::Base and handle HTTP requests dispatched by Belt::ActionRouter. They provide callbacks, strong parameters, respons - [Deployment](https://belt.dev/docs/deployment.md): Belt deploys serverless applications to AWS using Terraform. The CLI wraps terraform init/plan/apply with conventions for environment management, Lambda packagi - [Frontends](https://belt.dev/docs/frontend.md): Belt can host one or more JavaScript SPAs (React, Vue, or Svelte) next to the Lambda API. A typical app has a single frontend/ directory. Some apps — Stowzilla - [Generators](https://belt.dev/docs/generators.md): Belt generators scaffold code and infrastructure for common patterns. Run belt generate --help to see all available generators (built-in + plugins). - [Lambda Handler](https://belt.dev/docs/lambda_handler.md): Belt::LambdaHandler is the module you include in your Lambda entry point. It provides the lambdahandler method that AWS Lambda invokes, wrapping your applicatio - [Models](https://belt.dev/docs/models.md): Belt uses ActiveItem as its ORM for DynamoDB. Models inherit from ActiveItem::Base (typically via an ApplicationRecord base class). - [Observability](https://belt.dev/docs/observability.md): Belt provides structured logging and CloudWatch metrics out of the box. These are initialized automatically by Belt::LambdaHandler — no setup required. - [Plugins](https://belt.dev/docs/plugins.md): Belt plugins are separate gems that extend the CLI and runtime. They're discovered automatically — no registration file or initializer hook needed. - [Routing](https://belt.dev/docs/routing.md): Belt routes map HTTP requests to controller actions. Routes are defined in config/routes.rb using a Ruby DSL that mirrors infrastructure (API Gateway + Lambda). - [Project Structure](https://belt.dev/docs/structure.md): A Belt application follows a conventional directory layout. Understanding this structure helps you navigate and extend the app effectively. ## Optional - [All docs in one file](https://belt.dev/llms-full.txt) - [Search index (JSON)](https://belt.dev/search-index.json) - [Tutorial: build an AI chat app](https://belt.dev/tutorial) - [Belt gem source](https://github.com/stowzilla/belt)