{"id":20009703,"url":"https://github.com/heonys/ts-eznode-starter","last_synced_at":"2026-04-11T12:49:55.523Z","repository":{"id":215741253,"uuid":"737262767","full_name":"Heonys/ts-eznode-starter","owner":"Heonys","description":"A reference example for Typescript and Node.js providing a simple foundational structure","archived":false,"fork":false,"pushed_at":"2024-01-14T23:33:11.000Z","size":299,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-13T03:45:52.462Z","etag":null,"topics":["express","nodejs","npm-package","starter","testing","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Heonys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-12-30T11:48:27.000Z","updated_at":"2024-01-24T03:16:00.000Z","dependencies_parsed_at":"2024-01-15T00:36:28.162Z","dependency_job_id":"63b3b39b-f90c-452a-9e88-958fd3e6bf88","html_url":"https://github.com/Heonys/ts-eznode-starter","commit_stats":null,"previous_names":["heonys/eznode-starter","heonys/ts-eznode-starter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heonys%2Fts-eznode-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heonys%2Fts-eznode-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heonys%2Fts-eznode-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heonys%2Fts-eznode-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Heonys","download_url":"https://codeload.github.com/Heonys/ts-eznode-starter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241447522,"owners_count":19964314,"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":["express","nodejs","npm-package","starter","testing","typescript"],"created_at":"2024-11-13T07:16:52.002Z","updated_at":"2025-11-26T12:03:16.940Z","avatar_url":"https://github.com/Heonys.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ts-eznode-starter\n\n이 저장소는 Express 기반의 Node.js 서버와 템플릿 엔진 Nunjucks을 통해서 아주 간단한 UI를 작성하고 Node.js에서 TypeScript 코드를 작성하기 위한 쉬운 workflow를 보여주는 것입니다\n\nTypeScript 및 Node 프로젝트를 만드는 데 대한 포괄적이고 결정적인 가이드가 되는 것이 목표가 아니라 이름에서도 알 수 있듯이 Node.js 코드를 작성하는데 참조가 되었으면 좋겠습니다.\n\n만약 Express 기반의 TypeScript 프로젝트를 시작하는 데 관심이 있다면 NestJS 라는 프레임워크를 참고해도 좋을 것 같습니다. [NestJS - A progressive Node.js framework](https://nestjs.com)\n\n### 요구사항\n\n- MongoDB 설정\n  [Atlas](https://www.mongodb.com/atlas)를 활용하여 관리형 MongoDB 인스턴스를 생성\n- Redis 설정\n  [Redis](https://redis.com/)를 사용하여 데이터베이스를 생성\n- Kakao 설정\n  [Kakao Developers](https://developers.kakao.com/)에서 웹 플랫폼 어플리케이션을 생성하고도메인을 추가하여 Kakao API와의 연동\n\n### 환경변수 설정\n\n```env\nPORT=8080\nSECRET_KEY=your-secret-key\nJWT_SECRET=your-secret-key\nJWT_EXPIRES_SEC=86400\n# MongoDB\nCLUSTER_KEY=connectionstring\n# Kakao\nKAKAO_ID=RestAPIKey\n# Redis\nREDIS_ENDPOINT=redisendpoint\nREDIS_PASWORD=userpassword\n```\n\n# 시작하기\n\n- 저장소 복제\n\n```\ngit clone https://github.com/Heonys/ts-eznode-starter.git \u003cproject_name\u003e\n```\n\n- 의존성 설치\n\n```\ncd \u003cproject_name\u003e\nnpm install\n```\n\n- 빌드 및 실행\n\n```\nnpm run build\nnpm start\n```\n\n| NPM Script   | Description                                   |\n| ------------ | --------------------------------------------- |\n| `build-css`  | shx을 통한 `.css`파일 복사하여 css 빌드       |\n| `build-ts`   | TypeScript 빌드                               |\n| `build`      | 전체 빌드 (`build-ts`, `build-css`)           |\n| `serve`      | `production` 환경에서 서버 실행               |\n| `pm2`        | `PM2`로 어플리케이션 실행                     |\n| `start`      | 어플리케이션 시작                             |\n| `dev`        | 개발 환경에서 `nodemon`으로 어플리케이션 실행 |\n| `test`       | `Jest`를 사용하여 테스트를 실행               |\n| `test:watch` | 테스트를 watch 모드로 실행                    |\n| `coverage`   | 테스트 커버리지 보고서 생성                   |\n\n### 프로젝트 구조\n\n| Forder              | Description                          |\n| ------------------- | ------------------------------------ |\n| **dist**            | 빌드된 파일들이 있는 디렉토리        |\n| **node_modules**    | 모든 npm 종속성들이 포함된 디렉토리  |\n| **src**             | dist 디렉토리로 컴파일될 소스 코드   |\n| **src/controllers** | http 요청에 응답하는 컨트롤러        |\n| **src/middleware**  | Express 미들웨어 함수                |\n| **src/models**      | 데이터 모델을 정의                   |\n| **src/passport**    | passport 설정과 관련된 디렉토리      |\n| **src/public**      | css, image 등의 정적 파일            |\n| **src/router**      | Express 라우터 정의                  |\n| **src/db**          | MongoDB 연결 및 설정파일             |\n| **src/types**       | TypeScript 타입 정의                 |\n| **src/util**        | 유틸리티 함수 디렉토리               |\n| **src/app.ts**      | Express 기본 구성 및 미들웨어를 정의 |\n| **src/server.ts**   | Express 어플리케이션의 진입점        |\n| **test**            | 테스트 파일 디렉토리                 |\n| **Views**           | 템플릿 엔진 디렉토리                 |\n\n### TypeScript 컴파일 구성\n\n```json\n{\n  \"compilerOptions\": {\n    \"target\": \"es2016\",\n    \"module\": \"commonjs\",\n    \"moduleResolution\": \"node\",\n    \"outDir\": \"dist\",\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"strict\": true,\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\", \"test/middleware.spec.ts\"]\n}\n```\n\n\n\n### Contributors\n\n- [Jiheon Kim](https://github.com/Heonys)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheonys%2Fts-eznode-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheonys%2Fts-eznode-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheonys%2Fts-eznode-starter/lists"}