๐ Node.js + Express ๊ธฐ๋ฐ ๋ฐ์ดํ ์ฑ ๋ฐฑ์๋
Tinder ์คํ์ผ์ ๋งค์นญยท์ฑํ ยท์์น ๊ธฐ๋ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ฐฑ์๋ ์๋ฒ์ ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ
- ์ฌ์ฉ์ ์ธ์ฆ (ํ์๊ฐ์ ยท๋ก๊ทธ์ธยท์ด๋ฉ์ผ ์ธ์ฆยทํ ํฐ ๊ฐฑ์ ยท๋ก๊ทธ์์)
- ํ๋กํ ๊ด๋ฆฌ
- ๋งค์นญ ๋งค์ปค๋์ฆ - ๋ฏธ๊ตฌํ
- ์ค์๊ฐ ์ฑํ (Socket.io) - ๋ฏธ๊ตฌํ
- ์์น ๊ธฐ๋ฐ ์ฌ์ฉ์ ํ์ - ๋ฏธ๊ตฌํ
- ๋ฐํ์: Node.js
- ์น ํ๋ ์์ํฌ: Express
- DB: MongoDB (Mongoose)
- ์ธ์ฆ: JWT (JSON Web Token)
- ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ: dotenv
- ์์ค ์ฝ๋ ํด๋ก
git clone https://github.com/itcksgud/tinder_back.git
cd tinder_back- ํ๊ฒฝ ๋ณ์ ์ค์
ํ๋ก์ ํธ ๋ฃจํธ์
.envํ์ผ์ ์์ฑํ๊ณ ์๋ ์์์ฒ๋ผ ๊ฐ์ ์ฑ์์ฃผ์ธ์.
PORT=7078
MONGODB_URI=mongodb://<user>:<pass>@<host>:27017/tinder?authSource=admin
JWT_SECRET=your_jwt_secret
EMAIL_SERVICE_API_KEY=your_email_service_key # (์ด๋ฉ์ผ ์ธ์ฆ์ฉ)- ์์กด์ฑ ์ค์น
npm install- ๊ฐ๋ฐ ์๋ฒ ์คํ
npm run dev- ํ๋ก๋์ ๋น๋ & ์คํ
npm run build
npm start// server.js
require('dotenv').config();
const express = require('express');
const mongoose = require('mongoose');
const authRouter = require('./auth/auth.routes');
const app = express();
// ๋ฏธ๋ค์จ์ด
app.use(express.json());
// ๋ชฝ๊ณ DB ์ฐ๊ฒฐ
mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// ๋ผ์ฐํธ ๋ฑ๋ก
app.use('/api/auth', authRouter);
// ๊ทธ ์ธ ๋ผ์ฐํฐ (users, matches, chats ๋ฑ)
// app.use('/api/users', usersRouter);
// ...
// ์๋ฒ ์์
const PORT = process.env.PORT || 7078;
app.listen(PORT, () => {
console.log(`๐ Server running on http://localhost:${PORT}`);
});| Method | Endpoint | ์ค๋ช | Auth |
|---|---|---|---|
| POST | /api/auth/signup |
ํ์๊ฐ์ | ๐ซ |
| POST | /api/auth/verify-code |
์ด๋ฉ์ผ ์ธ์ฆ ์ฝ๋ ํ์ธ | ๐ซ |
| POST | /api/auth/resend-verification |
์ธ์ฆ ์ฝ๋ ์ฌ์ ์ก (๋ก๊ทธ์ธ ํ์) | โ |
| POST | /api/auth/login |
๋ก๊ทธ์ธ (์ก์ธ์ค ํ ํฐยท๋ฆฌํ๋ ์ ํ ํฐ ๋ฐ๊ธ) | ๐ซ |
| POST | /api/auth/refresh-token |
๋ฆฌํ๋ ์ ํ ํฐ์ผ๋ก ์ก์ธ์ค ํ ํฐ ์ฌ๋ฐ๊ธ | ๐ซ |
| POST | /api/auth/logout |
๋ก๊ทธ์์ (๋ฆฌํ๋ ์ ํ ํฐ ๋ฌดํจํ) | ๐ซ |
| GET | /api/auth/me |
๋ด ์ ๋ณด ์กฐํ | โ |
Auth: ๐ซ = ๊ณต๊ฐ, โ = ์ก์ธ์ค ํ ํฐ(required)