Files
sklad_legacy/server/src/server.js
2025-08-22 19:26:43 +03:00

56 lines
1.6 KiB
JavaScript

import express from 'express';
import cors from 'cors';
import helmet from 'helmet';
import pino from 'pino';
import dotenv from 'dotenv';
import authRoutes from './routes/auth.js';
import itemRoutes from './routes/items.js';
import categoryRoutes from './routes/categories.js';
import operationRoutes from './routes/operations.js';
import statsRoutes from './routes/stats.js';
import usersRoutes from './routes/users.js';
import reportsRoutes from './routes/reports.js';
import notificationsRoutes from './routes/notifications.js';
dotenv.config();
const app = express();
const logger = pino({ level: process.env.NODE_ENV === 'production' ? 'info' : 'debug' });
app.use(helmet());
app.use(cors({ origin: true, credentials: true }));
app.use(express.json());
app.get('/api/health', (req, res) => {
res.json({ status: 'ok' });
});
app.use('/api/auth', authRoutes);
app.use('/api/items', itemRoutes);
app.use('/api/categories', categoryRoutes);
app.use('/api/operations', operationRoutes);
app.use('/api/stats', statsRoutes);
app.use('/api/users', usersRoutes);
app.use('/api/reports', reportsRoutes);
app.use('/api/notifications', notificationsRoutes);
// Not found handler
app.use((req, res) => {
res.status(404).json({ error: 'Not Found' });
});
// Error handler
// eslint-disable-next-line no-unused-vars
app.use((err, req, res, next) => {
logger.error(err);
res.status(err.status || 500).json({ error: err.message || 'Internal Server Error' });
});
const port = Number(process.env.PORT || 3001);
app.listen(port, () => {
logger.info(`API listening on http://localhost:${port}`);
});