Skip to content

๐Ÿ–ฅ๏ธ ๊ฐ„๋‹จํ•œ ์–ผ๊ตด ์ธ์ฆ ์„œ๋น„์Šค ์‹œ๋ฎฌ๋ ˆ์ด์…˜

Notifications You must be signed in to change notification settings

itwillbeoptimal/simple-face-auth-simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

199 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ–ฅ๏ธ ๊ฐ„๋‹จํ•œ ์–ผ๊ตด ์ธ์ฆ ์„œ๋น„์Šค ์‹œ๋ฎฌ๋ ˆ์ด์…˜

๐Ÿ“– ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ




์ด ํ”„๋กœ์ ํŠธ๋Š” ์˜คํ”„๋ผ์ธ ํ–‰์‚ฌ์žฅ์—์„œ ํƒœ๋ธ”๋ฆฟ PC๋ฅผ ํ†ตํ•ด ๋ฐฉ๋ฌธ๊ฐ์ด ์–ผ๊ตด ์ธ์‹์œผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋กœ๊ทธ์ธํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ์„ ํ†ตํ•ด ๋ฏธ๋ฆฌ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  ์–ผ๊ตด์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์›น ํ‚ค์˜ค์Šคํฌ์—์„œ ์–ผ๊ตด ์ธ์‹์„ ํ†ตํ•ด ๊ฐ„ํŽธํ•˜๊ฒŒ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ›  ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๐Ÿ“ <project-root>
โ”œโ”€โ”€ core-server/         # Express ๋ฐฑ์—”๋“œ (API, DB ๊ด€๋ฆฌ)
โ”‚   โ”œโ”€โ”€ prisma/          # DB ์Šคํ‚ค๋งˆ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
โ”‚   โ””โ”€โ”€ src/             # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”œโ”€โ”€ ai-server/           # FastAPI AI ์„œ๋ฒ„ (์–ผ๊ตด ์ธ์‹ ๋ชจ๋ธ)
โ”œโ”€โ”€ web-client/          # React ์›น ํด๋ผ์ด์–ธํŠธ (ํ‚ค์˜ค์Šคํฌ UI)
โ””โ”€โ”€ app-client/          # React Native ์•ฑ (์‚ฌ์šฉ์ž ๋“ฑ๋ก)
์„œ๋น„์Šค ์—ญํ•  ๊ธฐ์ˆ  ์Šคํƒ
core-server ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ๋ฐ ์ธ์ฆ ๊ด€๋ฆฌ (Backend) Express PostgreSQL
ai-server ์–ผ๊ตด ์ธ์‹ ๋ฐ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ ์ถ”์ถœ (AI) FastAPI
web-client ์–ผ๊ตด ์ธ์ฆ ๋กœ๊ทธ์ธ ํ‚ค์˜ค์Šคํฌ (Web) React
app-client ์‚ฌ์šฉ์ž ๋“ฑ๋ก ๋ฐ ์–ผ๊ตด ๋“ฑ๋ก (Mobile) React Native

๐Ÿ ์‹œ์ž‘ ๊ฐ€์ด๋“œ

๐Ÿ“‹ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

๊ฐ ์†Œํ”„ํŠธ์›จ์–ด๋Š” LTS ๋ฒ„์ „ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • Node.js
  • Python
  • PostgreSQL
  • Yarn

1. ๋ฃจํŠธ ์˜์กด์„ฑ ์„ค์น˜

ํ”„๋กœ์ ํŠธ ์ตœ์ƒ์œ„ ๊ฒฝ๋กœ์—์„œ ๊ณตํ†ต ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

yarn install

2. ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ ์„ค์ • (์ค‘์š” โš ๏ธ)

์ด ํ”„๋กœ์ ํŠธ๋Š” ์–ผ๊ตด ์ธ์‹ ๋ฐ ์นด๋ฉ”๋ผ ์ ‘๊ทผ์„ ์œ„ํ•ด HTTPS(SSL) ํ™˜๊ฒฝ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์ฒด ์„œ๋ช… ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ localhost๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ๋กœ์ปฌ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์˜ ๋กœ์ปฌ IP ํ™•์ธํ•˜๊ธฐ:

# macOS
ifconfig | grep "inet " | grep -v 127.0.0.1

# Windows (PowerShell)
ipconfig | findstr IPv4

3. SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰

๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ HTTPS ํ†ต์‹ ์„ ์œ„ํ•ด mkcert๋กœ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

1) mkcert ์„ค์น˜ ๋ฐ ์ธ์ฆ์„œ ์ƒ์„ฑ

macOS

mkdir cert && cd cert

# mkcert ์„ค์น˜
brew install mkcert
brew install nss # Firefox ์‚ฌ์šฉ์ž์šฉ

# ์ธ์ฆ์„œ ์ƒ์„ฑ (192.168.0.10์„ ๋ณธ์ธ์˜ ์‹ค์ œ IP๋กœ ๋ณ€๊ฒฝ ํ•„์ˆ˜)
mkcert -install
mkcert localhost 127.0.0.1 ::1 192.168.0.10

# ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ
mv localhost+3.pem localhost.pem
mv localhost+3-key.pem localhost-key.pem
cd ..

Windows (PowerShell)

mkdir cert; cd cert

# mkcert ์„ค์น˜ (Chocolatey ์‚ฌ์šฉ ์‹œ)
choco install mkcert
# ๋˜๋Š” Scoop ์‚ฌ์šฉ ์‹œ: scoop install mkcert

# ์ธ์ฆ์„œ ์ƒ์„ฑ (192.168.0.10์„ ๋ณธ์ธ์˜ ์‹ค์ œ IP๋กœ ๋ณ€๊ฒฝ ํ•„์ˆ˜)
mkcert -install
mkcert localhost 127.0.0.1 ::1 192.168.0.10

# ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ
Move-Item localhost+3.pem localhost.pem
Move-Item localhost+3-key.pem localhost-key.pem
cd ..

2) ๊ธฐ๊ธฐ์— ๋ฃจํŠธ CA ์ธ์ฆ์„œ ์„ค์น˜ (ํ•„์ˆ˜)

๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ์‹ ๋ขฐํ•˜๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. CA ์„œ๋ฒ„ ์‹คํ–‰: ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํŒŒ์ผ ์„œ๋ฒ„๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
    # macOS
    cd "$(mkcert -CAROOT)" && python3 -m http.server 8080
    
    # Windows
    cd (mkcert -CAROOT); python -m http.server 8080
  2. ๊ธฐ๊ธฐ์—์„œ ์ธ์ฆ์„œ ๋‹ค์šด๋กœ๋“œ: ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ http://<๋กœ์ปฌ IP ์ฃผ์†Œ>:8080/rootCA.pem์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.

iOS ์„ค์ •

  • ๋‹ค์šด๋กœ๋“œ ํ”„๋กฌํ”„ํŠธ์—์„œ "ํ—ˆ์šฉ" ์„ ํƒ
  • ์„ค์ • > ์ผ๋ฐ˜ > VPN ๋ฐ ๊ธฐ๊ธฐ ๊ด€๋ฆฌ์—์„œ ๋‹ค์šด๋กœ๋“œ๋œ ํ”„๋กœํŒŒ์ผ ์„ค์น˜
  • ์„ค์ • > ์ผ๋ฐ˜ > ์ •๋ณด > ์ธ์ฆ์„œ ์‹ ๋ขฐ ์„ค์ •์—์„œ mkcert ๋ฃจํŠธ CA ํ™œ์„ฑํ™”

Android ์„ค์ •

  • ์„ค์ • > ๋ณด์•ˆ > ์•”ํ˜ธํ™” ๋ฐ ์ž๊ฒฉ ์ฆ๋ช… > ์ธ์ฆ์„œ ์„ค์น˜ > CA ์ธ์ฆ์„œ
  • ๋‹ค์šด๋กœ๋“œํ•œ rootCA.pem ํŒŒ์ผ ์„ ํƒํ•˜์—ฌ ์„ค์น˜

โœ… ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด ์‹คํ–‰ํ–ˆ๋˜ Python ํŒŒ์ผ ์„œ๋ฒ„๋Š” ์ข…๋ฃŒํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ

# macOS
createdb face_recognition_db

# Windows
psql -U postgres -c "CREATE DATABASE face_recognition_db;"

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

๊ฐ ๋””๋ ‰ํ† ๋ฆฌ์— .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ ์•„๋ž˜ ์˜ˆ์‹œ์˜ 192.168.0.10 ๋ถ€๋ถ„์„ ๋ฐ˜๋“œ์‹œ ๋ณธ์ธ์˜ ์‹ค์ œ ๋กœ์ปฌ IP๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“„ ๋ฃจํŠธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (.env)

HOST_IP=192.168.0.10
CORE_SERVER_PORT=3000
AI_SERVER_PORT=8000
WEB_CLIENT_PORT=5173

๐Ÿ“„ ๋ฐฑ์—”๋“œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (core-server/.env)

DATABASE_URL="postgresql://USER:PASSWORD@localhost:5432/face_recognition_db?schema=public"
JWT_SECRET="your-secret-key"
JWT_EXPIRES_IN=604800

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ์šฉ

cd core-server
yarn prisma:generate
yarn prisma:migrate

5. AI ์„œ๋ฒ„ ์„ค์ •

Python ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

macOS

cd ai-server
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Windows

cd ai-server
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt

๐Ÿš€ ์„œ๋ฒ„ ์‹คํ–‰

๊ฐ๊ฐ์˜ ํ„ฐ๋ฏธ๋„ ํƒญ์„ ์—ด์–ด ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ Core Server

cd core-server
yarn dev

2๏ธโƒฃ AI Server

cd ai-server
# ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™” ํ›„ (macOS: source venv/bin/activate, Win: .\venv\Scripts\Activate.ps1)
python -m app.main

3๏ธโƒฃ Web Client

cd web-client
yarn dev --host

4๏ธโƒฃ App Client (Mobile)

๐Ÿ’ก React Native ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์‚ฌ์ „์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์‚ฌํ•ญ์€ React Native ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

App Client๋Š” Metro Bundler๋ฅผ ๋ณ„๋„ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# ํ„ฐ๋ฏธ๋„ 1 โ€” Metro Bundler
cd app-client
yarn start
# ํ„ฐ๋ฏธ๋„ 2 โ€” iOS ๋˜๋Š” Android ์‹คํ–‰
# iOS (macOS Only)
yarn ios

# Android
yarn android

๐Ÿ–ฅ๏ธ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

1) ๋ชจ๋ฐ”์ผ ์•ฑ

  1. ํšŒ์›๊ฐ€์ž…: app-client๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ณ„์ •์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ผ๊ตด ๋“ฑ๋ก: ๋กœ๊ทธ์ธ ์‹œ ์‚ฌ์šฉํ•  ์–ผ๊ตด ์‚ฌ์ง„์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

2) ์›น ํด๋ผ์ด์–ธํŠธ

  1. ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ https://<๋กœ์ปฌ IP ์ฃผ์†Œ>:5173์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ผ๊ตด ์ธ์ฆ ๋กœ๊ทธ์ธ: ์นด๋ฉ”๋ผ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•˜๊ณ  ์–ผ๊ตด ์ธ์ฆ์„ ํ†ตํ•ด ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ

๐Ÿ”’ SSL/์ธ์ฆ์„œ ์˜ค๋ฅ˜

  • ์ธ์ฆ์„œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋„๋ฉ”์ธ/IP(SAN) ์œผ๋กœ ๋ฐœ๊ธ‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.
  • ์ ‘์† ์ฃผ์†Œ๊ฐ€ ์ธ์ฆ์„œ์— ์ •ํ™•ํžˆ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ ๊ฒ€ํ•ด ์ฃผ์„ธ์š”.
  • ๋ฃจํŠธ CA ์ธ์ฆ์„œ๊ฐ€ ๊ธฐ๊ธฐ์— ์„ค์น˜๋˜๊ณ  '์‹ ๋ขฐ' ์„ค์ •์ด ์ผœ์ ธ ์žˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.

๐Ÿ“ก ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์‹คํŒจ

  • ๋ชจ๋“  ๊ธฐ๊ธฐ๊ฐ€ ๋™์ผํ•œ Wi-Fi์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.
  • ํฌํŠธ 3000, 5173, 8000์ด ๋ฐฉํ™”๋ฒฝ์—์„œ ํ—ˆ์šฉ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.
  • IP ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ, ์ธ์ฆ์„œ์™€ .env์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด ์ฃผ์„ธ์š”.

๐Ÿ“ฑ React Native ๋นŒ๋“œ ์˜ค๋ฅ˜

  • Metro ์บ์‹œ ์ดˆ๊ธฐํ™”

    yarn start --reset-cache
  • ๋ชจ๋“ˆ ์žฌ์„ค์น˜

    rm -rf node_modules
    yarn install
  • (iOS) Pod ์žฌ์„ค์น˜

    cd ios && pod install

About

๐Ÿ–ฅ๏ธ ๊ฐ„๋‹จํ•œ ์–ผ๊ตด ์ธ์ฆ ์„œ๋น„์Šค ์‹œ๋ฎฌ๋ ˆ์ด์…˜

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published