mirror of
https://github.com/pawelmalak/snippet-box.git
synced 2025-12-21 13:23:05 +01:00
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
import { join } from 'path';
|
|
import dotenv from 'dotenv';
|
|
import express, { Request, Response } from 'express';
|
|
import { Logger } from './utils';
|
|
import { connectDB } from './db';
|
|
import { errorHandler } from './middleware';
|
|
|
|
// Routers
|
|
import { snippetRouter, authRouter } from './routes';
|
|
import { associateModels } from './db/associateModels';
|
|
|
|
// Env config
|
|
dotenv.config({ path: './src/config/.env' });
|
|
|
|
const app = express();
|
|
const logger = new Logger('server');
|
|
const PORT = process.env.PORT || 5000;
|
|
|
|
// App config
|
|
app.use(express.json());
|
|
app.use(express.static(join(__dirname, '../public')));
|
|
|
|
// Serve client code
|
|
app.get(/^\/(?!api)/, (req: Request, res: Response) => {
|
|
res.sendFile(join(__dirname, '../public/index.html'));
|
|
});
|
|
|
|
// Routes
|
|
app.use('/api/snippets', snippetRouter);
|
|
app.use('/api/auth', authRouter);
|
|
|
|
// Error handler
|
|
app.use(errorHandler);
|
|
|
|
(async () => {
|
|
await connectDB();
|
|
await associateModels();
|
|
|
|
app.listen(PORT, () => {
|
|
logger.log(
|
|
`Server is working on port ${PORT} in ${process.env.NODE_ENV} mode`
|
|
);
|
|
});
|
|
})();
|