{"id":13492747,"url":"https://github.com/kuntoaji/sinator","last_synced_at":"2025-07-30T00:31:31.067Z","repository":{"id":54587812,"uuid":"28262644","full_name":"kuntoaji/sinator","owner":"kuntoaji","description":"Sinatra application generator","archived":false,"fork":false,"pushed_at":"2025-02-14T10:49:13.000Z","size":204,"stargazers_count":20,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-02T18:09:06.031Z","etag":null,"topics":["api","application-boilerplate","boilerplate","database","gem","gems","generator","generators","puma","ruby","rubygems","sequel","sinatra","web","web-application"],"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/kuntoaji.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"kuntoaji","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2014-12-20T09:22:56.000Z","updated_at":"2025-05-13T18:14:40.000Z","dependencies_parsed_at":"2025-02-14T11:39:00.433Z","dependency_job_id":null,"html_url":"https://github.com/kuntoaji/sinator","commit_stats":null,"previous_names":["kuntoaji/melodiest"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/kuntoaji/sinator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuntoaji%2Fsinator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuntoaji%2Fsinator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuntoaji%2Fsinator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuntoaji%2Fsinator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuntoaji","download_url":"https://codeload.github.com/kuntoaji/sinator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuntoaji%2Fsinator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267456265,"owners_count":24090147,"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-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["api","application-boilerplate","boilerplate","database","gem","gems","generator","generators","puma","ruby","rubygems","sequel","sinatra","web","web-application"],"created_at":"2024-07-31T19:01:08.825Z","updated_at":"2025-07-30T00:31:30.636Z","avatar_url":"https://github.com/kuntoaji.png","language":"Ruby","readme":"[![Gem Version](https://badge.fury.io/rb/sinator.svg)](https://badge.fury.io/rb/sinator)\n[![Maintainability](https://api.codeclimate.com/v1/badges/ae5f04c99c02d4efbadd/maintainability)](https://codeclimate.com/github/kuntoaji/sinator/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/ae5f04c99c02d4efbadd/test_coverage)](https://codeclimate.com/github/kuntoaji/sinator/test_coverage)\n\n# Background\n\nSinator is [Sinatra](http://www.sinatrarb.com/) application generator. It will generate Sinatra application with minimum configuration.\nThe reasons behind this project because I want to create many small web application based on sinatra with other third party ruby gems as foundation.\n\n# Features\n* Generate Sinatra based web application without database\n* Generate Sinatra based web application with PostgreSQL database configuration and Sequel as ORM\n* Rake task for assets precompile and assets clean\n\n### Installation\n\n```ruby\ngem install sinator\n```\n\nwith Bundler, put this code in your Gemfile:\n\n```ruby\ngem 'sinator'\n```\n\n### How to Use\n\nGenerate app in current directory without database.\n\n```\nsinator -n my_app\n```\n\nGenerate app in target directory without database.\n\n```\nsinator -n my_app -t target/dir\n```\n\nGenerate app in current directory with database. `-d` option will generate app with `Sequel` ORM and PostgreSQL adapter.\n\n```\nsinator -n my_app -d\n```\nRun web server on localhost.\n\n```\nbundle exec puma\n```\n\nRun application console / interactive mode / IRB.\n\n```\nbundle exec tux\n```\n\n### Example Usage\n\nThis example assume that PostgreSQL is already running.\nSee [github.com/kuntoaji/todo_sinator](https://github.com/kuntoaji/todo_sinator) for Todo Application generated with Sinator.\n  1. run `sinator -n my_app -d`\n  2. cd `my_app`\n  3. run `bundle install`\n  4. configure your database setting in `config/database.yml`\n  5. create database with `createdb my_app_development`.\n  6. create file `db/migrations/001_create_artists.rb` and put the following code:\n\n  ```ruby\n  Sequel.migration do\n    up do\n      create_table(:artists) do\n        primary_key :id\n        String :name, :null=\u003efalse\n      end\n    end\n\n    down do\n      drop_table(:artists)\n    end\n  end\n  ```\n\n  7. run `rake db:migrate`\n  8. create file `app/models/Artist.rb` and put the following code:\n\n  ```ruby\n  class Artist \u003c Sequel::Model\n  end\n  ```\n\n  9. create file `app/routes/artists.rb` and put the following code:\n\n  ```ruby\n  class MyApp\n    get '/artists' do\n      @artists = Artist.all\n      erb :\"artists/index\"\n    end\n\n    post '/artists' do\n      @artist = Artist.new\n      @artist.name = params[:name]\n      @artist.save\n\n      redirect '/artists'\n    end\n  end\n  ```\n\n  10. create file `app/views/artists/index.erb` and put the following code:\n\n  ```erb\n  \u003ch1\u003eList of Artist\u003c/h1\u003e\n  \u003cul\u003e\n    \u003c% @artists.each do |artist| %\u003e\n      \u003cli\u003e\u003c%= artist.name %\u003e\u003c/li\u003e\n    \u003c% end %\u003e\n  \u003c/ul\u003e\n\n  \u003cform action=\"/artists\" method=\"post\"\u003e\n    \u003c%= Rack::Csrf.tag(env) %\u003e\n    \u003cinput type=\"text\" name=\"name\" /\u003e\n    \u003cbutton\u003eSubmit\u003c/button\u003e\n  \u003c/form\u003e\n  ```\n\n  11. run the server `bundle exec puma`\n  12. open url `localhost:9292/artists`\n  13. Enjoy! :)\n","funding_links":["https://ko-fi.com/kuntoaji"],"categories":["Generators"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuntoaji%2Fsinator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuntoaji%2Fsinator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuntoaji%2Fsinator/lists"}