This repository was archived by the owner on Sep 18, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.ts
More file actions
65 lines (60 loc) · 2.37 KB
/
server.ts
File metadata and controls
65 lines (60 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import express from "express";
import dotenv from "dotenv";
// Routes
import { authorizationRoute } from './routes/auth';
import { registerRoute } from './routes/register';
import { loginRoute } from './routes/login';
import { logoutRoute } from "./routes/logout";
import { productionRoute } from "./routes/production";
import { promptifyRoute } from "./routes/promptify";
import { promptsRoute, userPromptsRoute } from "./routes/prompts";
import { downloadPromptRoute, likePromptRoute, promptRoute } from "./routes/prompt";
// Micro Database connection
import { mongoConnect } from "./database/connect";
// Configs
import { corsConfig, luscaConfig, limiterConfig, helmetConfig, sessionConfig } from "./configs";
// Middlewares
import { consoleMiddleware } from "./middlewares";
// Types
import { SessionUser } from "./types/user";
// load .env variables
dotenv.config();
declare module "express-session" {
interface SessionData {
user: SessionUser;
}
}
// init the server:
const server = express();
//setup express server Middelwares:
// => security middlewares
server.use(corsConfig); // cors configuration
server.use(limiterConfig); // rate limiter
server.use(helmetConfig) // helmet configuration
// server.use(luscaConfig); // lusca protection configuration
server.use(sessionConfig) // session configuration
// => body parser middlewares
server.use(express.urlencoded({extended: false})); // parse application/x-www-form-urlencoded
server.use(express.json()); // parse application/json
// => custom middlewares
server.use(consoleMiddleware); // console middleware
//init the server:
server.listen(process.env.SERVER_PORT, ()=> console.info(`=> SERVER is live in: http://localhost:${process.env.SERVER_PORT}`));
// MONGODB CONNECTION SETUP
mongoConnect(process.env.MONGODB_URL as string, process.env.MONGODB_DB as string);
//Routes handellers:
// auth
server.get("/", authorizationRoute);
server.post(["/signin", "/login"], loginRoute);
server.post(["/signup", "/register"], registerRoute);
server.get("/logout", logoutRoute);
// production
server.post("/production", productionRoute);
server.get("/promptify", promptifyRoute);
// prompts
server.get("/prompts", promptsRoute);
server.post("/prompts/new", promptRoute);
server.get("/prompts/mine/:uid", userPromptsRoute);
// prompt likes and downloads
server.post("/prompt/likes", likePromptRoute);
server.post("/prompt/downloads", downloadPromptRoute);