import { config } from 'dotenv' import fastify from 'fastify' import helmet from 'fastify-helmet' import swagger from 'fastify-swagger' import api from './plugins/api' config() const server = fastify({ logger: { level: process.env.LOGGER_LEVEL, prettyPrint: process.env.LOGGER_PRETTY_PRINT === 'true', }, }) server.register(helmet) server.register(swagger, { routePrefix: '/docs', exposeRoute: true, swagger: { info: { title: 'Flexor API', description: 'API server for Flexor.', version: process.env.NPM_PACKAGE_VERSION, }, tags: [ { name: 'app', description: 'App endpoints.' }, { name: 'authentication', description: 'Authentication endpoints.' }, { name: 'group', description: 'Group endpoints.' }, { name: 'media', description: 'Media endpoints.' }, { name: 'post', description: 'Post endpoints.' }, { name: 'user', description: 'User endpoints.' }, ], host: 'localhost', schemes: ['http', 'https'], }, }) server.register(api) server.ready(err => { if (err) throw err server.swagger() }) const port = parseInt(process.env.PORT!, 10) server.listen(port, (err, address) => { if (err) { server.log.error(err) process.exit(1) } server.log.info(`✊🏾 Flexor API listening at ${address}`) })