{"id":22531302,"url":"https://github.com/hobom-s/hbtb-back-v2","last_synced_at":"2026-02-17T07:40:22.522Z","repository":{"id":220088525,"uuid":"721169257","full_name":"HoBom-s/hbtb-back-v2","owner":"HoBom-s","description":"HoBom Tech Blog_BackEnd v2","archived":false,"fork":false,"pushed_at":"2024-12-22T06:40:05.000Z","size":625,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-23T19:05:37.586Z","etag":null,"topics":["aws-rds","aws-s3","express","joi","jwt","morgan","multer","mysql","nodejs","pm2","redis","swagger","typeorm","typescript","winston","winston-daily-rotate-file"],"latest_commit_sha":null,"homepage":"https://hbtb.vercel.app","language":"TypeScript","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/HoBom-s.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":"2023-11-20T13:54:15.000Z","updated_at":"2024-12-22T06:40:08.000Z","dependencies_parsed_at":"2024-01-31T08:44:36.684Z","dependency_job_id":"65b25517-19df-4a9e-b079-bd415b8b0ef8","html_url":"https://github.com/HoBom-s/hbtb-back-v2","commit_stats":null,"previous_names":["hobom-s/hbtb-back-v2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HoBom-s%2Fhbtb-back-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HoBom-s%2Fhbtb-back-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HoBom-s%2Fhbtb-back-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HoBom-s%2Fhbtb-back-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HoBom-s","download_url":"https://codeload.github.com/HoBom-s/hbtb-back-v2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248074124,"owners_count":21043478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aws-rds","aws-s3","express","joi","jwt","morgan","multer","mysql","nodejs","pm2","redis","swagger","typeorm","typescript","winston","winston-daily-rotate-file"],"created_at":"2024-12-07T08:07:00.679Z","updated_at":"2026-02-17T07:40:17.492Z","avatar_url":"https://github.com/HoBom-s.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HoBom Tech Blog BackEnd\n\n**호봄 프로젝트**는 '하고 싶은 개발'을 원없이 하기 위해 시작되었습니다.  \n**호봄 테크 블로그**는 우리의 개발 여정을 기록하고 공유하기 위한 서비스 입니다.\n\n**HoBom project** is named after our initial, has begun to freely do all the development we want regardless of companies' technical limitation.  \n**Hobom Tech Blog** is kind of an archive where we can record the content of our wildest dreams.\n\n\u003cbr/\u003e\n\n## 문제 해결(TroubleShooting)\n- 노션 트러블슈팅 [링크](https://flawless-octagon-2a5.notion.site/HoBom-Tech-Blog-29c15b6f89954ef5ab9733121fd72de7)\n- on Notion [Link](https://flawless-octagon-2a5.notion.site/HoBom-Tech-Blog-29c15b6f89954ef5ab9733121fd72de7)\n\n\n\u003cbr/\u003e\n\n## 아키텍쳐\n![_hbtb_architecture](https://github.com/HoBom-s/hbtb-back-v2/assets/85475577/147c6aa2-3fa9-45a5-b64a-bdd5cbf31658)\n\n\n\u003cbr/\u003e\n\n## 기술 스택(Tech Stack)\n\n`NodeJs` `Express` `TypeScript` `TypeORM` `MySQL`  \n`AWS-RDS` `AWS-S3` `Redis` `PM2`\n\n- WAS distribution on `CLOUDTYPE` free-tier\n- DB distribution on `AWS-RDS` free-tier\n- [Image WAS](https://github.com/HoBom-s/hb-imageServer) distribution on `Koyeb` free-tier  \n   ※ 호봄 프로젝트 확장을 위해 이미지 서버 별도 구축  \n   ※ Built a sepearate image server for the sake of HoBom service expansion\n\n\u003cbr/\u003e\n\n## 시작하기(Getting started)\n\nOf course, `.env` in private.\n\n```bash\n# Git clone\ngit clone https://github.com/HoBom-s/hbtb-back-v2.git\n\n# start\nnpm install\nnpm run dev\n```\n\n\u003cbr/\u003e\n\n## Swagger(API docs)\n\nAPI 파악을 위해 간소화된 Swagger를 제공합니다: **[HBTB-API-v2](https://port-0-hbtb-back-v2-17xco2nlslu0q3q.sel5.cloudtype.app/api/v2/docs/)**\n\nPlease check simplified api docs on **[HBTB-API-v2](https://port-0-hbtb-back-v2-17xco2nlslu0q3q.sel5.cloudtype.app/api/v2/docs/)**.\n\n\u003cbr/\u003e\n\n## 기능(Features)\n\n### 1. Users\n\n- User basic CRUD, signup, login, logout\n- [JWT](https://jwt.io/) authentication, authorization with authValidateMiddleware (Access token, Refresh token)\n- Upload profile image using multer and s3 (with [image server](https://github.com/HoBom-s/hb-imageServer)).\n\n### 2. Articles\n\n- Article basic CRUD, search, pagination\n- Upload thumbnail using multer and s3 (with [image server](https://github.com/HoBom-s/hb-imageServer)).\n- [Relations](https://typeorm.io/relations)(Join) with Tags and Users entity using TypeORM.\n\n### 3. Tags\n\n- 게시글 태그: 키워드 서칭 등에 사용  \n  Articles' tags for keyword searching.\n- Tag basic CRUD\n\n### 4. Categories\n\n- 카테고리: 페이지 헤더 및 푸터에 삽입 될 메뉴 카테고리  \n  Menus to be placed on page header and footer.\n- Category basic CRUD\n\n### Middleware\n\n1. auth.middleware : Authorization and authentication based on [JWT](https://jwt.io/)(Access, Refresh token)\n2. param.middleware : Request params validation using [Joi](https://joi.dev/) schema\n3. body.middleware : Request body validation using [Joi](https://joi.dev/) schema\n4. cache.middleware : Caching articles and tags using [Redis](https://redis.io/)\n5. error.middleware : Using customized error middleware\n\n### Logging\n\n- Using [winston](https://www.npmjs.com/package/winston), [winston-daily-rotate-file](https://www.npmjs.com/package/winston-daily-rotate-file), and [morgan](https://www.npmjs.com/package/morgan) for logging and tracking issues\n\n### Redis\n\n- Caching patterns: `Look Aside` + `Write Around`  \n  (more about this on above **TroubleShooting** note)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhobom-s%2Fhbtb-back-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhobom-s%2Fhbtb-back-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhobom-s%2Fhbtb-back-v2/lists"}