Skip to content

Commit 36742cb

Browse files
VINXISThePooN
andauthored
Production Deploy Initial Setup (#17)
* ♻️ Config refactor Pending README update * 💩 Initial Docker stuff * ✨ Add typeorm CLI support * 🗃 Add initial migration * 🚨 Fix TS error following config refactor * 🔨 fetchYearMaps: Use DB config from ormconfig.ts * 🔧 Add config/deployment/production.json * 📝 Update README.md Co-authored-by: Hugo "ThePooN" Denizart <[email protected]>
1 parent 0cf19ca commit 36742cb

33 files changed

+796
-277
lines changed

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.git
2+
node_modules

AYIM/config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../config

AYIM/nuxt.config.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import { Config } from "../config";
1+
import { config } from "node-config-ts";
22
import nuxtConfig from "../MCA-AYIM/nuxt.base.config";
33

4-
const config = new Config;
5-
64
export default {
75
...nuxtConfig,
86
...{

Dockerfile

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
FROM node:14-alpine
2+
3+
WORKDIR /src
4+
5+
COPY LICENSE package.json package-lock.json README.md tsconfig.json ormconfig.ts /src/
6+
7+
RUN npm ci
8+
9+
COPY Assets/ /src/Assets/
10+
COPY AYIM/ /src/AYIM/
11+
COPY Closed/ /src/Closed/
12+
COPY DiscordBot/ /src/DiscordBot/
13+
COPY Interfaces/ /src/Interfaces/
14+
COPY Main/ /src/Main/
15+
COPY MCA/ /src/MCA/
16+
COPY MCA-AYIM/ /src/MCA-AYIM/
17+
COPY Models/ /src/Models/
18+
COPY Open/ /src/Open/
19+
COPY Server/ /src/Server/
20+
COPY Typing/ /src/Typing/
21+
COPY config/ /src/config/
22+
23+
RUN npm run build:ayim
24+
RUN npm run build:mca
25+
RUN npm run build:main
26+
27+
ENV NODE_ENV=production
28+
RUN npm prune --production
29+
30+
ENTRYPOINT ["npm", "run"]

MCA-AYIM/api/routes/login.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import Router from "@koa/router";
2-
import { Config } from "../../../config";
2+
import { config } from "node-config-ts";
33

44
const loginRouter = new Router();
5-
const config = new Config;
65

76
loginRouter.get("/discord", async (ctx) => {
8-
const baseURL = config[ctx.query.site] ? config[ctx.query.site].publicURL : config.corsace.publicURL;
9-
ctx.redirect(config.corsace.publicURL + "/api/login/discord?redirect=" + baseURL + ctx.query.redirect);
7+
const baseURL = config[ctx.query.site] ? config[ctx.query.site].publicUrl : config.corsace.publicUrl;
8+
ctx.redirect(config.corsace.publicUrl + "/api/login/discord?redirect=" + baseURL + ctx.query.redirect);
109
});
1110

1211
loginRouter.get("/osu", async (ctx) => {
13-
const baseURL = config[ctx.query.site] ? config[ctx.query.site].publicURL : config.corsace.publicURL;
14-
ctx.redirect(config.corsace.publicURL + "/api/login/osu?redirect=" + baseURL + ctx.query.redirect);
12+
const baseURL = config[ctx.query.site] ? config[ctx.query.site].publicUrl : config.corsace.publicUrl;
13+
ctx.redirect(config.corsace.publicUrl + "/api/login/osu?redirect=" + baseURL + ctx.query.redirect);
1514
});
1615

1716
export default loginRouter;

MCA-AYIM/nuxt.base.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ fs.readdirSync("../Assets/lang").forEach(file => {
1212
});
1313

1414
export default {
15+
ssr: false,
1516
watch: ["~/api"],
1617
serverMiddleware: ["~/api"],
1718
buildModules: ["@nuxt/typescript-build"],

MCA/api/routes/guestRequests.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ import { Beatmap } from "../../../Models/beatmap";
33
import { User } from "../../../Models/user";
44
import { isLoggedIn } from "../../../Server/middleware";
55
import { isEligibleFor, currentMCA } from "../middleware";
6-
import { Config } from "../../../config";
6+
import { config } from "node-config-ts";
77
import axios from "axios";
88
import { GuestRequest } from "../../../Models/MCA_AYIM/guestRequest";
99
import { ModeDivision, ModeDivisionType } from "../../../Models/MCA_AYIM/modeDivision";
1010
import { RequestStatus } from "../../../Interfaces/guestRequests";
1111
import { MCA } from "../../../Models/MCA_AYIM/mca";
1212

1313
const guestRequestRouter = new Router();
14-
const config = new Config();
1514

1615
interface BodyData {
1716
mode: string;
@@ -55,7 +54,7 @@ async function validateBody (user: User, year: number, data: BodyData, currentRe
5554
}
5655

5756
// Get beatmap information
58-
const beatmaps = (await axios.get(`https://osu.ppy.sh/api/get_beatmaps?k=${config.osu.v1}&b=${beatmapID}`)).data;
57+
const beatmaps = (await axios.get(`https://osu.ppy.sh/api/get_beatmaps?k=${config.osu.v1.apiKey}&b=${beatmapID}`)).data;
5958
if (beatmaps.length !== 1) {
6059
return { error: "Error in obtaining beatmap info!"};
6160
}

MCA/api/routes/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ import { MCA } from "../../../Models/MCA_AYIM/mca";
33
import { Category } from "../../../Models/MCA_AYIM/category";
44
import { Beatmapset } from "../../../Models/beatmapset";
55
import { discordGuild } from "../../../Server/discord";
6-
import { Config } from "../../../config";
6+
import { config } from "node-config-ts";
77
import { ModeDivision } from "../../../Models/MCA_AYIM/modeDivision";
88

99
const indexRouter = new Router();
10-
const config = new Config;
1110
const modeStaff = config.discord.roles.mca;
1211

1312
indexRouter.get("/front", async (ctx) => {

MCA/config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../config

MCA/nuxt.config.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import { Config } from "../config";
1+
import { config } from "node-config-ts";
22
import nuxtConfig from "../MCA-AYIM/nuxt.base.config";
33

4-
const config = new Config;
5-
64
export default {
75
...nuxtConfig,
86
...{

Main/api/routes/login/discord.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import Router from "@koa/router";
22
import passport from "koa-passport";
33
import { discordGuild } from "../../../../Server/discord";
4-
import { Config } from "../../../../config";
4+
import { config } from "node-config-ts";
55
import { ParameterizedContext } from "koa";
66

77
// If you are looking for discord passport info then go to Server > passportFunctions.ts
88

99
const discordRouter = new Router();
10-
const config = new Config();
1110

1211
discordRouter.get("/", async (ctx: ParameterizedContext<any>, next) => {
1312
ctx.cookies.set("redirect", ctx.query.redirect ?? "back", { overwrite: true });

Main/api/routes/login/osu.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ import passport from "koa-passport";
33
import Axios from "axios";
44
import { ParameterizedContext } from "koa";
55
import { MCAEligibility } from "../../../../Models/MCA_AYIM/mcaEligibility";
6-
import { Config } from "../../../../config";
6+
import { config } from "node-config-ts";
77
import { UsernameChange } from "../../../../Models/usernameChange";
88

99
// If you are looking for osu! passport info then go to Server > passportFunctions.ts
1010

1111
const osuRouter = new Router();
12-
const config = new Config();
1312
const modes = [
1413
"standard",
1514
"taiko",
@@ -60,7 +59,7 @@ osuRouter.get("/callback", async (ctx: ParameterizedContext<any>, next) => {
6059
}, async ctx => {
6160
try {
6261
// MCA data
63-
const beatmaps = (await Axios.get(`https://osu.ppy.sh/api/get_beatmaps?k=${config.osu.v1}&u=${ctx.state.user.osu.userID}`)).data;
62+
const beatmaps = (await Axios.get(`https://osu.ppy.sh/api/get_beatmaps?k=${config.osu.v1.apiKey}&u=${ctx.state.user.osu.userID}`)).data;
6463
if (beatmaps.length != 0) {
6564
for (const beatmap of beatmaps) {
6665
if (!beatmap.version.includes("'") && (beatmap.approved == 2 || beatmap.approved == 1)) {

Main/config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../config

Main/nuxt.config.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Config } from "../config";
1+
import { config } from "node-config-ts";
22
import * as fs from "fs";
33

44
const locales: any[] = [];
@@ -11,10 +11,8 @@ fs.readdirSync("../Assets/lang").forEach(file => {
1111
});
1212
});
1313

14-
15-
const config = new Config;
16-
1714
export default {
15+
ssr: false,
1816
server: {
1917
host: config.corsace.host,
2018
port: config.corsace.port,

0 commit comments

Comments
 (0)