Skip to content

Commit 0f1495a

Browse files
committed
Project Interface Setup
0 parents commit 0f1495a

34 files changed

+4785
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.env
2+
node_modules
3+
public/uploads

.vscode/settings.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"editor.formatOnSave":true,
3+
"[javascript]": {
4+
"editor.formatOnSave": true,
5+
"editor.defaultFormatter": "esbenp.prettier-vscode"
6+
}
7+
}

README.md

Whitespace-only changes.

app.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// External Dependencies
2+
const express = require("express");
3+
const mongoose = require("mongoose");
4+
const dotenv = require("dotenv");
5+
const path = require("path");
6+
const cookieParser = require("cookie-parser");
7+
8+
// Internal Dependencies:
9+
const {
10+
notFoundHandler,
11+
errorHandler,
12+
} = require("./middlewares/common/errorHandler");
13+
const loginRouter = require("./router/loginRouter");
14+
const userRouter = require("./router/userRouter");
15+
const inboxRouter = require("./router/inboxRouter");
16+
17+
const app = express();
18+
dotenv.config();
19+
20+
// Database Connection
21+
mongoose
22+
.connect(process.env.DB_CONNECTION_URL, {
23+
useNewUrlParser: true,
24+
useUnifiedTopology: true,
25+
})
26+
.then(() => console.log("Successfully Connected To Database!"))
27+
.catch((error) => console.log(err));
28+
29+
// Request Parser
30+
app.use(express.json());
31+
app.use(express.urlencoded({ extended: true }));
32+
33+
// Set View Engine
34+
app.set("view engine", "ejs");
35+
36+
// Set Static Folder
37+
app.use(express.static(path.join(__dirname, "public")));
38+
39+
// Parse Cookie Data
40+
app.use(cookieParser(process.env.COOKIE_SECRET));
41+
42+
// Routing Setup
43+
app.use("/", loginRouter);
44+
app.use("/users", userRouter);
45+
app.use("/inbox", inboxRouter);
46+
47+
// Not Found Handler
48+
app.use(notFoundHandler);
49+
50+
// Error Handler
51+
app.use(errorHandler);
52+
53+
app.listen(process.env.PORT, () => {
54+
console.log(`Application listening to port ${process.env.PORT}`);
55+
});

controller/inboxController.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Get Inbox Page page
2+
const getInbox = (req, res, next) => {
3+
res.render("inbox");
4+
};
5+
6+
// Module Export
7+
module.exports = { getInbox };

controller/loginController.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Get Login page
2+
const getLogin = (req, res, next) => {
3+
res.render("index");
4+
};
5+
6+
// Module Export
7+
module.exports = { getLogin };

controller/userController.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Get User Page page
2+
const getUsers = (req, res, next) => {
3+
res.render("users");
4+
};
5+
6+
// Module Export
7+
module.exports = { getUsers };
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// This Middleware Set Html Title for ejs View:
2+
function decorateHtmlResponse(page_title) {
3+
return function (req, res, next) {
4+
res.locals.html = true;
5+
res.locals.title = `${page_title} - ${process.env.APP_NAME}`;
6+
next();
7+
};
8+
}
9+
10+
// Module Export
11+
module.exports = decorateHtmlResponse;

middlewares/common/errorHandler.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// External Dependencies:
2+
const createError = require("http-errors");
3+
4+
// 404 Not Found Handler
5+
const notFoundHandler = (req, res, next) => {
6+
next(createError(404, "Your request content was not found!"));
7+
};
8+
9+
//Default Error Handler
10+
const errorHandler = (error, req, res, next) => {
11+
res.locals.error =
12+
process.env.NODE_ENV === "development" ? error : { message: error.message };
13+
14+
res.status(error.status || 500);
15+
16+
// Conditional Html || Json Resposne
17+
if (!res.locals.html) {
18+
res.render("errorPage", {
19+
title: "Error Page",
20+
});
21+
} else {
22+
res.json(res.locals.error);
23+
}
24+
};
25+
26+
// Module Export
27+
module.exports = {
28+
notFoundHandler,
29+
errorHandler,
30+
};

0 commit comments

Comments
 (0)