const fastify = require('fastify')({ logger: true }); const path = require('path'); const { animeMetadata } = require('./src/metadata/anilist'); const { initDatabase } = require('./src/shared/database'); const { loadExtensions } = require('./src/shared/extensions'); const viewsRoutes = require('./src/views/views.routes'); const animeRoutes = require('./src/anime/anime.routes'); const booksRoutes = require('./src/books/books.routes'); const proxyRoutes = require('./src/shared/proxy/proxy.routes'); fastify.register(require('@fastify/static'), { root: path.join(__dirname, 'public'), prefix: '/public/', decorateReply: false }); fastify.register(require('@fastify/static'), { root: path.join(__dirname, 'views'), prefix: '/views/', decorateReply: false }); fastify.register(require('@fastify/static'), { root: path.join(__dirname, 'src'), prefix: '/src/', decorateReply: false }); fastify.register(viewsRoutes); fastify.register(animeRoutes, { prefix: '/api' }); fastify.register(booksRoutes, { prefix: '/api' }); fastify.register(proxyRoutes, { prefix: '/api' }); const start = async () => { try { initDatabase(); await loadExtensions(); await fastify.listen({ port: 3000, host: '0.0.0.0' }); console.log(`Server running at http://localhost:3000`); animeMetadata(); } catch (err) { fastify.log.error(err); process.exit(1); } }; start();