{"id":19734538,"url":"https://github.com/molekilla/rutha","last_synced_at":"2025-04-30T04:30:47.436Z","repository":{"id":19015644,"uuid":"22238658","full_name":"molekilla/rutha","owner":"molekilla","description":"Rutha - HapiJS AngularJS Stack","archived":false,"fork":false,"pushed_at":"2016-08-24T01:17:44.000Z","size":11277,"stargazers_count":48,"open_issues_count":6,"forks_count":9,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-04-10T02:56:46.978Z","etag":null,"topics":["angular","frontend","hapi"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/molekilla.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-25T00:46:36.000Z","updated_at":"2024-04-10T02:56:46.979Z","dependencies_parsed_at":"2022-08-28T14:40:22.743Z","dependency_job_id":null,"html_url":"https://github.com/molekilla/rutha","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/molekilla%2Frutha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/molekilla%2Frutha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/molekilla%2Frutha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/molekilla%2Frutha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/molekilla","download_url":"https://codeload.github.com/molekilla/rutha/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224198027,"owners_count":17271999,"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":["angular","frontend","hapi"],"created_at":"2024-11-12T00:37:20.735Z","updated_at":"2024-11-12T00:37:21.215Z","avatar_url":"https://github.com/molekilla.png","language":"JavaScript","readme":"# rutha\n## an hapi/angular frontend and service stack\n\nFor an ES6 version: Take a look at [rutha 2016](https://github.com/molekilla/rutha-2016)\n\n[![Build Status](https://travis-ci.org/molekilla/rutha.svg?branch=master)](https://travis-ci.org/molekilla/rutha)\n\nPure pragmatic NodeJS stack\n#### Changelog: [changelog](changelog.md)\n\n#### Last update: 2.1.0\n\n#### Docs:\n\n* [rutha - A Hapi and Angular boilerplate stack - English](http://yoworkeo.blogspot.com/2015/02/rutha-hapi-and-angular-boilerplate-stack.html)\n* [Hapi View Partials - Spanish](http://yoworkeo.blogspot.com/2014/08/hapijs-view-partials-con-underscorejs.html)\n* [Hapi REST Authentication - Spanish](http://yoworkeo.blogspot.com/2014/08/hapijs-autenticacion-rest-con-hapi-auth.html)\n* [Hapi Tutorials](http://hapijs.com/tutorials)\n* [BabelJS: Learn ES6](https://babeljs.io/docs/learn-es6/)\n* [ECMAScript6 by Luke Hoban](https://github.com/lukehoban/es6features)\n* [Typescript](http://www.typescriptlang.org/)\n* [Taming Angular 1.3 forms by Year of Moo](http://www.yearofmoo.com/2014/09/taming-forms-in-angularjs-1-3.html#html5-validators-and-parse-errors)\n* [Jasmine BDD Introduction](http://jasmine.github.io/2.2/introduction.html)\n\n### Main features ###\n\n* **Rule Them All with a single environment**: Both development and production environment are the same. We concat, annotate, mix some ingredients and offer you the same production environment for development.\n* **AngularJS 1.5.x**\n* **Hapi 13.0.0**\n* **Jasmine NPM**\n* **Ionic**: Try [rutha-ionic](https://github.com/molekilla/rutha-ionic)\n\n### Additional features\n* **Grunt JIT**: Is JIT for Grunt. No more waits.\n* **Underscore for frontend server side templates**: To avoid issues with AngularJS.\n* [Grunt ngAnnotate](https://github.com/mzgol/grunt-ng-annotate)\n* [Grunt Angular Templates](https://github.com/ericclemmons/grunt-angular-templates)\n* **Specs and Functional Tests (Frontend)**: Based partially on [year of moo](http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html) \n* **Visionmedia/debug** [module](https://github.com/visionmedia/debug) by default\n* [Chris Sevilleja's 'Easy Node authentication' local and facebook sample code for HapiJS](http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local)\n* Basic cssmin task\n* `grunt-nsp` support\n* [Istanbul code coverage support](http://gotwarlost.github.io/istanbul/)\n* Uses canned responses / server mocks / nobackend inspired by Euge's [canned responses](https://github.com/euge/canned-responses)\n* [Hapi Swagger](https://github.com/glennjones/hapi-swagger)\n* [Grunt JSDoc3](https://github.com/krampstudio/grunt-jsdoc)\n\n## Installing\n1. Clone repo\n2. Rename text containing `rutha` to `your_app_name`\n3. Be sure to have node 4.5.0 or greater (e.g. nvm use 4.5.0)\n4. Run `npm install grunt-cli -g`\n5. Change dir to ui and run `npm install` and then `bower install`\n6. Open a new tab and change dir to service and run `npm install`\n\n\n### Grunt Help (Service) ###\n\n* `npm start`: Serves API service\n* `npm test`: Runs Jasmine NPM specs\n* `npm run nsp`: Verifies modules that contains security issues\n* `grunt migrate:create [--name]`: Creates a migration task. Args: --name: migration name (optional)\n* `grunt migrate:up [--revision]`: Migrates up. Args: --revision: revision name (optional)\n* `grunt migrate:down [--revision]`: Migrates down. Args: --revision: revision name (optional)\n* `grunt docs`: Builds jsdoc3 documentation.\n\n## Grunt Help - Frontend tasks\n\n* `npm start`: Serves frontend\n* `npm test`: Runs Jasmine NPM specs\n* `npm run nsp`: Verifies modules that contains security issues\n* `grunt test`: Runs E2E/Functional tests (Angular)\n* `grunt build`: Prepares UI assets\n* `grunt stagelocal`: Provisions Vagrant VM\n* `grunt staging`: Provisions staging\n* `grunt deploy`: Provisions production\n* `grunt jshinting`: Verifies javascript using jshint\n\n###  About Angular Tests\n`ui/src/test/lib` contains libs require for testing. Scope.SafeApply can be added as optional (see yearofmoo blog post)\n\n### Nginx routes (Optional) ###\n\n```\nserver { \n# simple reverse-proxy for Rutha (Very useful!)\n    listen       80;\n    server_name  localhost;\n    access_log   dev.log;\n    #error_page   http://here;\n\n  location /api {\n    proxy_pass      http://127.0.0.1:3002;\n    proxy_redirect  default;\n    proxy_set_header Host $host;\n  }\n\n  location / {\n    proxy_pass      http://127.0.0.1:3005;\n    proxy_redirect  default;\n    proxy_set_header Host $host;\n  }\n}\n\n```\n\n## Ansible deploy\n\n\n### Deploying rutha apps with rutha_deploy ##\n\n1. Run `grunt build` to generate frontend assets\n2. Add zip file to commit e.g. git add releases/v0.1.0.zip. \n3. In rutha-deploy, configure group_vars with your settings\n\n    ```ruby\n    # devops\n    domain: disrupting_app.com\n    ssl_name: disrupting_app\n    # rutha\n    app_name: disrupting_app\n    app_repo: git@github.com:molekilla/rutha.git\n    app_branch: release0.1.0\n    app_version: v0.1.0\n    app_env: \n      NODE_ENV: production\n    ```\n    \n4. Add hosts to /etc/ansible/hosts\n5. Enable host in ui/Gruntfile.js by adding it to deploySettings.\n6. Configure cloud / server with SSH key to get repo (or customize rutha-deploy to fetch from somewhere else).\n7. Run `grunt deploy`\n\n### Deploying rutha frontend app\n\n1. Run `grunt build` to generate frontend assets\n2. Add zip file to commit e.g. git add releases/v0.1.0.zip (or customize rutha-deploy to fetch from somewhere else).\n3. In your devops workflow, unpack zip and run ui/lib/hapi/index.js \n\n### Deploying rutha service app\n\n1. Copy service directory or get from repo\n3. In your devops workflow, run service/lib/hapi/index.js \n\n### Maintainers, notes ###\nRogelio Morrell C. \n\n### Disclaimer ###\nFeel free to fork.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmolekilla%2Frutha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmolekilla%2Frutha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmolekilla%2Frutha/lists"}