{"id":30257640,"url":"https://github.com/thirdtank/brut","last_synced_at":"2025-08-15T16:05:25.345Z","repository":{"id":301253667,"uuid":"888625615","full_name":"thirdtank/brut","owner":"thirdtank","description":"The raw, standands-based Ruby web framework","archived":false,"fork":false,"pushed_at":"2025-08-14T15:33:12.000Z","size":13506,"stargazers_count":190,"open_issues_count":15,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-14T17:28:14.068Z","etag":null,"topics":["ruby","webdevelopment"],"latest_commit_sha":null,"homepage":"https://brutrb.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thirdtank.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.txt","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.html","support":null,"governance":null,"roadmap":"docs/roadmap.html","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-14T18:09:54.000Z","updated_at":"2025-08-14T15:33:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"25fc3052-83b5-4f88-8b48-a180a1eb1372","html_url":"https://github.com/thirdtank/brut","commit_stats":null,"previous_names":["thirdtank/brut"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/thirdtank/brut","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thirdtank%2Fbrut","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thirdtank%2Fbrut/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thirdtank%2Fbrut/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thirdtank%2Fbrut/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thirdtank","download_url":"https://codeload.github.com/thirdtank/brut/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thirdtank%2Fbrut/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270486229,"owners_count":24592178,"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-08-14T02:00:10.309Z","response_time":75,"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":["ruby","webdevelopment"],"created_at":"2025-08-15T16:02:48.636Z","updated_at":"2025-08-15T16:05:25.335Z","avatar_url":"https://github.com/thirdtank.png","language":"Ruby","readme":"# Brut - The Raw, Simple, Powerful, Standards-Based Web Framework\n\nBrut is a way to make web apps with Ruby, captializing on the knowledge you have—HTTP, HTML, CSS, JavaScript, SQL—without requiring\n*too* much extra stuff to learn.\n\n![Brut Logo in the style of the Washington DC Metro.  It has the metro brown background with all text in white Helvetica.  Centered at the top is \"BrutRB\". Below that, in the style of metro stops is \"Ruby\", next to a red dot with \"RB\" in it, \"HTML/CSS/JS\" next to an orange dot with \"WP\" in it, \"Phlex\" next to a blue dot with \"PL\" in it, and \"RSpec\" next to a green dot with \"RS\" in it.](brutrb.com/images/LogoStop.png)\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem \"brut\"\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install brut\n\n## Getting Started\n\n[Please note there is extensive documentation](https://brutrb.com), however to get started, you can use [mkbrut](https://github.com/thirdtank/mkrbut):\n\n```\ndocker run --pull always \\\n           -v \"$PWD\":\"$PWD\" \\\n           -w \"$PWD\" \n           -it \\\n           thirdtank/mkbrut \\\n           mkbrut your-new-app\n```\n\nIf you have Ruby 3.4 installed somewhere, you can use this via RubyGems as well:\n\n```\n\u003e gem install mkbrut\n\u003e mkbrut your-new-app\n```\n\n## Developing\n\nThe dev environment is managed by Docker and you are encouraged to use this. It's set up so you can edit your code on your computer\nwith your editor, but all commands are run inside Docker, which should be more consistent across developer workstations.\n\n1. On Windows, setup WSL2\n2. Install Docker\n3. Build the image(s) you will use to start containers where development happens:\n\n        dx/build\n4. Start up the dev environment\n\n        dx/start\n5. At this point, you can \"log in\" to the virtual machine/docker container via:\n\n        dx/exec bash\n6. From there, you have a UNIX prompt where you can run all commands.  You can also run any command via:\n\n        dx/exec ls -l # or whatever\n\n   This is how you can configure your editor to issue commands and access their output.\n\n7. To set everything up:\n\n        dx/exec bin/setup --no-credentials\n\n   The `--no-credentials` means that you will not be able to push to GitHub or RubyGems from within the Docker container. This ability is only needed by maintainers to push new versions of the gem. You can push to GitHub from your computer.\n\n### Conventions in MonoRepo\n\nThis repo contains all five main parts of Brut:\n\n* BrutRB, the Ruby web framework (in this directory, code in `lib`)\n* BrutJS, the JS library with custom elements (in `brut-js/`)\n* BrutCSS, the CSS library (in `brut-css/`)\n* `mkbrut`, the CLI to create new Brut apps (in `mkbrut/`)\n* `brutrb.com`, the website, powered by VitePress (in `brutrb.com`)\n\nEach repo must conform to the *Workspace Protocol*, which are scripts in `bin/` that perform certain tasks:\n\n* `bin/setup` - performs any setup\n* `bin/docs` - builds all documentation, placing it where `brutrb.com` can find it.\n* `bin/build` - builds deployable artifacts, if needed\n* `bin/ci` - runs all tests, if applicable\n\nThe primary `bin` scripts at the root work for both BrutRB, the web framework, and recurse into the other directories to perform their\nactions as well.\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthirdtank%2Fbrut","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthirdtank%2Fbrut","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthirdtank%2Fbrut/lists"}