GIF89a
import express from "express";
import cors from "cors";
import { logManager } from "./middlewares/log.manager.js";
import fs from "fs";
const app = express();
app.use(express.json());
// ✅ Enable CORS for all routes
app.use(cors({
origin: '*', // or specify your frontend: 'http://127.0.0.1:58889'
methods: ['GET', 'POST', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization'],
}));
// ✅ Handle preflight requests
app.options('*', cors());
import authRouter from "./routes/auth.routes.js";
import userRouter from "./routes/user.routes.js";
import subscriptionRouter from "./routes/subscription.routes.js";
import templateRouter from "./routes/template.routes.js";
import multer from "multer";
app.use("/api/auth", authRouter);
app.use("/api/user", userRouter);
app.use("/api/subscription", subscriptionRouter);
app.use("/api/template", templateRouter);
app.use("/uploads", express.static("uploads"));
app.use(logManager);
app.get("/", (req, res) => {
res.send("Hello World");
});
// Configure multer storage
const storage = multer.diskStorage({
destination: function (req, file, cb) {
console.log(file);
const dir = 'uploads/';
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
cb(null, dir);
},
filename: function (req, file, cb) {
console.log(file);
const uniqueName = Date.now() + '-' + file.originalname;
cb(null, uniqueName);
}
});
const upload = multer({
storage: storage,
fileFilter: (req, file, cb) => {
console.log(file);
// Accept all file types
cb(null, true);
}
});
// API endpoint
app.post('/upload', upload.single('image'), (req, res) => {
console.log(req);
try {
if (!req.file) {
return res.status(400).json({ message: 'No file uploaded' });
}
// Return full URL path
const fileUrl = `uploads/${req.file.filename}`;
res.json({
message: 'Image uploaded successfully',
fileUrl: fileUrl
});
} catch (error) {
console.error('Upload error:', error);
res.status(500).json({
message: 'Error uploading file',
error: error.message
});
}
});
export { app };