Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ignisilva/library-management-server
도서관 관리 API 및 Graphql 서버입니다
https://github.com/ignisilva/library-management-server
apollo-graphql docker docker-compose javascript kafkajs koajs postgresql postman sequelize
Last synced: 17 days ago
JSON representation
도서관 관리 API 및 Graphql 서버입니다
- Host: GitHub
- URL: https://github.com/ignisilva/library-management-server
- Owner: ignisilva
- Created: 2022-08-08T13:05:17.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-09-13T13:36:35.000Z (over 2 years ago)
- Last Synced: 2024-10-16T19:12:22.065Z (2 months ago)
- Topics: apollo-graphql, docker, docker-compose, javascript, kafkajs, koajs, postgresql, postman, sequelize
- Language: JavaScript
- Homepage:
- Size: 156 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 도서관 관리 토이 프로젝트
인턴 과정을 진행하며 개발했던 도서관 관리 토이 프로젝트 결과물 입니다.
## About The Project
도서관 관리 관련 REST API 및 Graphql 기반의 서버를 개발했습니다.
Koa로 REST API를 구현했으며, Apollo-Server로 Graphql을 개발했습니다.
Kafka를 사용하여 비동기 요청에 대해(메일 전송) 처리했습니다.
## ERD 구성
dbdiagram.io으로 ERD를 작성했습니다.
[ERD 링크](https://dbdiagram.io/d/62677d8595e7f23c61716ec0)
# 도서관 관리 서비스 백엔드 프로젝트
|👉 목차||
|---|---|
|[1. 기술 스택](#기술-스택)| 해당 프로젝트에서 사용된 기술 스택 |
|[2. 도서관 관리 서비스 개요](##도서관-관리-서비스-개요)| 서비스에 대한 간략한 설명|
|[3. 제공 기능 상세](#제공-기능-)| 제공하는 기능에 대한 상세 내역 및 API 문서|
|[4. 구현 과정](#구현-과정)| 모델링, 고민했던 포인트|# 기술 스택
# 도서관 관리 서비스 개요
오프라인으로 운영되는 도서관의 관리 서비스 백엔드 프로젝트입니다.
해당 서비스에서 제공하는 기능은 간략하게 다음과 같습니다.
- 도서관 이용자에 대한 관리
- 도서관 내 도서 정보에 대한 관리
- 도서 대여 및 예약에 대한 관리# 제공 기능 상세
## 인증
- 로그인 (access/refresh token 발급)
- 토큰 재발급(access token 재발급)
- 로그아웃 (refresh token 삭제)## 사용자
- 회원 정보 생성 (회원 가입)
- 회원 정보 가져오기
- 회원 정보 (목록) 가져오기
- 회원 정보 수정
- 회원 정보 삭제## 도서
- 도서 정보 생성
- 도서 정보 가져오기
- 도서 정보 (목록) 가져오기
- 도서 정보 수정
- 도서 정보 삭제## 대여
- 도서 대여 정보 생성 (대여, 연장, 반납)
- 도서 대여 정보 가져오기
- 도서 대여 정보 (목록) 가져오기
- 도서 대여 정보 수정
- 도서 대여 정보 삭제## 예약
- 도서 예약 정보 생성
- 도서 예약 정보 가져오기
- 도서 예약 정보 (목록) 가져오기
- 도서 예약 정보 수정
- 도서 예약 정보 삭제## 메일 전송
- 도서 대여시, 예정 반납일 메일 안내
- 도서 연장시, 예정 반납일 메일 안내## API 명세서
Postman을 사용하여 제작한 API Docs
[👉 Swagger Docs 바로가기](https://app.swaggerhub.com/apis-docs/preonboarding/blog-api-service/1.0)
# 구현 과정
## 환경 세팅
### 모델링
> 데이터베이스는 AWS LightSail로 생성했습니다.(RDS, PostgreSQL)
![모델링](https://user-images.githubusercontent.com/63445753/188299953-62432aae-8f5d-4876-8b26-0169015c05cf.png)
### 폴더 구조
```
project/
├─ src/
│ ├─ users/
│ ├─ posts/
│ ├─ auth/
│ ├─ statistics/
│ ├─ commons/
│ ├─ database/
│ ├─ filters/
│ ├─ interceptors/
│ ├─ redis/
├─ app.controller.ts
├─ app.module.ts
├─ app.service.ts
├─ main.ts
```- users, posts, auth, statistics 폴더를 다누고, DTO 및 Entity를 작성하여 테이블 생성
각 폴더에 module, controller, service, dto, entity 가 정의되어 있음
각 module Emfdmf app.module에서 통합
- commons : 모든 서비스에서 공용으로 사용하는 decorator, enum 등을 저장- filters: 예외 필터 적용
- interceptors: response type 적용
- redis: cache memory 연결