# awesome-sinatra

> A curated list of awesome projects made or inspired with Sinatra.

# Contents

- General
- Generators
- Authroization
- Authentication
- Blogging
- Boilerplate and Template
- Community platform
- Continous Integration
- CMS
- Debugging and Profiling
- Email
- File Uploading
- Internet Application Clones
- Micro Frameworks inspired by Sinatra
- Micro Frameworks inspired by Sinatra (Other Languages)
- NoSQL
- ORM
- Routers
- Service Integration
- Stylesheets
- Testing
- Wiki Engine
- Writing APIs

## General

- Sinatra - Sinatra Official website.
- Sinatra on Github
- Sinatra Receipes - Community contributed recipes and techniques.
- Sinatra - The Book - A cookbook full of excellent tutorials and recipes for developing Sinatra web applications. It’s git repo is here
- sinatra.github.com repo - This repo contains the Sinatra website and documentation sources published at http://sinatra.github.com/.
- Sinatra in the wild - Various applications, extensions and websites built with Sinatra.
- Sinatra mailing list

## Generators

- Corneal - A Sinatra app generator with Rails-like simplicity.
- Hazel - A simple Sinatra app generator, heavily based on snfn.
- Snfn - A Sinatra application generator.

## Authroization

- Sinatra Authorization - HTTP Authorization helpers for Sinatra.
- Sinatra-authorize - Smooth authentication-agnostic rule-based authorization extension for Sinatra.

## Authentication

- hancock - An OpenID based Single Sign On server with a simple API, written in Sinatra
- hancock-client - A sinatra app and rack middleware piece for the hancock SSO server
- sinatra-oauth-provider - A Sinatra OAuth Provider.

## Blogging

- Blorgit - A simple org-mode based, git amenable, blogging engine running on sinatra.
- Haze - A minimalistic blogging engine, the successor of Honk (~200 LOC).
- Honk - A minimalistic, YAML, text-based blogging engine.
- Marley - Minimalist blogging engine without textareas based on Markdown, Ruby, Sinatra and Git push hooks.
- Postview - A simple blog-engine that render text files written in Markdown.
- Scanty - A really small blogging software.
- Scanty with CouchDB - Scanty using CouchDB.
- scanty-redis - Scanty using redis.
- sin - A mini blog engine in Sinatra with hAtom and MetaWeblog API and S3 upload support (~160 LOC).
- Sinandra - A blog engine using Sinatra and Cassandra.
- Wind - HTML5 blog engine focused in a easy, extensible and fast admin.
- Yet-another-Sinatra-Blog-Engine - A simple blog engine written in Ruby using Sinatra.

## Boilerplate and Template

- Frank-Sinatra - A boilerplate for modular MVC style Sinatra (1.4.2^) applications.
- puresong - A small Sinatra application that demonstrates use of Pure CSS with SQLite.
- ratpack - Sinatra boilerplate using activerecord, sqlite, and twitter bootstrap.
- sinatra-boilerplate - Starter Kit for Sinatra Apps. It uses Twitter Bootstrap 3, jQuery and Modernizr
- sinatra-boilerplate - Another boilerplate combined with HTML 5 Boilerplate, Compass, CoffeeScript and Sprockets.
- sinatra-boilerplate - Sinatra, Zurb Foundation, Guard, Slim, Compass, RSpec, Capybarra… All the bling ready to go.
- sinatra-boilerplate - Sinatra + Haml + Sass + Compass + Bourbon + CoffeeScript.
- sinatra-foundation-skeleton - A skeleton Sinatra application which utilizes Zurb’s Foundation 3 framework.
- sinatra-template - A base Sinatra application template with DataMapper, and RSpec.
- sinatra-twitter-bootstrap - Twitter Bootstrap Sinatra extension with HAML helpers.

## Community Platform

- sinforum - Simple forum build with Sinatra, DataMapper, Haml, SASS and CoffeeScript.

## Continuous Integration

- Integrity - A continuous integration server.
- Travis CI - Free continuous integration platform for GitHub projects. Some sub-projects of Travis CI uses Sinatra, including travis-api, travis-listener, travis-logs , travis-build and travis-web

## CMS

- Nesta - A lightweight CMS, implemented in Sinatra. Content can be written in Markdown or Textile and stored in text file
- Spontaneous - An CMS with intuitive, attractive and responsive HTML5 interface

## Debugging and Profiling

> For more, check the “Middlewares for Debugging or Profiling” section in awesome-rack

- Better Errors - Better Errors replaces the standard Rails error page with a much better and more useful error page. It is also usable outside of Rails in any Rack app as Rack middleware.
- rack-mini-profiler - Middleware that displays speed badge for every html page. A simple but effective mini-profiler for .NET, Ruby, Go and Node.js. Introduced in Railscasts #368 MiniProfiler
- racksh - Console for Rack based ruby web apps. It’s like script/console in Rails (~ 100 LOC) or merb -i in Merb, but for any app built on Rack. Thanks to Rack::Test::Methods (from rack-test) and Ruby REPLs (pry and irb).
- tux - A sinatra shell to interacte with helpers, view rendering and to view your app’s routes and settings.

## Email

- sinatra-email-services-server - An email services server using Sinatra.
- sinatra-mailer - Send emails from Sinatra in a very simple way.

## File Uploading

- CarrierWave - A classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks.

## Internet Application Clones

- chirp - Simple Sinatra-based micro-blog/Twitter clone.
- shorty - URL shortener written in Sinatra & MongoDB.

## Micro Frameworks inspired by Sinatra

- Angelo - Sinatra-like DSL for Reel that supports WebSockets and SSE in their own thread, called “cells” (or actors).
- Dolly - Minimal Ruby microframework inspired by Sinatra.
- Gin - A small Ruby web framework, built on Rack, which borrows from Sinatra expressiveness, and targets larger applications.
- Hobbit - A minimalistic microframework built on top of Rack (thanks to `Rack::Builder`). Hobbit is a DSL inspired by Sinatra. (~ 150 LOC).
- Nancy - Minimal Ruby microframework for web development inspired in `Sinatra` and `Cuba` (~150 LOC).
- padrino - Padrino is a full-stack ruby framework built upon Sinatra.
- Rack::App - Bare bone minimalistic (masochistic) pico framework for building rack apps. Inspired by sinatra, grape and the pure use form of Rack.
- Sin - A multi-app web-app DSL derived from Sinatra, riding on rack. Sin is a rebuild of sinatra, splitting up the classes into files and going for a reusable application class.
- Scorched - Light-weight, DRY as a desert, web framework for Ruby. Simliar to Sinatra. Scorched is a true evolutionary enhancement of Sinatra, with more power, focus, and less clutter.

## Micro Frameworks inspired by Sinatra (Other Languages)

- Bash: Astley, sh.inatra
- C: Bogart
- C++: Garland
- Clojure: Compojure
- CoffeeScript: Zappa
- Crystal: frank, kemal
- Dart: Start
- Elixir: Plug, Spirit
- Erlang: Fresh, Spooky
- Haskell: Bird, Miku, Scotty
- Go: Martini, Spooky
- Groovy: Graffiti
- Java: Spark
- JavaScript: Express, Sammy
- Julia: Moresel.jl
- Lua: Mercury, Orbit
- .NET: Martini, Nancy, Nina
- Perl: Dancer, Mojolicious
- PHP: FatFree, Fitzgerald, Klein, Zaphpa
- Python: itty, Flask
- Scala: Finatra, Scalatra
- Vala: Valatra

## NoSQL

> Column

- Sinandra - A blog engine using Sinatra and Cassandra.

> Document

- sinatra-mongo - A light extension to sinatra for using mongo.
- sinatra-mongoid - A Mongoid (ODM, Object-Document-Mapper for MongoDB) extension for Sinatra.

> Key-value

- redis-sinatra - Redis stores for Sinatra.
- riak-browser - A simple ruby/Sinatra Riak browser and editor.

## ORM

- bowtie - Simple admin interface generator for MongoMapper (mongo) & DataMapper (dm) models.
- sinatra-activerecord - Extends Sinatra with ActiveRecord helper methods and Rake tasks.
- sinatra-datamapper - A Sinatra extension for DataMapper ORM support.
- sinatra-sequel - Sinatra extension that adds Sequel ORM features, database config, and database migrations.

## Routers

- http_router_sinatra - Kick ass router for Sinatra based on http_router.
- SimpleRouter - Small and simple standalone router, meant for use with Rack applications. Familiar Sinatra-like DSL for defining actions. Modular architecture.
- sinatra-advanced-routes - Make Sinatra routes first class objects (extracted from BigBand).
- sinatra-router - A tiny vendorable router that makes it easy to try routes from a number of different modular Sinatra applications

## Service Integration

> Slack

- beach - Small Sinatra app to host web hooks for Slack.
- dogetip-slack - Sinatra app to enable Dogecoin tipping via slack
- doorbell-server - Simple Sinatra app which acts a bridge between Slack and the LMN doorbell.
- snarkov - Sinatra-based Markov bot for Slack.

> MISC

- frankie - a Sinatra plugin allows you to easily create a Facebook application.
- shopify-sinatra-app - Lightweight extension for building Shopify apps using Sinatra

## Stylesheets

- sinatra-compass - Integrates the Compass stylesheet framework with Sinatra.
- haml-more - Adds more functionality to Haml and Sass.

## Testing

- cucumber-sinatra - Help you to initialize a cucumber environment for a sinatra application. It will generate the required files from templates.
- mumuki-ruby-server - Sinatra server for running Rspec tests within Mumuki. Mumukit is a Test Server Development Kit.
- mock_server - A lightweight Sinatra application backed by sqlite that can mock ReST responses. Has interface to easily create, search & maintain mocks.
- rspec-sinatra - Help you to initialize a RSpec environment for a sinatra application. It will generate the required files from templates.

## Wiki Engine

- bliki - A small blog + wiki engine built on Sinatra + Stone.
- git-wiki - A quick & dirty git-powered Sinatra wiki (~200 LOC).
- lilwiki - A small wiki backed by sqlite.
- rikiki - Tiny wiki engine using in browser markdown and Sinatra.
- Weaky - A basic CouchDB/Sinatra wiki.

## Writing APIs

- API-mock-server - A Full-Featured API Mock Server built with Sinatra and MongoDB.
- Pliny - Pliny helps Ruby developers write and maintain excellent APIs.
- pliny-template - Base Sinatra app for writing excellent APIs in Ruby
- sinatra-hat - Easy REST-ful apps with Sinatra. Mount models as web services.
- sinatra-reset - Generates RESTful routes for the models of a Sinatra application (ActiveRecord, DataMapper, Stone)

## License

To the extent possible under law, coopermaa has waived all copyright and related or neighboring rights to this work.