aboutsummaryrefslogtreecommitdiffstats
path: root/backend/src/index.ts
blob: c0089c2b49e5f434aea03a2e2ff414d962733958 (plain) (blame)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import express from 'express';
import cors from 'cors';
import session from 'express-session';
import cookieParser from 'cookie-parser';
import { requireAuth } from './middleware/requireAuth';
import { startSessionCleanup } from './utils/session';

// Routes
import * as authRoutes from './routes/auth';
import * as userRoutes from './routes/user';
import * as gameRoutes from './routes/game';
import * as scoreRoutes from './routes/score';
import * as adminRoutes from './routes/admin';

const app = express();
const port = 5000;

app.use(cors({
  origin: [
    process.env.FRONTEND_URL || "http://localhost:5173"
  ],
  credentials: true
}));

app.use(express.json());
app.use(cookieParser());


app.use(session({
  secret: process.env.SESSION_SECRET || 'your-secret-key-change-this-in-production',
  resave: false,
  saveUninitialized: false,
  cookie: {
    secure: false,
    httpOnly: true,
    maxAge: 24 * 60 * 60 * 1000 // 24 hours
  }
}));

declare module 'express-session' {
  interface SessionData {
    userId: number;
  }
}

startSessionCleanup();

app.post('/api/register', authRoutes.handleRegistration);
app.post('/api/authenticate', authRoutes.handleAuthentication);
app.post('/api/logout', requireAuth, authRoutes.handleLogout);

app.get('/api/me', userRoutes.handleMeRoute);
app.get('/api/session', userRoutes.handleGetCurrentSession);
app.get('/api/heatmap', requireAuth, userRoutes.handleGetScoresHeatmap);


app.get('/api/supportedGames', gameRoutes.handleGetSupportedGames);

app.post('/api/uploadScore', requireAuth, scoreRoutes.handleScoreUpload);
app.get('/api/scores', requireAuth, scoreRoutes.handleGetScores);
app.delete('/api/scores', requireAuth, scoreRoutes.handleScoreDeletion);
app.get('/api/scores/:chartId', requireAuth, scoreRoutes.handleGetScoresByChartId);
app.get('/api/allScores', requireAuth, scoreRoutes.handleGetAllGameScores);

app.post('/api/admin/createGame', requireAuth, adminRoutes.handleCreateGame);

app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage