{"id":13755035,"url":"https://github.com/jedireza/frame","last_synced_at":"2025-05-10T00:31:34.267Z","repository":{"id":20988171,"uuid":"24277591","full_name":"jedireza/frame","owner":"jedireza","description":":bulb: A user system API starter","archived":true,"fork":false,"pushed_at":"2020-07-12T05:20:16.000Z","size":2477,"stargazers_count":739,"open_issues_count":5,"forks_count":153,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-04-13T14:02:40.218Z","etag":null,"topics":["admin","boilerplate","hapi","javascript","mongodb","nodejs","starter-kit","user-manager","user-system"],"latest_commit_sha":null,"homepage":"https://jedireza.github.io/frame/","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/jedireza.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-09-20T23:58:13.000Z","updated_at":"2024-10-14T02:38:42.000Z","dependencies_parsed_at":"2022-07-31T05:07:53.846Z","dependency_job_id":null,"html_url":"https://github.com/jedireza/frame","commit_stats":null,"previous_names":[],"tags_count":71,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedireza%2Fframe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedireza%2Fframe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedireza%2Fframe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedireza%2Fframe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jedireza","download_url":"https://codeload.github.com/jedireza/frame/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253346488,"owners_count":21894264,"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":["admin","boilerplate","hapi","javascript","mongodb","nodejs","starter-kit","user-manager","user-system"],"created_at":"2024-08-03T10:00:41.015Z","updated_at":"2025-05-10T00:31:33.677Z","avatar_url":"https://github.com/jedireza.png","language":"JavaScript","readme":"# No longer maintained\n\nBoilerplates can be a huge time sink to maintain and I've decieded to archive\nthis project.\n\nThanks for your interest in my projects.\n\n- - - - - - - - - -\n\n# Frame\n\nA user system API starter. Bring your own front-end.\n\n[![Build Status](https://travis-ci.org/jedireza/frame.svg?branch=master)](https://travis-ci.org/jedireza/frame)\n[![Dependency Status](https://david-dm.org/jedireza/frame.svg?style=flat)](https://david-dm.org/jedireza/frame)\n[![devDependency Status](https://david-dm.org/jedireza/frame/dev-status.svg?style=flat)](https://david-dm.org/jedireza/frame#info=devDependencies)\n\n\n## Features\n\n - Login system with forgot password and reset password\n - Abusive login attempt detection\n - User roles for accounts and admins\n - Admins only notes and status history for accounts\n - Admin groups with shared permissions\n - Admin level permissions that override group permissions\n\n\n## Technology\n\nFrame is built with the [hapi](https://hapijs.com/) framework. We're\nusing [MongoDB](http://www.mongodb.org/) as a data store.\n\n\n## Bring your own front-end\n\nFrame is only a restful JSON API. If you'd like a ready made front-end,\ncheckout [Aqua](https://github.com/jedireza/aqua). Or better yet, fork\nthis repo and build one on top of Frame.\n\n\n## Live demo\n\n| url                                                                                                | username | password |\n|:-------------------------------------------------------------------------------------------------- |:-------- |:-------- |\n| [https://getframe.herokuapp.com/](https://getframe.herokuapp.com/)                                 | root     | root     |\n| [https://getframe.herokuapp.com/documentation](https://getframe.herokuapp.com/documentation)       |          |          |\n\n[Postman](http://www.getpostman.com/) is a great tool for testing and\ndeveloping APIs. See the wiki for details on [how to\nlogin](https://github.com/jedireza/frame/wiki/How-to-login).\n\n\n## Requirements\n\nYou need [Node.js](http://nodejs.org/download/) `\u003e=8.x` and you'll need a\n[MongoDB](http://www.mongodb.org/downloads) `\u003e=2.6` server running.\n\n\n## Installation\n\n```bash\n$ git clone https://github.com/jedireza/frame.git\n$ cd frame\n$ npm install\n```\n\n\n## Configuration\n\nSimply edit `config.js`. The configuration uses\n[`confidence`](https://github.com/hapijs/confidence) which makes it easy to\nmanage configuration settings across environments. __Don't store secrets in\nthis file or commit them to your repository.__\n\n__Instead, access secrets via environment variables.__ We use\n[`dotenv`](https://github.com/motdotla/dotenv) to help make setting local\nenvironment variables easy (not to be used in production).\n\nSimply copy `.env-sample` to `.env` and edit as needed. __Don't commit `.env`\nto your repository.__\n\n\n## First time setup\n\n__WARNING__: This will clear all data in the following MongoDB collections if\nthey exist: `accounts`, `adminGroups`, `admins`, `authAttempts`, `sessions`,\n`statuses`, and `users`.\n\n```bash\n$ npm run first-time-setup\n\n# \u003e frame@0.0.0 first-time-setup /home/jedireza/projects/frame\n# \u003e node first-time-setup.js\n\n# MongoDB URL: (mongodb://localhost:27017/frame)\n# Root user email: jedireza@gmail.com\n# Root user password:\n# Setup complete.\n```\n\n\n## Running the app\n\n```bash\n$ npm start\n\n# \u003e frame@0.0.0 start /home/jedireza/projects/frame\n# \u003e ./node_modules/nodemon/bin/nodemon.js -e js,md server\n\n# 09 Sep 03:47:15 - [nodemon] v1.10.2\n# ...\n```\n\nNow you should be able to point your browser to http://127.0.0.1:9000/ and\nsee the welcome message.\n\n[`nodemon`](https://github.com/remy/nodemon) watches for changes in server\ncode and restarts the app automatically.\n\n### With the debugger\n\n```bash\n$ npm run inspect\n\n# \u003e frame@0.0.0 inspect /home/jedireza/projects/frame\n# \u003e nodemon --inspect -e js,md server.js\n\n# [nodemon] 1.14.12\n# [nodemon] to restart at any time, enter `rs`\n# [nodemon] watching: *.*\n# [nodemon] starting `node --inspect server.js`\n# Debugger listening on ws://127.0.0.1:9229/3d706d9a-b3e0-4fc6-b64e-e7968b7f94d0\n# For help see https://nodejs.org/en/docs/inspector\n# 180203/193534.071, [log,info,mongodb] data: HapiMongoModels: successfully connected to the db.\n# 180203/193534.127, [log,info,mongodb] data: HapiMongoModels: finished processing auto indexes.\n# Server started on port 9000\n```\n\nOnce started with the debuger you can open Google Chrome and go to\n[chrome://inspect](chrome://inspect). See https://nodejs.org/en/docs/inspector/\nfor more details.\n\n\n## Running in production\n\n```bash\n$ node server.js\n```\n\nUnlike `$ npm start` this doesn't watch for file changes. Also be sure to set\nthese environment variables in your production environment:\n\n - `NODE_ENV=production` - This is important for many different\n   optimizations.\n - `NPM_CONFIG_PRODUCTION=false` - This tells `$ npm install` to not skip\n   installing `devDependencies`, which we may need to run the first time\n   setup script.\n\n\n## Have a question?\n\nAny issues or questions (no matter how basic), open an issue. Please take the\ninitiative to read relevant documentation and be pro-active with debugging.\n\n\n## Want to contribute?\n\nContributions are welcome. If you're changing something non-trivial, you may\nwant to submit an issue before creating a large pull request.\n\n\n## Running tests\n\n[Lab](https://github.com/hapijs/lab) is part of the hapi ecosystem and what we\nuse to write all of our tests.\n\n```bash\n$ npm test\n\n# \u003e frame@0.0.0 test /home/jedireza/projects/frame\n# \u003e lab -c -L\n\n#  ..................................................\n#  ..................................................\n#  ..................................................\n#  ..............\n\n# 164 tests complete\n# Test duration: 14028 ms\n# No global variable leaks detected\n# Coverage: 100.00%\n# Linting results: No issues\n```\n\n### Targeted tests\n\nIf you'd like to run a specific test or subset of tests you can use the\n`test-server` npm script.\n\nYou specificy the path(s) via the `TEST_TARGET` environment variable like:\n\n```bash\n$ TEST_TARGET=test/server/web/main.js npm run test-server\n```\n\n## License\n\nMIT\n\n\n## Don't forget\n\nWhat you build with Frame is more important than Frame.\n","funding_links":[],"categories":["Boilerplates starter kit"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedireza%2Fframe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjedireza%2Fframe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedireza%2Fframe/lists"}