{"id":14482625,"url":"https://github.com/CoNarrative/glujs","last_synced_at":"2025-08-30T03:31:20.030Z","repository":{"id":3737953,"uuid":"4811948","full_name":"CoNarrative/glujs","owner":"CoNarrative","description":"Specification-driven MVVM framework for building rich apps with Ext JS ","archived":false,"fork":false,"pushed_at":"2017-04-18T17:15:11.000Z","size":6062,"stargazers_count":55,"open_issues_count":11,"forks_count":19,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-12-27T03:31:37.356Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"glujs.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CoNarrative.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-06-27T18:26:39.000Z","updated_at":"2021-01-13T19:34:47.000Z","dependencies_parsed_at":"2022-09-16T02:50:51.570Z","dependency_job_id":null,"html_url":"https://github.com/CoNarrative/glujs","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/CoNarrative/glujs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoNarrative%2Fglujs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoNarrative%2Fglujs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoNarrative%2Fglujs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoNarrative%2Fglujs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoNarrative","download_url":"https://codeload.github.com/CoNarrative/glujs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoNarrative%2Fglujs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272800718,"owners_count":24995138,"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-30T02:00:09.474Z","response_time":77,"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":[],"created_at":"2024-09-03T00:01:12.724Z","updated_at":"2025-08-30T03:31:19.637Z","avatar_url":"https://github.com/CoNarrative.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# @{GluJS}\n*A framework for rapid development of enterprise-ready reactive web \u0026 mobile applications \"to spec\"*\n\nGluJS is a framework for the test-driven development of reactive applications\nleveraging rich javascript widget libraries.\n\nCurrently we have adapters with basic support for Ext JS 3.1+ and Ext JS 4.06+, an experimental adapter\nfor Sencha Touch and we'll soon be doing Titanium.\n\n## Hello World\nOur Hello World application is a little richer than most. That's because the whole point of GluJS is to\nskip the \"just looks pretty\" stuff and provide you with what you need for building a reactive application out of the gate.\nSo our Hello World has a little behavior (pressing the button toggles the title),\nis localized via glu's built-in support, and (of course) starts with a specification.\n\nThe specification (in coffeescript because it keeps our specs very readable; you can use javascript if you'd like):\n\n```coffeescript\nGiven 'the hello world app is launched', -\u003e\n  vm = null\n  Meaning -\u003e vm = glu.model {ns:'helloworld',mtype:'main'}\n  ShouldHave 'set arriving to true', -\u003e (expect vm.arriving).toBe true\n  ShouldHave 'set message to a welcome', -\u003e (expect vm.message).toBe 'Hello World!'\n  When 'the user changes his/her status', -\u003e\n    Meaning -\u003e vm.set('arriving', false)\n    ShouldHave 'set message to a farewell', -\u003e (expect vm.message).toBe 'Goodbye World!'\n```\nThe actual application (javascript):\n```javascript\nglu.defModel('helloworld.main', {\n    arriving:true,\n    message$:function () {\n        return this.localize(this.arriving ? 'greeting' : 'farewell')\n    }\n});\n\nglu.defView('helloworld.main', {\n    title:'@{message}',\n    tbar:[\n        {\n            text:'Toggle',\n            enableToggle:true,\n            pressed:'@{arriving}'\n        }\n    ]\n});\n\nglu.ns('helloworld').locale = {\n    greeting:'Hello World!',\n    farewell:'Goodbye World!'\n}\n\nExt.onReady(function(){glu.viewport('helloworld.main');});\n```\n## Getting GluJS\n\nIf you really just want the minified libraries, grab them here:\n\n[http://glujs.com/download/glujs-1.2.0.zip](http://glujs.com/download/glujs-1.2.0.zip)\n\nIf you want the source and full examples, clone this project from github.\n\n## Documentation and Support\n\nOnline documentation:\n\n-  [User Guide] (http://glujs.com/guide.html)\n-  [API Reference] (http://conarrative.github.com/glujs-guide/api)\n\nGluJS Support Forums:\n\n-  [GluJS on Google Groups] (https://groups.google.com/d/forum/glujs)\n\n## Building/minifying\nInstall node if you haven't already.\n\nBuild using node command line\n\n    node build.js build\n\n## Running examples\nBefore you can run examples, you'll need to download and install your desired widget toolset into the lib folder.\nWe currently support the following:\n\n- Ext JS 3.0.7+ (put in lib/extjs-3.x)\n- Ext JS 4.0.5+ (put in lib/extjs-4.x)\n- Sencha Touch 2.0+ (experimental, put in lib/touch-2.x)\n\nand will shortly target Titanium.\n\nAfter you build GluJS, you can run directly from the fileysystem since we leverage GluJS's ability to mock back-end Ajax calls.\nFor instance, to run the 'agents' example:\n\n    file:///Users/mikegai/Projects/gluJS/examples/agents/index.html\n\nIf you would like to avoid a build step and also debug into individual glu source files, we've provided a simple website\nyou can run in node:\n\n    node app.js\n\nWe use a Jade layout template to individually reference all of the GluJS source files. We don't use\nthe Ext JS 4.x Loader framework because we want to make it simple when using non-Sencha widget sets as well.\n\nThe examples are laid out as follows:\n\n    /examples/*name*/extjs3|extjs4\n\nSo to run the agent example for Ext JS 4:\n\n    /examples/agents/extjs4\n\n## Testing\n\nWe use the excellent jasmine BDD testing library for GluJS testing (and it's also core to how we help you develop and\ntest your own applications with GluJS).\n\nOnce you have the node \"glu development\" application running, simply hit the specification page:\n\nhttp://localhost:8123/spec/extjs4\n\nor for Ext JS 3.x testing\n\nhttp://localhost:8123/spec/extjs3\n\n## Generating your own documentation\n\nDocumentation is generated using [jsduck] (https://github.com/senchalabs/jsduck).\n\nInstall per their instructions so that jsduck is on your shell path.\n\nFrom the command line with the path in the root of the GluJS project, run:\n\n    jsduck --config jsduck.json\n\n## Contributors\n\n[Mike Gai] (https://github.com/mikegai) (creator), [Nick Tackes] (https://github.com/nicktackes), [Travis Barajas] (https://github.com/tvbarajas)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoNarrative%2Fglujs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCoNarrative%2Fglujs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoNarrative%2Fglujs/lists"}