frame

:bulb: A user system API starter

Github stars Tracking Chart

Frame

A user system API starter. Bring your own front-end.

Build Status
Dependency Status
devDependency Status

Features

  • Login system with forgot password and reset password
  • Abusive login attempt detection
  • User roles for accounts and admins
  • Admins only notes and status history for accounts
  • Admin groups with shared permissions
  • Admin level permissions that override group permissions

Technology

Frame is built with the hapi framework. We're
using MongoDB as a data store.

Bring your own front-end

Frame is only a restful JSON API. If you'd like a ready made front-end,
checkout Aqua. Or better yet, fork
this repo and build one on top of Frame.

Live demo, url, username, password, :--------------------------------------------------------------------------------------------------, :--------, :--------, https://getframe.herokuapp.com/, root, root, https://getframe.herokuapp.com/documentation, Postman is a great tool for testing and

developing APIs. See the wiki for details on how to
login
.

Requirements

You need Node.js >=8.x and you'll need a
MongoDB >=2.6 server running.

Installation

$ git clone https://github.com/jedireza/frame.git
$ cd frame
$ npm install

Configuration

Simply edit config.js. The configuration uses
confidence which makes it easy to
manage configuration settings across environments. Don't store secrets in
this file or commit them to your repository.

Instead, access secrets via environment variables. We use
dotenv to help make setting local
environment variables easy (not to be used in production).

Simply copy .env-sample to .env and edit as needed. Don't commit .env
to your repository.

First time setup

WARNING: This will clear all data in the following MongoDB collections if
they exist: accounts, adminGroups, admins, authAttempts, sessions,
statuses, and users.

$ npm run first-time-setup

# > frame@0.0.0 first-time-setup /home/jedireza/projects/frame
# > node first-time-setup.js

# MongoDB URL: (mongodb://localhost:27017/frame)
# Root user email: jedireza@gmail.com
# Root user password:
# Setup complete.

Running the app

$ npm start

# > frame@0.0.0 start /home/jedireza/projects/frame
# > ./node_modules/nodemon/bin/nodemon.js -e js,md server

# 09 Sep 03:47:15 - [nodemon] v1.10.2
# ...

Now you should be able to point your browser to http://127.0.0.1:9000/ and
see the welcome message.

nodemon watches for changes in server
code and restarts the app automatically.

With the debugger

$ npm run inspect

# > frame@0.0.0 inspect /home/jedireza/projects/frame
# > nodemon --inspect -e js,md server.js

# [nodemon] 1.14.12
# [nodemon] to restart at any time, enter `rs`
# [nodemon] watching: *.*
# [nodemon] starting `node --inspect server.js`
# Debugger listening on ws://127.0.0.1:9229/3d706d9a-b3e0-4fc6-b64e-e7968b7f94d0
# For help see https://nodejs.org/en/docs/inspector
# 180203/193534.071, [log,info,mongodb] data: HapiMongoModels: successfully connected to the db.
# 180203/193534.127, [log,info,mongodb] data: HapiMongoModels: finished processing auto indexes.
# Server started on port 9000

Once started with the debuger you can open Google Chrome and go to
chrome://inspect. See https://nodejs.org/en/docs/inspector/
for more details.

Running in production

$ node server.js

Unlike $ npm start this doesn't watch for file changes. Also be sure to set
these environment variables in your production environment:

  • NODE_ENV=production - This is important for many different
    optimizations.
  • NPM_CONFIG_PRODUCTION=false - This tells $ npm install to not skip
    installing devDependencies, which we may need to run the first time
    setup script.

Have a question?

Any issues or questions (no matter how basic), open an issue. Please take the
initiative to read relevant documentation and be pro-active with debugging.

Want to contribute?

Contributions are welcome. If you're changing something non-trivial, you may
want to submit an issue before creating a large pull request.

Running tests

Lab is part of the hapi ecosystem and what we
use to write all of our tests.

$ npm test

# > frame@0.0.0 test /home/jedireza/projects/frame
# > lab -c -L

#  ..................................................
#  ..................................................
#  ..................................................
#  ..............

# 164 tests complete
# Test duration: 14028 ms
# No global variable leaks detected
# Coverage: 100.00%
# Linting results: No issues

Targeted tests

If you'd like to run a specific test or subset of tests you can use the
test-server npm script.

You specificy the path(s) via the TEST_TARGET environment variable like:

$ TEST_TARGET=test/server/web/main.js npm run test-server

License

MIT

Don't forget

What you build with Frame is more important than Frame.

Main metrics

Overview
Name With Ownerjedireza/frame
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2014-09-21 07:58:13
Pushed At2020-07-12 13:20:16
Last Commit At2020-07-12 13:20:10
Release Count71
Last Release Namev14.0.0 (Posted on 2019-06-19 15:10:21)
First Release Namev0.1.0 (Posted on )
用户参与
Stargazers Count738
Watchers Count32
Fork Count152
Commits Count291
Has Issues Enabled
Issues Count131
Issue Open Count0
Pull Requests Count79
Pull Requests Open Count5
Pull Requests Close Count16
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private