1
0
Fork 0
freesewing/sites/backend/src/index.mjs

48 lines
1.4 KiB
JavaScript
Raw Normal View History

// Dependencies
import express from 'express'
import chalk from 'chalk'
import path from 'path'
import fs from 'fs'
import { PrismaClient } from '@prisma/client'
import passport from 'passport'
// Routes
import { routes } from './routes/index.mjs'
// Config
import { verifyConfig } from './config.mjs'
// Middleware
import { loadExpressMiddleware, loadPassportMiddleware } from './middleware.mjs'
// Encryption
import { encryption } from './utils/crypto.mjs'
// Bootstrap
const config = verifyConfig()
const prisma = new PrismaClient()
const app = express()
app.use(express.json())
app.use(express.static('public'))
// Load middleware
loadExpressMiddleware(app)
loadPassportMiddleware(passport, config)
const params = {
app,
passport,
prisma,
...encryption(config.encryption.key),
2022-10-29 22:25:00 +02:00
config,
}
// Load routes
for (const type in routes) routes[type](params)
// Catch-all route (Load index.html once instead of at every request)
const index = fs.readFileSync(path.resolve('.', 'src', 'landing', 'index.html'))
app.get('/', async (req, res) => res.set('Content-Type', 'text/html').status(200).send(index))
// Start listening for requests
app.listen(config.port, (err) => {
if (err) console.error(chalk.red('Error occured'), err)
if (process.env.NODE_ENV === 'development') console.log(chalk.yellow('> in development'))
console.log(chalk.green(`🚀 REST API ready, listening on ${config.api}`))
})