Skip to content

Commit

Permalink
Create a simple API
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon Ho authored and gunjpan committed Dec 24, 2015
1 parent d7b6611 commit 349e311
Show file tree
Hide file tree
Showing 17 changed files with 237 additions and 0 deletions.
13 changes: 13 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# http://editorconfig.org

root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
2 changes: 2 additions & 0 deletions .jshintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/client/
/node_modules/
21 changes: 21 additions & 0 deletions .jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"node": true,
"esnext": true,
"bitwise": true,
"camelcase": true,
"eqeqeq": true,
"eqnull": true,
"immed": true,
"indent": 2,
"latedef": "nofunc",
"newcap": true,
"nonew": true,
"noarg": true,
"quotmark": "single",
"regexp": true,
"undef": true,
"unused": false,
"trailing": true,
"sub": true,
"maxlen": 80
}
16 changes: 16 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.idea
.project
*.sublime-*
.DS_Store
*.seed
*.log
*.csv
*.dat
*.out
*.pid
*.swp
*.swo
node_modules
coverage
*.tgz
*.xml
3 changes: 3 additions & 0 deletions client/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## Client

This is the place for your application front-end files.
3 changes: 3 additions & 0 deletions common/models/coffee-shop.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = function(CoffeeShop) {

};
18 changes: 18 additions & 0 deletions common/models/coffee-shop.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "CoffeeShop",
"base": "PersistedModel",
"properties": {
"name": {
"type": "string",
"required": true
},
"city": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
20 changes: 20 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "loopback-getting-started",
"version": "0.0.0",
"main": "server/server.js",
"scripts": {
"pretest": "jshint ."
},
"dependencies": {
"compression": "^1.0.3",
"errorhandler": "^1.1.1",
"loopback": "^2.5.0",
"loopback-boot": "^2.2.0",
"loopback-component-explorer": "^2.1.0",
"loopback-datasource-juggler": "^2.7.0",
"serve-favicon": "^2.0.1"
},
"devDependencies": {
"jshint": "^2.5.6"
}
}
4 changes: 4 additions & 0 deletions server/boot/authentication.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = function enableAuthentication(server) {
// enable authentication
server.enableAuth();
};
6 changes: 6 additions & 0 deletions server/boot/root.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = function(server) {
// Install a `/` route that returns server status
var router = server.loopback.Router();
router.get('/', server.loopback.status());
server.use(router);
};
5 changes: 5 additions & 0 deletions server/component-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"loopback-component-explorer": {
"mountPath": "/explorer"
}
}
29 changes: 29 additions & 0 deletions server/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"restApiRoot": "/api",
"host": "0.0.0.0",
"port": 3000,
"remoting": {
"context": {
"enableHttpContext": false
},
"rest": {
"normalizeHttpPath": false,
"xml": false
},
"json": {
"strict": false,
"limit": "100kb"
},
"urlencoded": {
"extended": true,
"limit": "100kb"
},
"cors": {
"origin": true,
"credentials": true
},
"errorHandler": {
"disableStackTrace": false
}
}
}
6 changes: 6 additions & 0 deletions server/datasources.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"db": {
"name": "db",
"connector": "memory"
}
}
30 changes: 30 additions & 0 deletions server/middleware.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"initial:before": {
"loopback#favicon": {}
},
"initial": {
"compression": {}
},
"session": {
},
"auth": {
},
"parse": {
},
"routes": {
"loopback#rest": {
"paths": ["${restApiRoot}"]
}
},
"files": {
"loopback#static": {
"params": "$!../client"
}
},
"final": {
"loopback#urlNotFound": {}
},
"final:after": {
"errorhandler": {}
}
}
33 changes: 33 additions & 0 deletions server/model-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"_meta": {
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"./models"
]
},
"User": {
"dataSource": "db"
},
"AccessToken": {
"dataSource": "db",
"public": false
},
"ACL": {
"dataSource": "db",
"public": false
},
"RoleMapping": {
"dataSource": "db",
"public": false
},
"Role": {
"dataSource": "db",
"public": false
},
"CoffeeShop": {
"dataSource": "db",
"public": true
}
}
27 changes: 27 additions & 0 deletions server/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
var loopback = require('loopback');
var boot = require('loopback-boot');

var app = module.exports = loopback();

app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
if (err) throw err;

// start the server if `$ node server.js`
if (require.main === module)
app.start();
});

0 comments on commit 349e311

Please sign in to comment.