Skip to content

Commit 9913f62

Browse files
committed
feat: configure API endpoints and CORS origins using environment variables
1 parent ea0d61c commit 9913f62

File tree

6 files changed

+19
-10
lines changed

6 files changed

+19
-10
lines changed

backend/.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
PORT=3001
2+
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
3+
NODE_ENV=development
4+
FRONTEND_URL=http://localhost:3000

backend/src/main.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,18 @@ import { AppModule } from './app.module';
44

55
async function bootstrap() {
66
const app = await NestFactory.create(AppModule);
7+
8+
const allowedOrigins = process.env.NODE_ENV === 'production'
9+
? (process.env.FRONTEND_URL || '').split(',').filter(Boolean)
10+
: ['http://localhost:3000'];
11+
712
app.enableCors({
8-
origin: 'http://localhost:3000',
13+
origin: allowedOrigins.length > 0 ? allowedOrigins : 'http://localhost:3000',
914
credentials: true,
1015
});
16+
1117
await app.listen(process.env.PORT ?? 3001);
12-
Logger.log(`Server listening on port ${process.env.PORT}`, 'NestApplication');
18+
Logger.log(`Server listening on port ${process.env.PORT ?? 3001}`, 'NestApplication');
19+
Logger.log(`CORS enabled for: ${allowedOrigins.join(', ')}`, 'NestApplication');
1320
}
1421
bootstrap();

frontend/env.example.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
NEXT_PUBLIC_API_URL=http://localhost:3001
2+
NEXT_PUBLIC_WS_URL=http://localhost:3001

frontend/src/context/WalletContext.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"use client";
22

3-
import { BASE_URL } from "@/config/api";
43
import { useAuth, useUser } from "@/context/AuthUserProvider";
54
import { fetchClient } from "@/lib/api/fetchClient";
65
import React, { createContext, useCallback, useContext, useEffect, useState } from "react";
@@ -90,8 +89,8 @@ export function WalletProvider({ children }: { children: React.ReactNode }) {
9089
console.log("WalletProvider: initializing for user", user.email);
9190

9291
refreshPortfolio();
93-
console.log("Connecting to WebSocket:", BASE_URL);
94-
const newSocket = io(BASE_URL);
92+
console.log("Connecting to WebSocket:", process.env.NEXT_PUBLIC_BASE_URL);
93+
const newSocket = io(process.env.NEXT_PUBLIC_BASE_URLBASE_URL);
9594

9695
newSocket.on("connect", () => {
9796
console.log("WebSocket connected:", newSocket.id);

frontend/src/lib/api/fetch.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { BASE_URL } from "@/config/api";
21
import { refreshAccessTokenAPI } from "./auth";
32

43
let isRefreshing = false;
@@ -25,7 +24,7 @@ export async function fetchWithAuth(
2524
clearAccessToken: () => void, // 토큰 제거 함수를 인자로 받음
2625
init?: RequestInit
2726
) {
28-
const url = `${BASE_URL}${input}`;
27+
const url = `${process.env.NEXT_PUBLIC_BASE_URL}${input}`;
2928

3029
const requestHeaders = new Headers(init?.headers);
3130
if (accessToken) {

frontend/src/lib/api/fetchClient.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import { BASE_URL } from "@/config/api";
21

32
export async function fetchClient(input: string, init: RequestInit = {}) {
4-
const url = `${BASE_URL}${input}`;
3+
const url = `${process.env.NEXT_PUBLIC_BASE_URL}${input}`;
54

6-
// Check if we're in browser environment before accessing localStorage
75
const token = typeof window !== 'undefined' ? localStorage.getItem("accessToken") : null;
86
console.log("token", token);
97

0 commit comments

Comments
 (0)