chore: add server/index.ts

This commit is contained in:
notshop 2026-04-26 16:36:17 +00:00
parent 2fb134f42b
commit 1f5d34aab5

65
server/index.ts Normal file
View file

@ -0,0 +1,65 @@
import express, { type Request, Response, NextFunction } from "express";
import session from "express-session";
import connectPgSimple from "connect-pg-simple";
import { pool } from "./db";
import { registerRoutes } from "./routes";
import { createServer } from "http";
const app = express();
const httpServer = createServer(app);
app.use(express.json({ limit: "2mb" }));
app.use(express.urlencoded({ extended: false }));
// ── Session ────────────────────────────────────────────────────────────────────
const PgSession = connectPgSimple(session);
app.use(
session({
store: new PgSession({
pool,
tableName: "user_sessions",
createTableIfMissing: true,
}),
secret: process.env.SESSION_SECRET || "change-me-in-production",
resave: false,
saveUninitialized: false,
cookie: {
secure: process.env.NODE_ENV === "production",
httpOnly: true,
maxAge: 30 * 24 * 60 * 60 * 1000, // 30 days
},
})
);
// ── API Routes ─────────────────────────────────────────────────────────────────
registerRoutes(app);
// ── Error Handler ─────────────────────────────────────────────────────────────
app.use((err: any, _req: Request, res: Response, _next: NextFunction) => {
const status = err.status || err.statusCode || 500;
const message = err.message || "Internal Server Error";
console.error(`[error] ${status}`, message);
res.status(status).json({ error: message });
});
// ── Dev/Prod Vite ─────────────────────────────────────────────────────────────
async function start() {
if (process.env.NODE_ENV !== "production") {
const { setupVite } = await import("./vite");
await setupVite(httpServer, app);
} else {
const { serveStatic } = await import("./vite");
serveStatic(app);
}
const port = parseInt(process.env.PORT || "5000");
httpServer.listen(port, "0.0.0.0", () => {
console.log(`[notshop] Running on port ${port} (${process.env.NODE_ENV || "development"})`);
});
}
start().catch((err) => {
console.error("[notshop] Failed to start:", err);
process.exit(1);
});