All Projects â†’ jedireza â†’ Frame

jedireza / Frame

Licence: mit
💡 A user system API starter

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Frame

Aqua
💡 A website and user system starter
Stars: ✭ 1,391 (+87.72%)
Mutual labels:  mongodb, starter-kit, hapi, boilerplate, admin
Laravel Boilerplate
Laravel Boilerplate / Starter Kit with Gentelella Admin Theme
Stars: ✭ 704 (-4.99%)
Mutual labels:  starter-kit, boilerplate, admin
Starter Nodejs Rest
DEPRECATED!! Starter for a Node.js REST Application using MongoDB and JSON Web Token
Stars: ✭ 29 (-96.09%)
Mutual labels:  mongodb, starter-kit, boilerplate
Hapi Starter Kit
Hapi.js based REST boilerplate which uses latest ES7/ES8 features (async/await) with code coverage and follows best pratices
Stars: ✭ 103 (-86.1%)
Mutual labels:  starter-kit, hapi, boilerplate
Wertik Js
💪 A library that powers your app with GraphQL + Rest API
Stars: ✭ 56 (-92.44%)
Mutual labels:  mongodb, starter-kit, boilerplate
Angular Full Stack
Angular Full Stack project built using Angular, Express, Mongoose and Node. Whole stack in TypeScript.
Stars: ✭ 1,261 (+70.18%)
Mutual labels:  mongodb, starter-kit, boilerplate
Appy
🚀 A full stack boilerplate web app
Stars: ✭ 225 (-69.64%)
Mutual labels:  hapi, boilerplate, admin
Jolly
Production ready boilerplate for hapi.js
Stars: ✭ 68 (-90.82%)
Mutual labels:  mongodb, hapi, boilerplate
Mern
🌐 MERN stack 2.0 - MongoDB, Express, React/Redux, Node
Stars: ✭ 175 (-76.38%)
Mutual labels:  mongodb, starter-kit, boilerplate
Fullstack Apollo Express Mongodb Boilerplate
💥A sophisticated GraphQL with Apollo, Express and MongoDB boilerplate project.
Stars: ✭ 301 (-59.38%)
Mutual labels:  mongodb, starter-kit, boilerplate
Nodejs Api Boilerplate
A boilerplate for kickstart your nodejs api project with JWT Auth and some new Techs :)
Stars: ✭ 364 (-50.88%)
Mutual labels:  mongodb, boilerplate
Go Api Boilerplate
Go Server/API boilerplate using best practices DDD CQRS ES gRPC
Stars: ✭ 373 (-49.66%)
Mutual labels:  starter-kit, boilerplate
Preact Starter
Webpack3 boilerplate for building SPA / PWA / offline front-end apps with Preact
Stars: ✭ 384 (-48.18%)
Mutual labels:  starter-kit, boilerplate
Js Library Boilerplate Basic
Javascript Minimal Starter Boilerplate - Webpack 5 🚀, Babel 7, UMD, Unit Testing
Stars: ✭ 354 (-52.23%)
Mutual labels:  starter-kit, boilerplate
Akka Http Microservice
Example of http (micro)service in Scala & akka-http
Stars: ✭ 701 (-5.4%)
Mutual labels:  starter-kit, boilerplate
Bulletproof Nodejs
Implementation of a bulletproof node.js API 🛡️
Stars: ✭ 4,369 (+489.61%)
Mutual labels:  mongodb, boilerplate
React Starter Kit
React Starter Kit — front-end starter kit using React, Relay, GraphQL, and JAM stack architecture
Stars: ✭ 21,060 (+2742.11%)
Mutual labels:  boilerplate, starter-kit
Nextjs Mongodb App
A Next.js and MongoDB web application, designed with simplicity for learning and real-world applicability in mind.
Stars: ✭ 694 (-6.34%)
Mutual labels:  mongodb, boilerplate
Nodejsstarterkit
Starter Kit for Node.js v14.x, minimum dependencies 🚀
Stars: ✭ 348 (-53.04%)
Mutual labels:  starter-kit, boilerplate
Api
🏁🛠️ SaaS backend & API framework based on @nestjs
Stars: ✭ 390 (-47.37%)
Mutual labels:  starter-kit, admin

No longer maintained

Boilerplates can be a huge time sink to maintain and I've decieded to archive this project.

Thanks for your interest in my projects.


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

# > [email protected] first-time-setup /home/jedireza/projects/frame
# > node first-time-setup.js

# MongoDB URL: (mongodb://localhost:27017/frame)
# Root user email: [email protected]
# Root user password:
# Setup complete.

Running the app

$ npm start

# > [email protected] 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

# > [email protected] 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

# > [email protected] 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].