{"id":19355581,"url":"https://github.com/marviq/generator-bat","last_synced_at":"2026-03-12T19:17:35.512Z","repository":{"id":17724985,"uuid":"20554771","full_name":"marviq/generator-bat","owner":"marviq","description":"Backbone based web application generator for Yeoman","archived":false,"fork":false,"pushed_at":"2021-05-15T20:47:29.000Z","size":2303,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"develop","last_synced_at":"2025-08-19T17:45:18.666Z","etag":null,"topics":["backbone","browserify","coffeescript","grunt","handlebars","scaffold","webapp","yeoman","yeoman-generator","yuidoc"],"latest_commit_sha":null,"homepage":null,"language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marviq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-06T07:16:08.000Z","updated_at":"2021-05-15T20:47:31.000Z","dependencies_parsed_at":"2022-09-26T22:30:28.923Z","dependency_job_id":null,"html_url":"https://github.com/marviq/generator-bat","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/marviq/generator-bat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marviq%2Fgenerator-bat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marviq%2Fgenerator-bat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marviq%2Fgenerator-bat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marviq%2Fgenerator-bat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marviq","download_url":"https://codeload.github.com/marviq/generator-bat/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marviq%2Fgenerator-bat/sbom","scorecard":{"id":622419,"data":{"date":"2025-08-11","repo":{"name":"github.com/marviq/generator-bat","commit":"1b2bd836aaa0b8fc44d35b31b5657301bdf12dc4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'develop'","Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"31 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-cph5-m8f7-6c5x","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-phwq-j96m-2c2q","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-8hfj-j24r-96c4","Warn: Project is vulnerable to: GHSA-wc69-rhjr-hc9g","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-jv35-xqg7-f92r","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-38fc-wpqx-33j7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T05:29:20.490Z","repository_id":17724985,"created_at":"2025-08-21T05:29:20.490Z","updated_at":"2025-08-21T05:29:20.490Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30439658,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T14:34:45.044Z","status":"ssl_error","status_checked_at":"2026-03-12T14:09:33.793Z","response_time":114,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["backbone","browserify","coffeescript","grunt","handlebars","scaffold","webapp","yeoman","yeoman-generator","yuidoc"],"created_at":"2024-11-10T06:02:53.195Z","updated_at":"2026-03-12T19:17:35.492Z","avatar_url":"https://github.com/marviq.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BAT, the Backbone Application Template\n\n[![npm version](https://badge.fury.io/js/generator-bat.svg)](https://badge.fury.io/js/generator-bat)\n[![David dependency drift detection](https://david-dm.org/marviq/generator-bat.svg)](https://david-dm.org/marviq/generator-bat)\n\nA Yeoman generator collection created by marviq.\n\nEver got tired of having to scaffold your new webapp projects over and over again? Moan no more; Yeoman and BAT will do it for you!\n\n\n## Getting Started\n\n### What is Yeoman?\n\nTrick question.  It's not a thing.  It's this guy:\n\n![](http://i.imgur.com/JHaAlBJ.png)\n\nBasically, he wears a top hat, lives in your computer, and waits for you to tell him what kind of application you wish to create.\n\nNot every new computer comes with a Yeoman pre-installed.  He lives in the [npm](https://npmjs.org) package repository.  You only have to ask for him once, then he packs up and moves into your hard drive.  *Make sure you clean up, he likes new and shiny things.*\n\n```bash\n[sudo ]npm install -g yo\n```\n\n\n### Yeoman Generators\n\nYeoman travels light.  He didn't pack any generators when he moved in.  You can think of a generator like a plug-in.  You get to choose what type of application you wish to create, such as a BAT webapp.\n\nTo install BAT from [npm](https://npmjs.org), run:\n\n```bash\n[sudo ]npm install -g generator-bat\n```\n\nFinally, initiate the main app generator:\n\n```bash\nyo bat\n```\n\nIts subs:\n\n```bash\nyo bat:view\nyo bat:model\nyo bat:collection\nyo bat:api\n```\n\nOr, if you want a head start, even:\n\n```bash\nyo bat:demo\n```\n\n\n## The Finer Print\n\n### Why BAT?\n\nWith BAT you can immediately start developing your application instead of worrying about getting your project set up first.\nThe main app generator will provide you with the following out of the box:\n\n- A default project filesystem structure:\n    - `src/` - a directory for your sources to live in;\n    - `test/` - a directory to contain your unit tests;\n    - `dist/` - where all you builds will be assembled;\n    - `vendor/` - a place for keeping third-party libraries that [npm](https://npmjs.org) doesn't know how to deliver;\n- Project files:\n    - `Gruntfile.coffee`\n    - `package.json`\n    - `AUTHORS`\n    - `LICENSE` ([BSD-3-Clause](https://spdx.org/licenses/BSD-3-Clause.html))\n    - `README.md`\n    - `.editorconfig`\n    - `.gitattributes`\n    - `.gitmessage`\n    - `.jshintrc`\n    - `.coffeelint.json`\n- [Grunt](http://gruntjs.com), or rather, a complete and annotated `Gruntfile.coffee`, set up for [Browserify](https://github.com/jmreidy/grunt-browserify#readme), [Compass](https://github.com/gruntjs/grunt-contrib-compass#readme), code [linting](https://github.com/vojtajina/grunt-coffeelint#readme), [-testing](https://github.com/karma-runner/grunt-karma#readme), [-minification](https://github.com/gruntjs/grunt-contrib-uglify#readme) and [-documentation generation](https://github.com/gruntjs/grunt-contrib-yuidoc#readme);\n- [Browserify](http://browserify.org/), bundling modular code for the browser, supporting [CoffeeScript](https://github.com/jnordberg/coffeeify#readme), [Handlebars](https://github.com/epeli/node-hbsfy#readme) and [browserify shims](https://github.com/thlorenz/browserify-shim#readme);\n- [Backbone.js](http://backbonejs.org/) MV*x* foundation, including a main [router](http://backbonejs.org/#Router) implementation;\n- [Backbone-Debugger](https://github.com/Maluen/Backbone-Debugger) browser plugin engagement (when available), automatically included with debugging builds;\n- [CoffeeScript](http://coffeescript.org/) coding;\n- [Compass](http://compass-style.org/) SASS styling;\n- [Handlebars](http://handlebarsjs.com/) HTML templating;\n- [jQuery](https://jquery.com/) browser normalization;\n- Basic [Internationalisation](https://github.com/marviq/madlib-locale#readme) support;\n- [YUIDoc](http://yui.github.io/yuidoc/) code documentation generation;\n\nTo scaffold out a new project like that, simply run:\n\n```shell\nyo bat\n```\n\nYeoman will ask you some questions, set everything up and install dependencies for you.  Wait a bit for him to complete this and you're all set to go.\n\nAdditionally, Yeoman can:\n- Provide you with a demo webapp implementation showcasing the BAT.  It is also possible to get this at a later instant through `yo bat:demo`;\n\n\n### Sub-generators\n\nBAT also comes with sub-generators that scaffold out new Backbone [models](http://backbonejs.org/#Model), [collections](http://backbonejs.org/#Collection) and [views](http://backbonejs.org/#View).\n\nFor each of these Yeoman will deliver a neat set of files, set up, YUIDoc code documentation pre-filled and integrated into existing code for as far as he dares to.\n\n\n#### View\n\n```shell\nyo bat:view\n```\n\nPlaced into the `src/views` directory, Yeoman will provide you with `*some-view-name*.coffee` and `*some-view-name*.hbs` files, respectively containing the `class` definition for the `*SomeViewName*View` and its handlebars template.\n\nAdditionally, Yeoman can:\n- Create a `_*some-view-name*.sass` file into the `src/sass/views` directory and insert an `@import` for it into `src/sass/_views.sass`;\n\n**Note** that for so-called routed views, you would probably want to incorporate this view into your webapp's main `router.coffee`.  Yeoman would have liked to do this for you too but is too afraid to break your code, so he doesn't.\n\n\n#### Model\n\n```shell\nyo bat:model\n```\n\nYeoman will provide you with a `*some-model-name*.coffee` file containing the `class` definition for `*SomeModelName*Model` and place it into the `src/models` directory.\n\nOptionally, Yeoman can:\n- Cause a singleton instance of the model to be exported instead of the `class` itself;\n\n\n#### Collection\n\n```shell\nyo bat:collection\n```\n\nYeoman will provide you with a `*some-collection-name*.coffee` file containing the `class` definition for `*SomeCollectionName*Collection` and place it into the `src/collections` directory.\n\nFurthermore, Yeoman can:\n- Also create the model for this collection;\n- Cause a singleton instance of the collection to be exported instead of the `class` itself;\n\n\n#### Api\n\n```shell\nyo bat:api\n```\n\nAn API is an instance of the BAT provided `ApiServicesCollection` which lives in the `src/apis/` section of your project map. Its purpose is, in essence, to\nhave a convenient way to organize the endpoint urls of a backend API's services relative to the common base-url defined for that API.\n\n\n#### Demo\n\nBAT also comes packed with a demo webapp implementation showcasing its features.  To get this, either answer _yes_ to the relevant prompt from an initial `yo bat` run, or when you answered _no_ there earlier, invoke:\n\n```shell\nyo bat:demo\n```\n\n**Note:** that the latter _will_ result in a few clashes with some of the files produced from the earlier `yo bat` run.  These are however, caveat codor, harmless.\n\n\n### Grunt tasks\n\nAfter you're all set up, you'll want to build your project; this is where [Grunt](http://gruntjs.com) comes in:\n\n```shell\ngrunt dev\n```\n\nThis will first do a development build (all builds will be assembled into the `dist` directory btw), and then enter a watch-for-changes -\u003e re-build loop.\n\nGrunt can do more than just that; here's a recap of common grunt idioms:\n\ncommand           | description\n:--               |:--\n`grunt [default]` | shortcut for `grunt dist` unless the `GRUNT_TASKS` environment variable specifies a space separated list of alternative tasks to run instead;\n`grunt dist`      | does a for-production, non-debugging, all-parts, tested, minified build plus artifacts;\n`grunt debug`     | does a for-testing, debugging, all-parts except documentation, tested, as-is build;\n`grunt dev`       | does a for-local, debugging, all-parts except documentation, as-is build; \u003cbr\u003e _**(Note that this variant doesn't exit**.  Instead it'll keep a close watch on filesystem changes, selectively re-triggering part builds as needed)_\n`grunt doc`       | will build just the code documentation;\n`grunt lint`      | will just lint your code;\n`grunt test`      | will run your test suite;\n`grunt test:dev`  | will run your test suite and will keep monitoring it for changes, triggering re-runs;\n`grunt --help`    | will show you all of the above and the kitchen sink;\n\n\n### Documentation\n\nFor both building and then launching the code documentation in your browser, BAT also supplies this convenient shortcut:\n\n```bash\nnpm run doc\n```\n\n\n### Unit tests\n\nBAT comes with support for unit testing using [Karma](http://karma-runner.github.io/1.0/), [Jasmine](http://jasmine.github.io/2.4/introduction.html) and [PhantomJS](http://phantomjs.org/).\n\nUnit testing is an integrated build step in both `dist` and `debug` build runs, but can also be run independently as:\n\n```shell\ngrunt test\n```\n\nAnd as watched, continuous test runs as:\n\n```shell\ngrunt test:dev\n```\n\nThe latter invocation, while it is kept running, also offers the opportunity to launch a test suite run in any browser, simply by directing it to this url:\n\n[`http://localhost:9876/debug.html`](http://localhost:9876/debug.html)\n\n*Do not forget to open your dev tools and browser console there!*\n\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md).\n\n\n## Changelog\n\nSee [CHANGELOG](./CHANGELOG.md) for versions \u003e`0.1.27`; For older versions, refer to the\n[releases on GitHub](https://github.com/marviq/generator-bat/releases?after=v1.0.0) for a detailed log of changes.\n\n\n## License\n\n[BSD-3-Clause](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarviq%2Fgenerator-bat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarviq%2Fgenerator-bat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarviq%2Fgenerator-bat/lists"}