-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.ts
54 lines (43 loc) · 1.2 KB
/
server.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import dotenv from 'dotenv';
import fastifyServer from 'fastify';
import cors from '@fastify/cors';
import RateLimit from '@fastify/rate-limit';
import fastifyStatic from '@fastify/static';
import fastifyBody from '@fastify/formbody'
import {dbInit} from './database/mongoose';
import post from './endpoints/post';
import get from './endpoints/get';
dotenv.config();
const fastify = fastifyServer();
const port = process.env.PORT ? Number(process.env.PORT) : 3000;
// Setup mongoose
fastify.register(dbInit);
// Enable CORS Requests
fastify.register(cors);
// Apply rate limiter to all requests
fastify.register(RateLimit, {
max: 10,
timeWindow: '1 minute'
});
// Parse POST values
fastify.register(fastifyBody);
// Setup serving public files
fastify.register(fastifyStatic, {
prefix: '/public',
root: `${process.cwd()}/public`
});
// Setup home page
fastify.get("/", (_, res) => {
res.sendFile('index.html',`${process.cwd()}/views`);
});
// Post API endpoint
fastify.register(post);
// GET API endpoint
fastify.register(get);
fastify.listen({port: port}, (err, address) => {
if (err) {
console.error(err);
process.exit(1);
}
console.log(`Your fastify is listening on port ${address}`);
});