An open API service indexing awesome lists of open source software.

https://github.com/stageus/dmap-backend-2


https://github.com/stageus/dmap-backend-2

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

          

# ๐Ÿ—บ๏ธ D-Map Backend

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

**D-Map ํ”„๋กœ์ ํŠธ**๋Š” ์‚ฌ์šฉ์ž ์œ„์น˜ ๊ธฐ๋ฐ˜์˜ **Playground ์„œ๋น„์Šค**๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ ์ง€๋„ ์œ„์— ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์ด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

**์ฃผ์š” ๋ชฉํ‘œ:**

- ์ง€๋„ ๊ธฐ๋ฐ˜ ํŠธ๋ž˜ํ‚น์„ ํ™œ์šฉํ•œ ์ฐฝ์˜์ ์ธ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ
- ๊ณต์œ  ๋ฐ ์ข‹์•„์š” ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์‚ฌ์šฉ์ž ๊ฐ„ ์ธํ„ฐ๋ž™์…˜
- ์ธ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ

---
## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ ์†Œ๊ฐœ

1. **ํŠธ๋ž˜ํ‚น ๊ธฐ๋Šฅ:**
- ์‚ฌ์šฉ์ž์˜ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ ์ด๋ฏธ์ง€์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜์—ฌ ์ฐฝ์˜์ ์ธ ์ฝ˜ํ…์ธ  ์ œ์ž‘ ๊ฐ€๋Šฅ.
- ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•˜์—ฌ ํ”ผ๋“œ์ฒ˜๋Ÿผ ๋…ธ์ถœ ๊ฐ€๋Šฅ.

2. **SNS ํŽ˜์ด์ง€:**
- ์‚ฌ์šฉ์ž๊ฐ€ ๊ณต์œ ํ•œ ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€๋ฅผ ์กฐํšŒํ•˜๊ณ  ์ข‹์•„์š”๋ฅผ ํ†ตํ•ด ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋Š” SNSํ˜• ํ”ผ๋“œ ์ œ๊ณต.
- ์ธ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜ํ•˜์—ฌ ๋…ธ์ถœ.

3. **๊ทธ๋ฆผ ๊พธ๋ฏธ๊ธฐ ๊ธฐ๋Šฅ:**
- ์‚ฌ์šฉ์ž๊ฐ€ ํŠธ๋ž˜ํ‚นํ•œ ๊ฒฝ๋กœ๋ฅผ ์ƒ‰์ƒ, ๊ตต๊ธฐ ๋“ฑ์˜ ์˜ต์…˜์œผ๋กœ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ์Œ.

---
## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

- **๋ฐฑ์—”๋“œ:** Express.js (Node.js ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ)
- **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:** PostgreSQL + PostGIS (๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ง€์›)
- **๋ฐฐํฌ ํ™˜๊ฒฝ:** PM2
- **์ธ์ฆ ๋ฐฉ์‹:** OAuth 2.0 (๋„ค์ด๋ฒ„, ์นด์นด์˜ค, ๊ตฌ๊ธ€)
- **์Šคํ† ๋ฆฌ์ง€:** AWS S3 (์ด๋ฏธ์ง€ ์ €์žฅ)

---
## ๐Ÿ— ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ
```bash
DMap-backend/
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ constant/ # ์ƒ์ˆ˜ ๋ฐ ์ •๊ทœ ํ‘œํ˜„์‹ ๊ด€๋ จ ํŒŒ์ผ
โ”‚ โ”œโ”€โ”€ database/ # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ •
โ”‚ โ”œโ”€โ”€ middleware/ # ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜
โ”‚ โ”œโ”€โ”€ module/ # ๊ณตํ†ต ๋ชจ๋“ˆ
โ”‚ โ”œโ”€โ”€ router/ # API ๋ผ์šฐํŠธ ์ •์˜
โ”‚ โ”‚ โ”œโ”€โ”€ account/ # ๊ณ„์ • ๊ด€๋ จ ๊ธฐ๋Šฅ
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ router.js # ๊ณ„์ • API ๋ผ์šฐํŠธ
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ service.js # ๊ณ„์ • ์„œ๋น„์Šค ๋กœ์ง
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ sql.js # ๊ณ„์ • SQL ์ฟผ๋ฆฌ ์ •์˜
โ”‚ โ”‚ โ”œโ”€โ”€ tracking/ # ํŠธ๋ž˜ํ‚น ๊ด€๋ จ ๊ธฐ๋Šฅ
โ”‚ โ”‚ โ”œโ”€โ”€ sns/ # SNS ๊ด€๋ จ ๊ธฐ๋Šฅ
โ”‚ โ”‚ โ””โ”€โ”€ search/ # ๊ฒ€์ƒ‰ ๊ด€๋ จ ๊ธฐ๋Šฅ
โ”‚ โ””โ”€โ”€ util/ # ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜
โ”œโ”€โ”€ .gitignore # Git ๋ฌด์‹œํ•  ํŒŒ์ผ ๋ชฉ๋ก
โ”œโ”€โ”€ package.json # ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์ •์˜
โ”œโ”€โ”€ package-lock.json # ์ข…์†์„ฑ ๋ฒ„์ „ ์ž ๊ธˆ
โ”œโ”€โ”€ README.md # ํ”„๋กœ์ ํŠธ ์„ค๋ช… ๋ฌธ์„œ
โ””โ”€โ”€ index.js # ์„œ๋ฒ„ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ
```
---

## ๐Ÿ“– API ๊ฐœ์š”

### **1. ํŠธ๋ž˜ํ‚น API**

| ๋ฉ”์„œ๋“œ | ์—”๋“œํฌ์ธํŠธ | ์„ค๋ช… |
| --- | --- | --- |
| POST | `/tracking` | ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ์ƒ์„ฑ |
| GET | `/tracking/account/:user_idx/?page=1&category=1` | ๋‚˜/๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ |
| DELETE | `/tracking` | ๋‚˜์˜ ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ์‚ญ์ œ |
| GET | `/tracking/:tracking_idx` | ํŠธ๋ž˜ํ‚น ๋ผ์ธ ๊ฐ€์ ธ์˜ค๊ธฐ |
| PUT | `/tracking/:tracking_idx` | ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ์ˆ˜์ • |
| PUT | `/tracking/toSharing` | ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ๊ณต์œ  ์ƒํƒœ ๋ณ€๊ฒฝ |
| PUT | `/tracking/toNotShaing` | ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ๋น„๊ณต์œ  ์ƒํƒœ ๋ณ€๊ฒฝ |

---

### **2. SNS API**

| ๋ฉ”์„œ๋“œ | ์—”๋“œํฌ์ธํŠธ | ์„ค๋ช… |
| --- | --- | --- |
| GET | `/sns/?category=default&page=1` | SNS ํŽ˜์ด์ง€ ๊ธฐ๋ณธ ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ |
| GET | `/sns/tracking-image/:tracking_idx` | ํŠน์ • ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ |
| POST | `/sns/like` | ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ์ข‹์•„์š” |
| DELETE | `/sns/like` | ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ์ข‹์•„์š” ์‚ญ์ œ |

---

### **3. ๊ณ„์ •(Account) API**

| ๋ฉ”์„œ๋“œ | ์—”๋“œํฌ์ธํŠธ | ์„ค๋ช… |
| --- | --- | --- |
| GET | `/account/login/naver` | ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ |
| GET | `/account/login/kakao` | ์นด์นด์˜ค ๋กœ๊ทธ์ธ |
| GET | `/account/login/google` | ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ |
| GET | `/account/accesstoken` | Access Token ์žฌ๋ฐœ๊ธ‰ |
| DELETE | `/account/user` | ํšŒ์› ํƒˆํ‡ดํ•˜๊ธฐ |
| GET | `/account/me` | ๋‚ด ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ |
| GET | `/account/info/:idx` | ํšŒ์› ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ |
| GET | `/account/nickname` | ๋‹‰๋„ค์ž„ ๋žœ๋ค ๊ฐ’ ์ œ๊ณต |
| PUT | `/account/nickname` | ๋‹‰๋„ค์ž„ ์ˆ˜์ •ํ•˜๊ธฐ |
| PUT | `/account/image` | ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ˆ˜์ •ํ•˜๊ธฐ |
| DELETE | `/account/image` | ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์‚ญ์ œํ•˜๊ธฐ |

---

### **4. ๊ฒ€์ƒ‰(Search) API**

| ๋ฉ”์„œ๋“œ | ์—”๋“œํฌ์ธํŠธ | ์„ค๋ช… |
| --- | --- | --- |
| GET | `/search/nickname/:text/:page` | ๋‹‰๋„ค์ž„ ๊ฒ€์ƒ‰ |
| GET | `/search/searchpoint/:text/:page` | ํŠธ๋ž˜ํ‚น ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ |

---

## ๐Ÿ“œ ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ

- [์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ](#)
- [์™€์ด์–ดํ”„๋ ˆ์ž„](#)
- [ํŽ˜์ด์ง€ ๋ช…์„ธ์„œ](#)
- [DB ํ…Œ์ด๋ธ” ๋ช…์„ธ์„œ](#)
- [API ๋ช…์„ธ์„œ](#)
- [ํ˜‘์—… ๋…ธ์…˜ ํŽ˜์ด์ง€](#)

(๋ฌธ์„œ ๋งํฌ๋Š” ์ถ”ํ›„ ์—…๋ฐ์ดํŠธ ์˜ˆ์ •)

---