VashuTheGreat2's picture
Upload folder using huggingface_hub
c01955c verified
import { expressRepre,Vexpress } from "@vashuthegreat/vexpress";
import cors from "cors"
import cookieParser from "cookie-parser";
import UserRouter from "./routes/user.routes.js"
import connectdb from "./db/connectdb.js";
import TemplateRouter from "./routes/templates.routes.js";
import InterviewRouter from "./routes/interviews.routes.js";
import performanceRouter from "./routes/performance.routes.js"
import questionRouter from "./routes/question.routes.js";
import CodingSchemaRouter from "./routes/coding.routes.js";
import StreamRouter from "./routes/stream.routes.js"
import { Request, Response } from "express";
import { rateLimit } from 'express-rate-limit'
import { RedisStore } from 'rate-limit-redis'
import redisClient from "./utils/RedisClient.js"
import logger from "./logger/create.logger.js"
logger.info("Connecting to MongoDB...");
connectdb()
const app=new Vexpress();
logger.info("Setting up documentation...");
app.setupDocs();
logger.info("Server is starting at http://localhost:8000")
app.use(cors({
origin:['http://localhost:5173','http://localhost:5174','http://localhost:8080','*','http://10.226.207.207:8080','https://www.mlearner.tech','www.mlearner.tech']
,credentials:true
}));
app.use(cookieParser())
// Implementing Token Bucket
// bucker
interface Limiter {
windowMs: number;
limit: number;
standardHeaders: 'draft-6' | 'draft-7' | 'draft-8' | boolean;
legacyHeaders: boolean;
ipv6Subnet?: number; // Optional, defaults to 56
store?: any; // Use any here to avoid typing issues with RedisStore
}
// console.log(process.env)
const limiter = rateLimit({
windowMs: Number(process.env.windowMs)* 60 * 1000,
limit: Number(process.env.limit),
standardHeaders: process.env.standardHeaders as 'draft-6' | 'draft-7' | 'draft-8' | boolean,
legacyHeaders: process.env.legacyHeaders === 'true',
ipv6Subnet: Number(process.env.ipv6Subnet),
store: new RedisStore({
// @ts-expect-error - ioredis typing conflict with rate-limit-redis
sendCommand: async (...args: string[]) => redisClient.call(args[0], ...args.slice(1)),
}),
} satisfies Limiter);
// app.use(limiter)
app.use(Vexpress.urlencoded({extended:true,limit:"16kb"}))// extended true bole to or obj ke under obj de pate h and ye url me jo data hota h usko deta h
app.use(Vexpress.json({limit:"16kb"})) // asa no ho ki kitne bhi json bhej de
app.use(Vexpress.static("public"))
app.use("/api/user",UserRouter);
app.use("/api/templates",TemplateRouter);
app.use("/api/interview",InterviewRouter);
app.use("/api/performance",performanceRouter);
app.use("/api/question",questionRouter);
app.use("/api/codingSchema",CodingSchemaRouter);
app.use("/api/stream",StreamRouter)
app.use("/",async (req:Request,res:Response)=>{
// await new Promise(resolve=>setTimeout(resolve,2000))
res.status(200).json({message:"Hello World"})
})
export default app;