Skip to content

Lennarb is a lightweight, fast and easy for building modular web applications and APIS with Ruby.

License

MIT, MIT licenses found

Licenses found

MIT
LICENCE
MIT
license.md
Notifications You must be signed in to change notification settings

aristotelesbr/lennarb

Lennarb

A lightweight, fast, and modular web framework for Ruby based on Rack. Lennarb supports Ruby (MRI) 3.4+

Test Gem Gem MIT License

Table of Contents

Features

  • Lightweight and modular architecture
  • High-performance routing system
  • Simple and intuitive API
  • Support for middleware
  • Flexible configuration options
  • Two implementation options:
    • Lennarb::App: Minimalist approach for single applications
    • Lennarb::Base: Extended version for mounting multiple applications

Installation

Add this line to your application's Gemfile:

gem 'lennarb'

Or install it directly:

gem install lennarb

Quick Start

Create a simple application with routes:

require "lennarb"

app = Lennarb::App.new do
  get("/") do |req, res|
    res.html("<h1>Welcome to Lennarb!</h1>")
  end

  get("/hello/:name") do |req, res|
     name = req.params[:name]
     res.html("Hello, #{name}!")
  end
end

app.initialize!
run app  # In config.ru

Start with: rackup

Basic Usage

Creating a Simple Application

The Lennarb::App class is the core of the framework:

require "lennarb"

class MyApp < Lennarb::App
  # Define configuration
  config do
    mandatory :database_url, string
    optional :port, int, 9292
  end

  get("/") do |req, res|
    res.html("<h1>Welcome!</h1>")
  end

  post("/users") do |req, res|
    # Access request data
    data = req.body
      res.json({status: "created", data: data})
    end
  end

  # Define hooks
  before do |req, res|
    # Run before every request
    puts "Processing request: #{req.path}"
  end

  after do |req, res|
    # Run after every request
    puts "Completed request: #{req.path}"
  end

  # Define helper methods
  helpers do
    def format_date(date)
      date.strftime("%Y-%m-%d")
    end
  end
end

run MyApp.new.initialize!

Response Types

Lennarb provides various response methods:

# HTML response
res.html("<h1>Hello World</h1>")

# JSON response
res.json({message: "Hello World"})

# Plain text response
res.text("Plain text response")

# Redirect
res.redirect("/new-location")

# Custom status code
res.json({error: "Not found"}, status: 404)

Mounting Applications

For larger applications, use Lennarb::Base to mount multiple apps:

class API < Lennarb::App
  get("/users") do |req, res|
    res.json([{id: 1, name: "Alice"}, {id: 2, name: "Bob"}])
  end
end

class Admin < Lennarb::App  
  get("/dashboard") do |req, res|
    res.html("<h1>Admin Dashboard</h1>")
  end
end

class Application < Lennarb::Base
  # Add common middleware
  middleware do
    use Rack::Session::Cookie, secret: "your_secret"
  end

  # Mount applications at specific paths
  mount(API, at: "/api")
  mount(Admin, at: "/admin")
end

run Application.new.initialize!

Documentation

For more detailed information, please see:

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -am 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

This project uses the Developer Certificate of Origin and is governed by the Contributor Covenant.

License

MIT License - see the LICENSE file for details.

About

Lennarb is a lightweight, fast and easy for building modular web applications and APIS with Ruby.

Topics

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENCE
MIT
license.md

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages