apps/newsletters-api/src/main.ts (57 lines of code) (raw):

import Fastify from 'fastify'; import { isServingReadEndpoints, isServingReadWriteEndpoints, isServingUI, } from './apiDeploymentSettings'; import { setHeaderHook } from './app/headers'; import { registerCurrentStepRoute } from './app/routes/currentStep'; import { registerDraftsRoutes } from './app/routes/drafts'; import { registerHealthRoute } from './app/routes/health'; import { registerReadLayoutRoutes, registerWriteLayoutRoutes, } from './app/routes/layouts'; import { registerReadNewsletterRoutes, registerReadWriteNewsletterRoutes, } from './app/routes/newsletters'; import { registerNotificationRoutes } from './app/routes/notifications'; import { registerRenderingTemplatesRoutes } from './app/routes/rendering-templates'; import { registerUserRoute } from './app/routes/user'; import { registerUIServer } from './register-ui-server'; const app = Fastify(); registerHealthRoute(app); if (isServingUI()) { registerUIServer(app); } if (isServingReadWriteEndpoints()) { registerCurrentStepRoute(app); registerUserRoute(app); registerReadWriteNewsletterRoutes(app); registerNotificationRoutes(app); registerWriteLayoutRoutes(app); } if (isServingReadEndpoints()) { registerReadNewsletterRoutes(app); registerDraftsRoutes(app); registerRenderingTemplatesRoutes(app); registerReadLayoutRoutes(app); } app.addHook('onSend', setHeaderHook); const start = async () => { try { const options = { port: 3000, /** * 0.0.0.0 so that we listen on every network interface. * This is essential for running the app within AWS. * * See: * - https://www.fastify.io/docs/latest/Reference/Server/#listen * - https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1 */ host: '0.0.0.0', }; console.log( `Starting newsletters-api server on http://${options.host}:${options.port}`, ); await app.listen(options); } catch (err) { // Errors are logged here console.error(err); process.exit(1); } }; /* eslint-disable-next-line -- intentionally asynchronous */ start();