Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update app.js with optimized code structure #394

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 42 additions & 41 deletions backend/app.js
Original file line number Diff line number Diff line change
@@ -1,53 +1,54 @@
import dotenv from "dotenv";
import dotenv from 'dotenv';
import express from 'express';
import cookieParser from 'cookie-parser';
import cors from 'cors';

import express from "express";
import cookieParser from "cookie-parser";
import { errorHandler } from "./src/utilis/ApiError.js";
import cors from "cors";
import { errorHandler } from './src/utilis/ApiError.js'; // Custom error handler

const app = express();
// Import all routes
import userRouter from './src/routes/user.routes.js';
import contactUsRouter from './src/routes/contactus.routes.js';
import appointmentRouter from './src/routes/appointment.routes.js';
import medicineRouter from './src/routes/medicine.routes.js';
import CartRouter from './src/routes/UserCart.routes.js';
import PaymentRouter from './src/routes/payment.routes.js';
import TestimonialRouter from './src/routes/testimonial.routes.js';

// dotenv configuration
dotenv.config({
path: "./.env",
});
// Load environment variables
dotenv.config({ path: './.env' });

const app = express();

// cors middleware configuration connects frontend to backend
// Middleware configurations
// Setup CORS to allow requests from trusted origins, including credentials support
app.use(
cors({
origin: [process.env.FRONTEND_URL, process.env.DASHBOARD_URL],
method: ["GET", "POST", "DELETE", "PUT"],
methods: ['GET', 'POST', 'DELETE', 'PUT'],
credentials: true,
}),
})
);

// Middleware for parsing cookies and request bodies
app.use(cookieParser());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// import routes
import userRouter from "./src/routes/user.routes.js";
import contactUsRouter from "./src/routes/contactus.routes.js";
import appointmentRouter from "./src/routes/appointment.routes.js";
import medicineRouter from "./src/routes/medicine.routes.js";
import CartRouter from "./src/routes/UserCart.routes.js";
import PaymentRouter from "./src/routes/payment.routes.js";
import TestimonialRouter from "./src/routes/testimonial.routes.js";

// Define the root route
// app.get('/', (req, res) => {
// res.send('Welcome to the homepage!');
// });

// routes declaration
app.use("/api/v1/user", userRouter);
app.use("/api/v1/message", contactUsRouter);
app.use("/api/v1/appointment", appointmentRouter);
app.use("/api/v1/medicines", medicineRouter);
app.use("/api/v1/medicines-cart", CartRouter)
app.use("/api/v1/payment", PaymentRouter)
app.use("/api/v1/testimonial", TestimonialRouter)


// error middleware
app.use(express.json()); // Automatically parse JSON payloads
app.use(express.urlencoded({ extended: true })); // Parse URL-encoded data

// API route handlers
app.use('/api/v1/user', userRouter);
app.use('/api/v1/message', contactUsRouter);
app.use('/api/v1/appointment', appointmentRouter);
app.use('/api/v1/medicines', medicineRouter);
app.use('/api/v1/medicines-cart', CartRouter);
app.use('/api/v1/payment', PaymentRouter);
app.use('/api/v1/testimonial', TestimonialRouter);

// Default route (optional for base-level check)
app.get('/', (req, res) => {
res.send('API is running successfully.');
});

// Error handling middleware for unified API error responses
app.use(errorHandler);

export default app;