Initial commit — Умный Байт landing
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import express from 'express';
|
||||
import cors from 'cors';
|
||||
import cookieParser from 'cookie-parser';
|
||||
import dotenv from 'dotenv';
|
||||
import { publicRouter } from './routes/public.js';
|
||||
import { adminRouter } from './routes/admin.js';
|
||||
import { runMigrations } from './db/migrate.js';
|
||||
import { initFirstAdmin } from './scripts/init-admin.js';
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const app = express();
|
||||
const PORT = parseInt(process.env.PORT || '3000', 10);
|
||||
|
||||
app.use(express.json({ limit: '1mb' }));
|
||||
app.use(cookieParser());
|
||||
|
||||
app.use(
|
||||
cors({
|
||||
origin:
|
||||
process.env.NODE_ENV === 'production'
|
||||
? false
|
||||
: ['http://localhost:5173', 'http://127.0.0.1:5173'],
|
||||
credentials: true,
|
||||
})
|
||||
);
|
||||
|
||||
app.get('/api/health', (_req, res) => {
|
||||
res.json({ ok: true, service: 'umbyte-backend' });
|
||||
});
|
||||
|
||||
app.use('/api', publicRouter);
|
||||
app.use('/api/admin', adminRouter);
|
||||
|
||||
app.use((err: Error, _req: express.Request, res: express.Response, _next: express.NextFunction) => {
|
||||
console.error('[error]', err);
|
||||
res.status(500).json({ error: 'internal_error' });
|
||||
});
|
||||
|
||||
async function start() {
|
||||
try {
|
||||
await runMigrations();
|
||||
await initFirstAdmin();
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`[umbyte-backend] listening on :${PORT}`);
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('[startup] fatal error:', err);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
start();
|
||||
Reference in New Issue
Block a user