import express from 'express'; import cookieParser from 'cookie-parser'; import path from 'path'; import { ROOT } from './rootDir'; import { jwtMiddleware, requireAuth } from './middleware/auth'; import groupsRouter from './routes/groups'; import projectsRouter from './routes/projects'; import filesRouter from './routes/files'; import localesRouter from './routes/locales'; import layoutRouter from './routes/layout'; import rojosRouter from './routes/rojos'; import { generateLocales } from './localeGenerator'; import deployRouter from './routes/deploy'; import { EmailService } from './email/EmailService'; generateLocales(); const app = express(); app.use( '/api/deploy', deployRouter ); app.use( express.json() ); app.use( express.text( { type: 'text/plain' } ) ); app.use( cookieParser() ); app.use( jwtMiddleware ); app.use( express.static( path.join( ROOT, 'build', 'app' ) ) ); app.use( '/api/groups', groupsRouter ); app.use( '/api/projects', projectsRouter ); app.use( '/api/files', filesRouter ); app.use( '/api/locales', localesRouter ); app.use( '/api/layout', layoutRouter ); app.use( '/api/rojos', rojosRouter ); app.get( '/api/auth/me', requireAuth, ( req, res ) => res.json( req.user ) ); app.get( '/', ( _req, res ) => res.redirect( '/dashboard.html' ) ); export function startServer( port: number ): void { app.listen( port, () => { const time = new Date().toISOString(); console.log( `Roject running on http://localhost:${port}` ); EmailService.sendEmail( EmailService.reportEmail, 'Roject — server started', `Server started at ${time} on port ${port}.` ).catch( () => {} ); } ); } if ( require.main === module ) { const PORT = process.env.PORT ? Number( process.env.PORT ) : 3000; startServer( PORT ); }