selfhostable, read-only reddit client
1const express = require("express");
2const rateLimit = require("express-rate-limit");
3const path = require("node:path");
4const cookieParser = require("cookie-parser");
5const app = express();
6const hasher = new Bun.CryptoHasher("sha256", "secret-key");
7const JWT_KEY = hasher.update(Math.random().toString()).digest("hex");
8
9module.exports = { JWT_KEY };
10
11app.set("views", path.join(__dirname, "views"));
12app.set("view engine", "pug");
13
14const routes = require("./routes/index");
15app.use(express.json());
16app.use(express.urlencoded({ extended: true }));
17app.use(express.static(path.join(__dirname, "public")));
18app.use(express.static(path.join(__dirname, "assets")));
19app.use(cookieParser());
20app.use(
21 rateLimit({
22 windowMs: 15 * 60 * 1000,
23 max: 100,
24 message: "Too many requests from this IP, please try again later.",
25 standardHeaders: true,
26 legacyHeaders: false,
27 }),
28);
29app.use("/", routes);
30
31const port = process.env.LURKER_PORT;
32const server = app.listen(port ? port : 3000, "0.0.0.0", () => {
33 console.log("started on", server.address());
34});