Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

itwillbeoptimal/simple-face-auth-simulator

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

Contributors

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /