{"id":30629571,"url":"https://github.com/stepanowon/todosvc2","last_synced_at":"2026-04-09T11:02:25.430Z","repository":{"id":47920272,"uuid":"231627310","full_name":"stepanowon/todosvc2","owner":"stepanowon","description":"Simple RESTful service for todolist App using a mongodb, a JWT Authorization.","archived":false,"fork":false,"pushed_at":"2025-08-24T01:52:12.000Z","size":1062,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-24T07:06:11.805Z","etag":null,"topics":["express","jwt","mongodb","mongoose","node","rest-api","todolist"],"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/stepanowon.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,"zenodo":null}},"created_at":"2020-01-03T16:44:20.000Z","updated_at":"2025-08-24T01:52:15.000Z","dependencies_parsed_at":"2023-12-16T10:37:18.875Z","dependency_job_id":"53f34afe-fafb-414a-a743-96f5b7ce581c","html_url":"https://github.com/stepanowon/todosvc2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stepanowon/todosvc2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepanowon%2Ftodosvc2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepanowon%2Ftodosvc2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepanowon%2Ftodosvc2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepanowon%2Ftodosvc2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stepanowon","download_url":"https://codeload.github.com/stepanowon/todosvc2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepanowon%2Ftodosvc2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272901994,"owners_count":25012406,"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","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["express","jwt","mongodb","mongoose","node","rest-api","todolist"],"created_at":"2025-08-30T20:26:54.790Z","updated_at":"2025-12-30T21:34:03.790Z","avatar_url":"https://github.com/stepanowon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Todo List RESTful API 서비스 (todosvc2)\n\n이 프로젝트는 Node.js, Express, MongoDB, Mongoose, JWT(JSON Web Token) 인증을 사용하여 구현된 Todo List RESTful API 서비스입니다.\n\n## 주요 기능\n\n- 사용자 계정 생성 및 로그인 (JWT 토큰 기반 인증)\n- 사용자별 Todo(할일) 목록 관리\n  - Todo 항목 생성, 조회, 수정, 삭제\n  - Todo 완료 상태 토글\n- 입력 데이터 유효성 검사 및 보안 처리 (HMAC, Sanitization)\n- API 요청 속도 제한 (Rate Limiting)\n- MongoDB 데이터베이스 연동\n\n## 기술 스택\n\n- **런타임:** Node.js (버전 22 이상)\n- **프레임워크:** Express.js\n- **데이터베이스:** MongoDB (Mongoose ODM)\n- **인증:** JWT (JSON Web Token)\n- **개발 도구:** Babel (ES6+ 트랜스파일링), ESLint, Prettier, Nodemon\n- **기타:** CORS, Morgan (로깅)\n\n## API 엔드포인트\n\n### 인증\n\n- `POST /users/create`: 사용자 계정 생성\n- `POST /login`: 로그인 및 JWT 토큰 발급\n\n### Todo 관리\n\n- `GET /todolist`: 사용자의 모든 Todo 목록 조회\n- `GET /todolist/:id`: 특정 Todo 항목 조회\n- `POST /todolist`: 새로운 Todo 항목 생성\n- `PUT /todolist/:id`: 특정 Todo 항목 수정\n- `DELETE /todolist/:id`: 특정 Todo 항목 삭제\n- `PUT /todolist/:id/done`: 특정 Todo 항목의 완료 상태 토글\n\n\u003e `_long` 접미사가 붙은 엔드포인트들은 의도적으로 지연(1초)이 추가된 버전으로, 로딩 상태 등을 테스트하기 위해 사용됩니다. (예: `GET /todolist_long`)\n\n### UI 페이지\n\n- `GET /`: 서비스 소개 페이지\n\n## 설치 및 실행 방법\n\n1. **의존성 설치**\n   ```bash\n   npm install\n   ```\n\n2. **개발 서버 실행**\n   ```bash\n   npm run start:dev\n   ```\n   - `nodemon`을 사용하여 코드 변경 시 자동으로 서버를 재시작합니다.\n\n3. **배포용 빌드**\n   ```bash\n   npm run build\n   ```\n   - ES6+ 코드를 `dist` 디렉토리에 트랜스파일링합니다.\n\n4. **배포 서버 실행**\n   ```bash\n   npm start\n   ```\n   - 빌드된 코드를 실행합니다.\n\n## 환경 변수\n\n서비스는 다음과 같은 환경 변수를 사용합니다. `.env` 파일을 생성하여 설정할 수 있습니다.\n\n- `PORT`: 서버 포트 (기본값: 3000)\n- `MONGODB_URI`: MongoDB 연결 URI (기본값: mongodb://localhost:27017/tododb)\n- `JWT_SECRET_KEY`: JWT 토큰 서명에 사용되는 비밀 키 (생산 환경에서는 반드시 설정 필요)\n- `PASSWORD_SALT`: 비밀번호 해싱에 사용되는 솔트 값\n\n## 보안\n\n- JWT 토큰을 사용한 API 인증\n- HMAC을 사용한 비밀번호 해싱\n- 입력 데이터 Sanitization (XSS 방지)\n- API 요청 속도 제한\n\n## 개발 스크립트\n\n- `npm run lint`: ESLint를 사용하여 코드 문법 검사\n- `npm run format`: Prettier를 사용하여 코드 포맷팅\n\n## 라이선스\n\nISC","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepanowon%2Ftodosvc2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstepanowon%2Ftodosvc2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepanowon%2Ftodosvc2/lists"}