Skip to content
Snippets Groups Projects
Commit 683ce4f3 authored by Louis-Marie Michelin's avatar Louis-Marie Michelin
Browse files

:tada: initial commit

parents
No related branches found
No related tags found
No related merge requests found
Showing
with 277 additions and 0 deletions
{
"recommendations": [
"octref.vetur",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"digitalbrainstem.javascript-ejs-support",
"ms-azuretools.vscode-cosmosdb"
]
}
{
"editor.formatOnSave": true,
"eslint.format.enable": true,
"eslint.workingDirectories": [{ "mode": "auto" }],
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"[vue]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[md]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
# centrale-ei-web
## Backend
### Project setup
```
cd backend
npm install
```
### Start and auto-reload for development
```
npm run dev
```
### Start for production
```
npm run start
```
### Lint and fix files
```
npm run lint
```
## Frontend
### Project setup
```
cd frontend
npm install
```
### Compile and hot-reload for development
```
npm run dev
```
### Compile and minifiy for production
```
npm run build
```
### Lint and fix files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
PORT=3000
NODE_ENV=development
MONGO_DB_URL=mongodb://username:password@hostname:27017/databasename?ssl=true
module.exports = {
root: true,
env: {
node: true,
},
extends: ["eslint:recommended", "plugin:prettier/recommended"],
parserOptions: {
ecmaVersion: 2020,
},
rules: {
"prettier/prettier": "warn",
"no-unreachable": "warn",
},
};
.DS_Store
node_modules
# local env files
.env
const mongoose = require("mongoose");
const UserSchema = new mongoose.Schema({
email: { type: String, required: true, unique: true },
firstName: { type: String },
lastName: { type: String },
});
const UserModel = mongoose.model("UserModel", UserSchema, "users");
module.exports = UserModel;
This diff is collapsed.
{
"name": "centrale-ei-web-backend",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "dotenv nodemon ./server.js",
"start": "dotenv node ./server.js",
"lint": "eslint . --fix"
},
"dependencies": {
"cors": "^2.8.5",
"dotenv-cli": "^4.0.0",
"express": "^4.17.1",
"mongoose": "^5.12.13",
"morgan": "^1.10.0"
},
"devDependencies": {
"eslint": "^7.28.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0",
"nodemon": "^2.0.7",
"prettier": "^2.3.1"
}
}
const express = require("express");
const router = express.Router();
router.get("/", function (req, res) {
res.json({ message: "Hello from Express!" });
});
module.exports = router;
const express = require("express");
const UserModel = require("../models/user");
const router = express.Router();
router.get("/", function (req, res) {
UserModel.find({}).then(function (users) {
res.json({ users: users });
});
});
router.post("/new", function (req, res) {
const newUser = new UserModel({
email: req.body.email,
firstName: req.body.firstName,
lastName: req.body.lastName,
});
newUser
.save()
.then(function (newDocument) {
res.status(201).json(newDocument);
})
.catch(function (error) {
if (error.code === 11000) {
res.status(400).json({
message: `User with email "${newUser.email}" already exists`,
});
} else {
res.status(500).json({ message: "Error while creating the user" });
}
});
});
module.exports = router;
const express = require("express");
const logger = require("morgan");
const cors = require("cors");
const mongoose = require("mongoose");
const jsonErrorHandler = require("./services/jsonErrorHandler");
const indexRouter = require("./routes/index");
const usersRouter = require("./routes/users");
const routeNotFoundJsonHandler = require("./services/routeNotFoundJsonHandler");
mongoose.connect(process.env.MONGO_DB_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
});
const app = express();
app.use(logger("dev"));
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(jsonErrorHandler);
app.use("/", indexRouter);
app.use("/users", usersRouter);
app.use(routeNotFoundJsonHandler);
const port = parseInt(process.env.PORT || "3000");
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`);
});
// Custom error handler to send unhandled errors in JSON instead of HTML.
// The error-handling middleware is a special type of Express middleware
// that needs to have four arguments as opposed to a regular middleware.
// eslint-disable-next-line no-unused-vars
const jsonErrorHandler = function (error, req, res, next) {
if (process.env.NODE_ENV === "development") {
return res.status(500).json({
message: error.toString(),
stackTrace: error.stack,
});
} else {
// Hide error details in production to avoid security issues
return res.status(500).json({
message: "Internal server error",
});
}
};
module.exports = jsonErrorHandler;
const routeNotFoundJsonHandler = function (req, res) {
res.status(404).json({ message: `Cannot ${req.method} ${req.path}` });
};
module.exports = routeNotFoundJsonHandler;
> 1%
last 2 versions
not dead
VUE_APP_BACKEND_BASE_URL=http://localhost:3000
module.exports = {
root: true,
env: {
node: true,
},
extends: ["plugin:vue/vue3-essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
ecmaVersion: 2020,
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"vue/attribute-hyphenation": ["error", "never"],
"vue/component-name-in-template-casing": "error",
},
};
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
}
}
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment