{"id":16748497,"url":"https://github.com/ivanshamatov/automagically","last_synced_at":"2025-03-16T03:27:59.460Z","repository":{"id":138310582,"uuid":"48541935","full_name":"IvanShamatov/automagically","owner":"IvanShamatov","description":"Micro framework to build API with UI","archived":false,"fork":false,"pushed_at":"2015-12-29T15:37:41.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T16:12:35.642Z","etag":null,"topics":[],"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/IvanShamatov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-24T12:31:31.000Z","updated_at":"2016-01-09T17:41:45.000Z","dependencies_parsed_at":"2023-03-16T13:30:52.182Z","dependency_job_id":null,"html_url":"https://github.com/IvanShamatov/automagically","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanShamatov%2Fautomagically","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanShamatov%2Fautomagically/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanShamatov%2Fautomagically/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanShamatov%2Fautomagically/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IvanShamatov","download_url":"https://codeload.github.com/IvanShamatov/automagically/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243821654,"owners_count":20353481,"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","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":[],"created_at":"2024-10-13T02:12:50.520Z","updated_at":"2025-03-16T03:27:59.425Z","avatar_url":"https://github.com/IvanShamatov.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Automagically \nMicro-framework to build API for your frontend app and simple admin to be able to store some content. Works automagically.\nUNDER CONSTRUCTION. Read the story in progress `https://medium.com/@wi11son` \n---\n## Why do you need this? \nInpired by:\n* sinatra + padrino\n* grape\n* goliath\n* active_model_serializer\n* active_admin + rails_admin\n* and rails of couse\n\nYep, there are bunch of solutions how to create backend for SPA or simple website. In most cases you just use Sinatra if you need simple backend processing, or Grape if you need API. You can even use Padrino to have backend with generators and create some code and get Admin panel. Finally you can create `rails --api` now to create really simple api+DB using active_model_serializer and one of gems to generate admin panel. \n\nBut what if you want:\n* simplicity of sinatra (like routes driven framework)\n* simplicity of Grape to generate API mostly for frontend app, \n* still have to use database to get out some information like rails ActiveRecord\n* need a restricted area like autogenerated padrino-admin/rails_admin/active_admin, where you can put some data inside database through UI \n* and it should be really light solution\n\nEach of these frameworks can do the parts, but there is no one, who can fulfill everything. That's why I will try to implement that in `automagically`. \n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\n    gem 'automagically'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install automagically\n\n\n\n## Quick start\n\n```ruby\nrequire 'automagically'\nroute :reports, Report.all\n```\n\nIt means that you can make a `GET /reports` request and it will respond you with a collection of reports like: \n\n```json\n{\n    \"reports\": [\n        {\n            \"title\": \"First one\",\n            \"author\": \"Kent Willson\"\n        },\n        {\n            \"title\": \"Report last\",\n            \"author\": \"Maria Brown\"\n        }\n    ]\n}\n```\n\nMore than that, it will give you access to CRUD your model via admin panel.\n`/admin/reports` is really heavy because it's gonna be frontend app, which will use api to create/edit and store data.\n\n## Restrictions\n\nYep, first of all there should be a bunch of restrictions, so then you have to use other instuments and don't use `automagically` when it is not appropriate. For example\nDon't use `automagically`:\n* when you need complex data processing on backend. It is not for processing, but just giveback some JSON.\n* ...\n\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanshamatov%2Fautomagically","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivanshamatov%2Fautomagically","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanshamatov%2Fautomagically/lists"}