initial commit
This commit is contained in:
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# 1단계: 빌드 (Node.js)
|
||||||
|
FROM node:20-alpine AS build
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN rm -f package-lock.json && npm install
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# 2단계: 실행 (Nginx)
|
||||||
|
# 2단계: 실행 (Node.js)
|
||||||
|
FROM node:20-alpine
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 프로덕션 의존성만 설치
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install --omit=dev
|
||||||
|
|
||||||
|
# 서버 파일 및 빌드 결과물 복사
|
||||||
|
COPY server.js ./
|
||||||
|
COPY --from=build /app/dist ./dist
|
||||||
|
|
||||||
|
# 환경변수 포트 노출
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
# 서버 실행
|
||||||
|
CMD ["node", "server.js"]
|
||||||
38
index.css
Normal file
38
index.css
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', sans-serif;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #f8fafc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
background: #ebe7e3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-marker {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-scrollbar::-webkit-scrollbar {
|
||||||
|
width: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-scrollbar::-webkit-scrollbar-track {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-scrollbar::-webkit-scrollbar-thumb {
|
||||||
|
background: #e2e8f0;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: #cbd5e1;
|
||||||
|
}
|
||||||
49
index.html
49
index.html
@@ -7,55 +7,6 @@
|
|||||||
<title>WiFi Share Pro</title>
|
<title>WiFi Share Pro</title>
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/>
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/>
|
||||||
<style>
|
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
|
|
||||||
body {
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: #f8fafc;
|
|
||||||
}
|
|
||||||
.leaflet-container {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 1;
|
|
||||||
background: #ebe7e3;
|
|
||||||
}
|
|
||||||
.custom-marker {
|
|
||||||
background: none;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.custom-scrollbar::-webkit-scrollbar {
|
|
||||||
width: 6px;
|
|
||||||
}
|
|
||||||
.custom-scrollbar::-webkit-scrollbar-track {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
.custom-scrollbar::-webkit-scrollbar-thumb {
|
|
||||||
background: #e2e8f0;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: #cbd5e1;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="importmap">
|
|
||||||
{
|
|
||||||
"imports": {
|
|
||||||
"react": "https://esm.sh/react@19.0.0",
|
|
||||||
"react-dom": "https://esm.sh/react-dom@19.0.0",
|
|
||||||
"react-dom/client": "https://esm.sh/react-dom@19.0.0/client",
|
|
||||||
"lucide-react": "https://esm.sh/lucide-react@0.460.0?external=react",
|
|
||||||
"leaflet": "https://esm.sh/leaflet@1.9.4",
|
|
||||||
"react-leaflet": "https://esm.sh/react-leaflet@5.0.0?external=react,react-dom,leaflet",
|
|
||||||
"qrcode.react": "https://esm.sh/qrcode.react@3.1.0?external=react",
|
|
||||||
"@google/genai": "https://esm.sh/@google/genai@1.40.0",
|
|
||||||
"react-dom/": "https://esm.sh/react-dom@^19.2.4/",
|
|
||||||
"react/": "https://esm.sh/react@^19.2.4/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<link rel="stylesheet" href="/index.css">
|
<link rel="stylesheet" href="/index.css">
|
||||||
</head>
|
</head>
|
||||||
<body class="bg-slate-50 text-slate-900">
|
<body class="bg-slate-50 text-slate-900">
|
||||||
|
|||||||
2770
package-lock.json
generated
Normal file
2770
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -14,7 +14,7 @@
|
|||||||
"lucide-react": "0.460.0",
|
"lucide-react": "0.460.0",
|
||||||
"leaflet": "1.9.4",
|
"leaflet": "1.9.4",
|
||||||
"react-leaflet": "5.0.0",
|
"react-leaflet": "5.0.0",
|
||||||
"qrcode.react": "3.1.0",
|
"qrcode.react": "^4.2.0",
|
||||||
"@google/genai": "1.40.0"
|
"@google/genai": "1.40.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
Reference in New Issue
Block a user