alex/index.js
2021-10-19 12:18:47 +02:00

65 lines
1.7 KiB
JavaScript

// ! Imports
const express = require("express");
const helmet = require("helmet");
const compression = require("compression");
const cors = require("cors");
const morgan = require("morgan");
const chalk = require("chalk");
const hbs = require("express-handlebars");
const { dev, allMusic, music, port, socials, name } = require("./configs");
const app = express();
app.engine("hbs", hbs({ extname: "hbs", defaultView: "default" }));
app.set("view engine", "hbs");
app.set("json spaces", 4);
app.use("/assets", express.static("./assets"));
app.use(express.json());
app.use(
express.urlencoded({
extended: true,
})
);
app.use(helmet());
app.use(compression());
app.use(cors());
app.use(
morgan((tokens, req, res) => {
return [
chalk.hex("#34ace0").bold(`[ ${tokens.method(req, res)} ]`),
chalk.hex("#ffb142").bold(tokens.status(req, res)),
chalk.hex("#ff5252").bold(req.hostname + tokens.url(req, res)),
chalk.hex("#2ed573").bold(tokens["response-time"](req, res) + "ms"),
chalk.hex("#f78fb3").bold("@ " + tokens.date(req, res)),
].join(" ");
})
);
app.get("/", async (req, res) => {
res.render("index", {
layout: "index",
name,
protocol: dev ? `http` : `https`,
host: dev ? `${req.hostname}:${port}` : `${req.hostname}`,
socials,
music,
creator: {
name: "temere",
website: "https://teme.re",
},
});
});
// ! SOCIAL LINKS
socials.forEach((social) => {
app.get(`/${social.name}`, (req, res) => res.redirect(social.link));
});
// ! MUSIC LINKS
allMusic.forEach((item) => {
app.get(`/${item.id}`, (req, res) => res.redirect(item.link));
});
app.listen(port, () => {
console.log(`[ Server ] Listening on ${port}`);
});