{"id":13492853,"url":"https://github.com/simonneutert/sinatras-skeleton","last_synced_at":"2025-07-22T01:06:18.250Z","repository":{"id":18250637,"uuid":"83885739","full_name":"simonneutert/sinatras-skeleton","owner":"simonneutert","description":"Basic Sinatra Skeleton MVC CRUD App with Sprockets, Warden, ActiveRecord and PostgresQL","archived":false,"fork":false,"pushed_at":"2025-07-02T20:30:41.000Z","size":425,"stargazers_count":19,"open_issues_count":4,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-02T21:32:48.166Z","etag":null,"topics":["activerecord","boilerplate","boilerplate-application","coffeescript","crud-application","haml","heroku","heroku-ready","mvc","postgres","postgresql","ruby","sass","sinatra","sinatra-skeleton","sprockets","template","turbolinks","warden"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonneutert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"License","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-03-04T10:32:57.000Z","updated_at":"2025-07-02T20:30:45.000Z","dependencies_parsed_at":"2023-10-03T11:32:24.896Z","dependency_job_id":"1cb53902-688d-4db8-afad-6317a50bdc63","html_url":"https://github.com/simonneutert/sinatras-skeleton","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/simonneutert/sinatras-skeleton","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonneutert%2Fsinatras-skeleton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonneutert%2Fsinatras-skeleton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonneutert%2Fsinatras-skeleton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonneutert%2Fsinatras-skeleton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonneutert","download_url":"https://codeload.github.com/simonneutert/sinatras-skeleton/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonneutert%2Fsinatras-skeleton/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266405405,"owners_count":23923536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["activerecord","boilerplate","boilerplate-application","coffeescript","crud-application","haml","heroku","heroku-ready","mvc","postgres","postgresql","ruby","sass","sinatra","sinatra-skeleton","sprockets","template","turbolinks","warden"],"created_at":"2024-07-31T19:01:09.893Z","updated_at":"2025-07-22T01:06:18.220Z","avatar_url":"https://github.com/simonneutert.png","language":"Ruby","funding_links":[],"categories":["Boilerplate and Template"],"sub_categories":[],"readme":"# Basic Sinatra ~v3~ v4 🥳 App with Sprockets, Warden, ActiveRecord and Postgres\n\nTake this as a working example and as an inspiration. Pull Requests are welcome 🙏\n\n[![ruby](https://github.com/simonneutert/sinatras-skeleton/actions/workflows/ruby.yml/badge.svg)](https://github.com/simonneutert/sinatras-skeleton/actions/workflows/ruby.yml)\n\n### Have you tried Roda?\n\nthink sinatra is nice? Don't forget to [give Roda a chance](https://github.com/jeremyevans/roda-sequel-stack)!  \nbrowse through my repos 😉😇\n\n---\n\n## What this Project aims to be\n\n**This repository aims to be a boilerplate for a modular and modern (v4) Sinatra app.**\n\nThere used to be a demo on heroku, but heroku is no more (free of charge at least) 🪦\n\n*Please check out the [credits](#credits) section! Without the community, this never would have been possible. Thank you.*\n\n* [Why?](#why)\n* [What is in?](#what)\n* [Get started](#start)\n* [Credits](#credits)\n\n*Feel free to contribute, add more features, strip features or simply improve existing code* - __pull requests welcome__ :smile:\n\n## \u003ca name=\"why\"\u003e\u003c/a\u003eWhy not Rails?\n\nSinatra is a ruby/rack framework, that can be used as an alternative where Rails would simply be an overkill.\n\nI started working my way through the sinatra docs, aiming for a setup that can easily be modeled to a basic use case.\n\n---\n\n\u003e Have you tried Roda, Sequel and Rodauth?  \n\nYes! And I totally use that setup whenever possible (November 2021) and you should try at least roda as a POC 😎 I am 100 % serious! There's nothing wrong with sinatra, but roda kills it. The journey will undoubtedly make you a better (ruby) programmer.\n\n## \u003ca name=\"what\"\u003e\u003c/a\u003eWhat is in?\n\nI want this Sinatra boilerplate app to:\n\n* work with Bundler\n* use ActiveRecord as ORM\n* have an MVC-like structure\n* support Sass/Scss and CoffeeScript\n* party with [jQuery](http://jquery.com) and [Turbolinks](https://github.com/turbolinks/turbolinks)! Yes, Turbolinks.\n* rolls with a very basic bcrypt/warden based Authentication System\n* use PostgresQL as Database\n* run on heroku (don't forget: `$ heroku config:add APP_ENV=production`)\n\n## \u003ca name=\"start\"\u003e\u003c/a\u003eGet started\nYou need **Ruby (\u003e= 3.2)** and **Bundler** (of course).\n\n* `$ git clone`\n* `$ bundle install`\n* edit __config/database.yml__\n* set `SESSION_SECRET` environment variable (see `.env.example`)\n* `$ rake db:setup`\n* `$ bundle exec puma` or `rerun rackup` ([rerun](https://github.com/alexch/rerun) gem - _not included by default!_)\n* visit `localhost:9292` in your browser\n* edit titles in __views/layout.erb__ and __views/nav.erb__\n* check/set timezone __config/timezone.rb__\n\n### now what?\n* read the credits\n* read the code\n* run the code, see what it does\n* delete what you don't need and built from there, should a barebone branch be offered? What do you think? :grin:\n\nMost code is commented, so you'll learn what it does.\n\n### What needs to be done\n* enable flash messages, especially for validation feedback\n\n## Contribute\n* Send in pull requests, improve this project with features or **simply by adding/improving comments** :grin:\n* Be nice, make public forks\n* What did you use this app for? Please, let me know! Share your projects.\n\n## \u003ca name=\"credits\"\u003e\u003c/a\u003eCredits / Blood, Sweat \u0026 Tears\n:heart: :sweat: :sob:\n\n**Contributors to this project**\n\nhttps://github.com/simonneutert/sinatras-skeleton/graphs/contributors\n\nthank you for open sourcing, writing documentation, blogging, answering and giving a hand on stackoverflow :thumbsup:\n\n**Warden**\n\n[sklises repo](https://github.com/sklise/sinatra-warden-example)\n\n[Steve Klise Blog post](https://sklise.com/2013/03/08/sinatra-warden-auth/)\n\n[Coderwall on Sinatra + Warden](https://coderwall.com/p/ellbgw/sinatra-authentication-with-warden)\n\n[What Ches wrote up](https://gist.github.com/ches/243611)\n\n[What Mike Ebert wrote](http://mikeebert.tumblr.com/post/27097231613/wiring-up-warden-sinatra)\n\n**ActiveRecord + PostgresQL**\n\n[mherman](http://mherman.org/blog/2013/06/08/designing-with-class-sinatra-plus-postgresql-plus-heroku/#.WKrnsxiX_-k)\n\n[samuelstern](https://samuelstern.wordpress.com/2012/11/28/making-a-simple-database-driven-website-with-sinatra-and-heroku/)\n\n**BCrypt**\n\n[Kieran's Answer on StackOverflow](http://stackoverflow.com/questions/39525723/bcrypterrorsinvalidhash-error-in-rails/39526561#39526561)\n\n[BCrypt Gem](https://github.com/codahale/bcrypt-ruby#how-to-use-bcrypt-ruby-in-general)\n\n**Sprockets**\n\n[Sinatra Recipe for Sprockets](http://recipes.sinatrarb.com/p/asset_management/sprockets)\n\n**Official Sinatra Docs**\n\n[Sinatra Intro](http://www.sinatrarb.com/intro.html)\n\n[Sinatra recipes](http://recipes.sinatrarb.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonneutert%2Fsinatras-skeleton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonneutert%2Fsinatras-skeleton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonneutert%2Fsinatras-skeleton/lists"}