{"id":15097810,"url":"https://github.com/ignisilva/library-management-server","last_synced_at":"2026-01-31T03:31:37.579Z","repository":{"id":130920108,"uuid":"522552651","full_name":"ignisilva/library-management-server","owner":"ignisilva","description":"도서관 관리 API 및 Graphql 서버입니다","archived":false,"fork":false,"pushed_at":"2022-09-13T13:36:35.000Z","size":160,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-11T21:05:58.333Z","etag":null,"topics":["apollo-graphql","docker","docker-compose","javascript","kafkajs","koajs","postgresql","postman","sequelize"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ignisilva.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-08T13:05:17.000Z","updated_at":"2022-09-13T13:37:02.000Z","dependencies_parsed_at":"2023-10-03T03:42:23.926Z","dependency_job_id":null,"html_url":"https://github.com/ignisilva/library-management-server","commit_stats":{"total_commits":5,"total_committers":1,"mean_commits":5.0,"dds":0.0,"last_synced_commit":"d28c60784012af10128d35dc929ab13cff2ee594"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ignisilva/library-management-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ignisilva%2Flibrary-management-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ignisilva%2Flibrary-management-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ignisilva%2Flibrary-management-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ignisilva%2Flibrary-management-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ignisilva","download_url":"https://codeload.github.com/ignisilva/library-management-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ignisilva%2Flibrary-management-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28928148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T02:59:34.861Z","status":"ssl_error","status_checked_at":"2026-01-31T02:59:05.369Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apollo-graphql","docker","docker-compose","javascript","kafkajs","koajs","postgresql","postman","sequelize"],"created_at":"2024-09-25T16:40:33.444Z","updated_at":"2026-01-31T03:31:37.566Z","avatar_url":"https://github.com/ignisilva.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 도서관 관리 토이 프로젝트\n\n인턴 과정을 진행하며 개발했던 도서관 관리 토이 프로젝트 결과물 입니다.\n\n## About The Project\n\n도서관 관리 관련 REST API 및 Graphql 기반의 서버를 개발했습니다.\n\nKoa로 REST API를 구현했으며, Apollo-Server로 Graphql을 개발했습니다.\n\nKafka를 사용하여 비동기 요청에 대해(메일 전송) 처리했습니다.\n\n## ERD 구성\n\ndbdiagram.io으로 ERD를 작성했습니다.\n\n[ERD 링크](https://dbdiagram.io/d/62677d8595e7f23c61716ec0)\n\n\n# 도서관 관리 서비스 백엔드 프로젝트 \n\n|👉 목차||\n|---|---|\n|[1. 기술 스택](#기술-스택)| 해당 프로젝트에서 사용된 기술 스택 |\n|[2. 도서관 관리 서비스 개요](##도서관-관리-서비스-개요)| 서비스에 대한 간략한 설명|\n|[3. 제공 기능 상세](#제공-기능-)| 제공하는 기능에 대한 상세 내역 및 API 문서|\n|[4. 구현 과정](#구현-과정)| 모델링, 고민했던 포인트|\n\n# 기술 스택\n\u003cdiv align=center\u003e \n  \u003cimg src=\"https://img.shields.io/badge/javascript-F7DF1E?style=for-the-badge\u0026logo=javascript\u0026logoColor=white\"\u003e \n  \u003cimg src=\"https://img.shields.io/badge/node.js-339933?style=for-the-badge\u0026logo=Node.js\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/koa-33333D?style=for-the-badge\u0026logo=koa\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/apollo-graphql-311C87?style=for-the-badge\u0026logo=apollo-graphql\u0026logoColor=white\"\u003e\n  \u003cbr\u003e  \n\n  \u003cimg src=\"https://img.shields.io/badge/postgres-4169E1?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=white\"\u003e \n  \u003cimg src=\"https://img.shields.io/badge/docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/apachekafka-231F20?style=for-the-badge\u0026logo=apachekafka\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Sequelize-52B0E7?style=for-the-badge\u0026logo=Sequelize\u0026logoColor=white\"\u003e\n  \u003cbr\u003e\n  \n  \u003cimg src=\"https://img.shields.io/badge/github-181717?style=for-the-badge\u0026logo=github\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/git-F05032?style=for-the-badge\u0026logo=git\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/postman-FF6C37?style=for-the-badge\u0026logo=postman\u0026logoColor=white\"\u003e \n  \u003cbr\u003e\n\u003c/div\u003e\n\n# 도서관 관리 서비스 개요\n\n오프라인으로 운영되는 도서관의 관리 서비스 백엔드 프로젝트입니다.\n\n해당 서비스에서 제공하는 기능은 간략하게 다음과 같습니다.\n- 도서관 이용자에 대한 관리\n- 도서관 내 도서 정보에 대한 관리\n- 도서 대여 및 예약에 대한 관리\n\n# 제공 기능 상세\n\n## 인증\n  - 로그인 (access/refresh token 발급)\n  - 토큰 재발급(access token 재발급)\n  - 로그아웃 (refresh token 삭제)\n\n## 사용자\n\n  - 회원 정보 생성 (회원 가입)\n  - 회원 정보 가져오기\n  - 회원 정보 (목록) 가져오기\n  - 회원 정보 수정\n  - 회원 정보 삭제\n\n## 도서\n\n  - 도서 정보 생성\n  - 도서 정보 가져오기\n  - 도서 정보 (목록) 가져오기\n  - 도서 정보 수정\n  - 도서 정보 삭제\n\n## 대여\n\n  - 도서 대여 정보 생성 (대여, 연장, 반납)\n  - 도서 대여 정보 가져오기\n  - 도서 대여 정보 (목록) 가져오기\n  - 도서 대여 정보 수정\n  - 도서 대여 정보 삭제\n\n## 예약\n\n  - 도서 예약 정보 생성\n  - 도서 예약 정보 가져오기\n  - 도서 예약 정보 (목록) 가져오기\n  - 도서 예약 정보 수정\n  - 도서 예약 정보 삭제\n\n## 메일 전송\n  - 도서 대여시, 예정 반납일 메일 안내\n  - 도서 연장시, 예정 반납일 메일 안내\n\n## API 명세서\n\nPostman을 사용하여 제작한 API Docs\n\n[👉 Swagger Docs 바로가기](https://app.swaggerhub.com/apis-docs/preonboarding/blog-api-service/1.0)\n\n# 구현 과정 \n\n## 환경 세팅\n\n### 모델링\n\n\u003e 데이터베이스는 AWS LightSail로 생성했습니다.(RDS, PostgreSQL) \n\n![모델링](https://user-images.githubusercontent.com/63445753/188299953-62432aae-8f5d-4876-8b26-0169015c05cf.png) \n\n### 폴더 구조\n```\nproject/\n├─ src/\n│  ├─ users/\n│  ├─ posts/\n│  ├─ auth/\n│  ├─ statistics/\n│  ├─ commons/\n│  ├─ database/\n│  ├─ filters/\n│  ├─ interceptors/\n│  ├─ redis/\n├─ app.controller.ts\n├─ app.module.ts\n├─ app.service.ts\n├─ main.ts\n```\n\n- users, posts, auth, statistics 폴더를 다누고, DTO 및 Entity를 작성하여 테이블 생성  \n각 폴더에 module, controller, service, dto, entity 가 정의되어 있음  \n각 module Emfdmf app.module에서 통합  \n  \n- commons : 모든 서비스에서 공용으로 사용하는 decorator, enum 등을 저장\n\n- filters: 예외 필터 적용\n\n- interceptors: response type 적용\n\n- redis: cache memory 연결\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignisilva%2Flibrary-management-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fignisilva%2Flibrary-management-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignisilva%2Flibrary-management-server/lists"}