4 Commits

Author SHA1 Message Date
6d8f19c68c Misc changes. 2020-12-29 12:54:29 +01:00
29f93bb0ad Add file to gitignore. 2020-12-28 15:24:32 +01:00
391be9b833 Add frontend to be served by backend. 2020-12-28 15:19:09 +01:00
Pierre THIERRY
94226c140e Build starter. 2020-09-27 09:11:13 +02:00
19 changed files with 4928 additions and 9 deletions

3
.gitignore vendored
View File

@@ -1,2 +1,3 @@
**/node_modules **/node_modules
docker/mongodb/data docker/mongodb/data
**/public/bundle.js

10
backend/public/index.html Normal file
View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<title>Vanilla JS frontend app.</title>
</head>
<body>
<div id="content"></div>
<script type="application/javascript" src="./bundle.js"></script>
</body>
</html>

View File

@@ -3,13 +3,14 @@ const bodyParser = require('body-parser');
const applicationController = require('./controller/applicationCtrl'); const applicationController = require('./controller/applicationCtrl');
const userController = require('./controller/userCtrl'); const userController = require('./controller/userCtrl');
const port = 3000; const port = 8080;
const app = express(); const app = express();
app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json()); app.use(bodyParser.json());
app.use(express.static('backend/public'));
app.use('/apps', applicationController); app.use('/api/apps', applicationController);
app.use('/users', userController); app.use('/api/users', userController);
app.listen(port, () => console.log('Mock is listening at port ', port, '\n')); app.listen(port, () => console.log('Mock is listening at port ', port, '\n'));

View File

@@ -1,6 +1,6 @@
const fs = require('fs'); const fs = require('fs');
const yaml = require('yaml'); const yaml = require('yaml');
const configurationFile = fs.readFileSync('src/resources/application.yml', 'utf8'); const configurationFile = fs.readFileSync('backend/src/resources/application.yml', 'utf8');
const configuration = yaml.parse(configurationFile); const configuration = yaml.parse(configurationFile);
module.exports = configuration; module.exports = configuration;

View File

@@ -2,6 +2,11 @@ const router = require('express').Router();
const tokenService = require('../service/tokenService'); const tokenService = require('../service/tokenService');
const userService = require('../service/userService'); const userService = require('../service/userService');
const passwordService = require('../service/passwordService');
const Repository = require('../repository/repository');
const userRepository = new Repository('users');
router.post('/login', (request, response) => { router.post('/login', (request, response) => {
const loginRequest = request.body; const loginRequest = request.body;
@@ -17,4 +22,20 @@ router.post('/login', (request, response) => {
} }
}); });
router.post('/init', (request, response) => {
userRepository.insert({_id: 'takiguchi', login:'takiguchi', password:passwordService.hashPassword('azer')}, () => {
console.log('ok');
response.status(200).send();
}, () => {
console.error('KO');
response.status(400).send();
});
})
router.get('/test', (request, response) => {
response.json({
content: 'Hello world from users controller!'
});
});
module.exports = router; module.exports = router;

View File

@@ -1,4 +1,4 @@
version: "3.6" version: "3.0"
services: services:
mongo: mongo:
container_name: "mongo" container_name: "mongo"

7
frontend/src/index.js Normal file
View File

@@ -0,0 +1,7 @@
console.log('Hello world! ++++++');
document.getElementById('content').innerHTML = `
<div>
<h1>Hello world!</h1>
</div>
`;

View File

@@ -0,0 +1,24 @@
const webpack = require("webpack");
const path = require("path");
const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
let config = {
entry: "./frontend/src/index.js",
output: {
path: path.resolve(__dirname, "../backend/public"),
filename: "bundle.js"
},
devServer: {
contentBase: path.resolve(__dirname, "../backend/public"),
historyApiFallback: true,
inline: true,
open: true,
hot: true
},
plugins: [
new UglifyJSPlugin(),
new webpack.SourceMapDevToolPlugin({})
],
devtool: "eval-source-map"
}
module.exports = config;

4849
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,8 +4,9 @@
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"start": "nodemon ./src/js/app.js localhost 3000", "start": "npm-run-all --parallel start-frontend start-backend",
"test": "echo \"Error: no test specified\" && exit 1" "start-backend": "nodemon ./backend/src/js/app.js localhost 3000",
"start-frontend": "webpack --watch --config frontend/webpack.config.js"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
@@ -20,6 +21,11 @@
"devDependencies": { "devDependencies": {
"eslint": "^7.4.0", "eslint": "^7.4.0",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"nodemon": "^2.0.4" "nodemon": "^2.0.4",
"uglifyjs-webpack-plugin": "^2.2.0",
"webpack": "^4.41.2",
"webpack-cli": "^3.3.10",
"webpack-dev-server": "^3.9.0",
"npm-run-all": "^4.1.5"
} }
} }