{"id":22959326,"url":"https://github.com/boostcampwm-2024/web35-watchducks","last_synced_at":"2025-08-13T05:31:56.222Z","repository":{"id":259856570,"uuid":"879593585","full_name":"boostcampwm-2024/web35-watchducks","owner":"boostcampwm-2024","description":"설치가 필요 없는 트래픽 분석 플랫폼 Watchducks","archived":false,"fork":false,"pushed_at":"2024-12-04T07:31:58.000Z","size":2294,"stargazers_count":17,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-04T08:20:42.484Z","etag":null,"topics":["nameserver","proxyserver","traffic-analysis"],"latest_commit_sha":null,"homepage":"https://watchducks.site","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/boostcampwm-2024.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":"2024-10-28T07:47:03.000Z","updated_at":"2024-12-04T07:32:02.000Z","dependencies_parsed_at":"2024-10-28T12:55:21.844Z","dependency_job_id":"325942a2-c4b7-4d5f-b04c-2a72edc203ca","html_url":"https://github.com/boostcampwm-2024/web35-watchducks","commit_stats":null,"previous_names":["boostcampwm-2024/web35-watchducks"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostcampwm-2024%2Fweb35-watchducks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostcampwm-2024%2Fweb35-watchducks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostcampwm-2024%2Fweb35-watchducks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostcampwm-2024%2Fweb35-watchducks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boostcampwm-2024","download_url":"https://codeload.github.com/boostcampwm-2024/web35-watchducks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229737547,"owners_count":18116471,"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":["nameserver","proxyserver","traffic-analysis"],"created_at":"2024-12-14T18:17:59.642Z","updated_at":"2024-12-14T18:18:21.603Z","avatar_url":"https://github.com/boostcampwm-2024.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WatchDucks \u003cimg width=30px height=30px alt=\"logo\" src=\"https://github.com/user-attachments/assets/6eaa5168-266f-4b47-bd0b-0d8205a2a4ae\"\u003e\n\n\u003cimg width=\"922\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a4fd17d7-8a66-4b21-a0a8-f8ec9c7763fb\"\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n## \"캠퍼들만을 위한, 설치가 필요 없는 트래픽 분석 서비스\"\n\n와치덕스 (WatchDucks)는 모니터링 한다는 의미의 Watch와 부스트 캠프의 마스코트 부덕(Duck)이의 합성어입니다.\n\n**DNS 서비스와 네임서버**의 동작 원리에서 착안, **프록시 서버**를 도입하여 설치가 필요없는 트래픽 분석 서비스를 제공합니다.\n\n자신의 프로젝트는 물론, 다양한 캠퍼들의 프로젝트 현황을 비교·분석할 수 있습니다. 또한, 기수별 프로젝트 현황을 제공해 부스트캠프의 역사를 기록합니다.\n\n[🌐 배포 링크 바로가기](https://watchducks.netlify.app/)         |          [📚 프로젝트 위키 바로가기](https://github.com/boostcampwm-2024/web35-WatchDucks/wiki) \n\n\u003c/div\u003e\n\n## 🎯 Watchducks의 차별점\n### 1. Watchducks는 다른 로그 분석 시스템과 다르게 설치할 필요가 없습니다.\n- 기존 서비스들(Google Analytics, Amplitude 등)은 SDK 설치나 스크립트 삽입이 필요한 반면, 와치덕스는 네임서버 변경만으로도 즉시 사용 가능합니다.\n- 프로젝트 코드 수정이나 추가 설정 없이 트래픽 분석을 시작할 수 있습니다\n\n### 2. BoostCamp 캠퍼들을 위한, '맞춤형 로그 분석 사이트' 입니다.\n- 기수별, 팀별 비교 분석이 가능한 유일한 서비스입니다.\n- 부스트캠프 생태계 내 프로젝트들의 히스토리를 체계적으로 아카이빙합니다.\n- 다른 캠퍼들의 프로젝트 트래픽을 실시간으로 비교 분석할 수 있습니다.\n\n## 📌 목차\n- [🚀 사용 방법](#-사용-방법)\n- [📈 아키텍처](#-아키텍처)\n- [🛠 기술 스택](#-기술-스택)\n- [🏆 기술적 도전 및 핵심 경험](#-기술적-도전-및-핵심-경험)\n- [🙇 팀원소개](#-팀원소개)\n\n## 🚀 사용 방법\n### 1. [프로젝트 등록페이지](https://watchducks.site/register)에서 프로젝트 정보 등록\n\u003cimg width=\"800\" src= \"https://github.com/user-attachments/assets/bf043bfc-1c1b-4e9e-9966-cbaa63eeceb0\"\u003e\n\n- 그룹 프로젝트에 필요한 정보를 등록해주세요\n- 유효성 검사 후, 사용자에게 왓치덕스의 네임서버 주소를 메일로 전송합니다.\n\n### 2. 네임서버 변경하기\n- 메일로 받은 네임서버로 네임서버 설정을 변경합니다. (예시 사진: 가비아)\n\u003cimg width=\"800\" src= \"https://github.com/user-attachments/assets/f6198851-2dfa-4494-84e8-39610b4e9746\"\u003e\n\n### 3. 기수별, 팀별 프로젝트 트래픽 정보를 확인\n**기수 별 트래픽 정보 확인**\u003cbr\u003e\n\u003cimg width=\"800\" src= \"https://github.com/user-attachments/assets/ddc2b297-7b65-4ab7-86f3-86321bb1ae7a\"\u003e\n\u003cbr\u003e\u003cbr\u003e\n**개별 프로젝트 메트릭 확인**\u003cbr\u003e\n\u003cimg width=\"800\" alt=\"스크린샷 2024-12-04 오전 12 52 50\" src=\"https://github.com/user-attachments/assets/eb5c38e0-6f5b-4ff8-9e40-c4986fe40998\"\u003e\n\u003cbr\u003e\u003cbr\u003e\n**기수별 프로젝트 순위 확인**\u003cbr\u003e\n\u003cimg width=\"800\" alt=\"스크린샷 2024-12-04 오전 12 52 50\" src=\"https://github.com/user-attachments/assets/d36a070c-1006-46f6-a31d-67c473793df1\"\u003e\n\n\u003cbr\u003e\n\n- [🔍 자세한 가이드 ↗️](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%EC%82%AC%EC%9A%A9-%EA%B0%80%EC%9D%B4%EB%93%9C) \u003cbr\u003e\n- [❓ FAQ  ↗️](https://github.com/boostcampwm-2024/web35-watchducks/wiki/FAQ)\n\n\u003cbr\u003e\n\n## 📈 아키텍처\n\n\u003cimg width=\"800\" alt=\"WatchDucks Architecture Page 1\" src=\"https://github.com/user-attachments/assets/16ecd233-6081-40f1-8041-939dfaa9c0f5\"\u003e\n\n\n## 🛠 기술 스택\n\n| Category | Technologies |\n|:--|:--|\n| Infrastructure | ![NCP](https://img.shields.io/badge/Naver_Cloud-03C75A?style=flat-square\u0026logo=naver\u0026logoColor=white) ![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=flat-square\u0026logo=ubuntu\u0026logoColor=white) ![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=flat-square\u0026logo=docker\u0026logoColor=white) |\n| Backend | ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=flat-square\u0026logo=typescript\u0026logoColor=white) ![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=flat-square\u0026logo=node.js\u0026logoColor=white) ![Fastify](https://img.shields.io/badge/fastify-%23000000.svg?style=flat-square\u0026logo=fastify\u0026logoColor=white) ![NestJS](https://img.shields.io/badge/nestjs-%23E0234E.svg?style=flat-square\u0026logo=nestjs\u0026logoColor=white) ![Nginx](https://img.shields.io/badge/nginx-%23009639.svg?style=flat-square\u0026logo=nginx\u0026logoColor=white) |\n| Frontend | ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=flat-square\u0026logo=typescript\u0026logoColor=white) ![React](https://img.shields.io/badge/react-%2320232a.svg?style=flat-square\u0026logo=react\u0026logoColor=%2361DAFB) ![React Query](https://img.shields.io/badge/React%20Query-FF4154?style=flat-square\u0026logo=react%20query\u0026logoColor=white) ![Zustand](https://img.shields.io/badge/zustand-%2320232a.svg?style=flat-square\u0026logo=react\u0026logoColor=%2361DAFB) ![ApexCharts](https://img.shields.io/badge/ApexCharts-%23F37626.svg?style=flat-square\u0026logo=apache\u0026logoColor=white) |\n| Database | ![ClickHouse](https://img.shields.io/badge/ClickHouse-FFCC01?style=flat-square\u0026logo=clickhouse\u0026logoColor=black) ![MySQL](https://img.shields.io/badge/mysql-%2300f.svg?style=flat-square\u0026logo=mysql\u0026logoColor=white) ![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=flat-square\u0026logo=redis\u0026logoColor=white) |\n| Monitoring | ![Prometheus](https://img.shields.io/badge/Prometheus-E6522C?style=flat-square\u0026logo=prometheus\u0026logoColor=white) ![Grafana](https://img.shields.io/badge/grafana-%23F46800.svg?style=flat-square\u0026logo=grafana\u0026logoColor=white) |\n| Testing \u0026 Documentation | ![Jest](https://img.shields.io/badge/-jest-%23C21325?style=flat-square\u0026logo=jest\u0026logoColor=white) ![Artillery](https://img.shields.io/badge/Artillery-%23000000.svg?style=flat-square\u0026logo=artillery\u0026logoColor=white) ![Swagger](https://img.shields.io/badge/-Swagger-%23Clojure?style=flat-square\u0026logo=swagger\u0026logoColor=white) |\n| CI/CD | ![GitHub Container Registry](https://img.shields.io/badge/GitHub%20Container%20Registry-%23121011.svg?style=flat-square\u0026logo=github\u0026logoColor=white) ![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=flat-square\u0026logo=githubactions\u0026logoColor=white) ![Netlify](https://img.shields.io/badge/netlify-%23000000.svg?style=flat-square\u0026logo=netlify\u0026logoColor=#00C7B7) |\n\n#### ⌨️ Watchducks의 기술에 대해 더 알고 싶다면?\n\n- [Wiki: 동작 원리](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%E2%96%B6%EF%B8%8F-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC)\n- [Wiki: 주제별 개발 맥락](https://github.com/boostcampwm-2024/web35-watchducks/wiki#-%EA%B8%B0%EC%88%A0%EC%A0%81-%EB%8F%84%EC%A0%84-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EA%B2%BD%ED%97%98)\n\n\u003cbr\u003e\n\n## 🏆 기술적 도전 및 핵심 경험\n| 개발 맥락 바로가기 | 태그 |\n|----------|--|\n| [🤔 우리의 로그 시스템은 어떻게 구축해야 할까?](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%EC%9A%B0%EB%A6%AC%EC%9D%98-%EB%A1%9C%EA%B7%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EA%B5%AC%EC%B6%95%ED%95%B4%EC%95%BC%ED%95%A0%EA%B9%8C%3F) | `기획` `프로토타입`|\n| [🛠️ 개발 환경과 인프라 세팅하기!](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%84%B8%ED%8C%85%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C%3F) | `개발 환경` `CI/CD` |\n| [🎨 프론트 박사님의 개발일지](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%ED%94%84%EB%A1%A0%ED%8A%B8-%EB%B0%95%EC%82%AC%EB%8B%98%EC%9D%98-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80) | `React` `상태관리` `차트`|\n| [🏬 데이터베이스와 가까워지기](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EC%99%80-%EA%B0%80%EA%B9%8C%EC%9B%8C%EC%A7%80%EA%B8%B0) | `ClickHouse`  |\n| [👜 네임서버, 어떻게 만들어야 할까?](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84,-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%95%BC-%ED%95%A0%EA%B9%8C%3F) | `Authoritative Name Server` `헬스 체크`|\n| [🪄 프록시 서버, 그거 어떻게 동작해야 하는데?](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84,-%EA%B7%B8%EA%B1%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%9E%91%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94%EB%8D%B0%3F) | `Fastify` `Bulk Insert` |\n| [💣 부하테스트와 성능 개선에 도전!](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%EB%B6%80%ED%95%98%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%99%80-%EC%84%B1%EB%8A%A5-%EA%B0%9C%EC%84%A0%EC%97%90-%EB%8F%84%EC%A0%84!) | `부하테스트` `성능 개선` |\n\u003cbr\u003e\n\n[📝 더 많은 개발 과정을 보고 싶다면...](https://github.com/boostcampwm-2024/web35-watchducks/wiki)\n\n\u003cbr\u003e\n\n## 🙇 팀원소개\n\n\u003ctable\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd style=\"min-width: 150px;\"\u003e\n            \u003ca href=\"https://github.com/hyo-limilimee\"\u003e\n              \u003cimg src=\"https://github.com/hyo-limilimee.png\" width=\"100\"\u003e\n              \u003cbr /\u003e\n              \u003cb\u003e강효림(BE)\u003c/b\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd style=\"min-width: 150px;\"\u003e\n            \u003ca href=\"https://github.com/EnvyW6567\"\u003e\n              \u003cimg src=\"https://github.com/EnvyW6567.png\" width=\"100\"\u003e\n              \u003cbr /\u003e\n              \u003cb\u003e노병우(BE)\u003c/b\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd style=\"min-width: 150px;\"\u003e\n            \u003ca href=\"https://github.com/Hosung99\"\u003e\n              \u003cimg src=\"https://github.com/Hosung99.png\" width=\"100\"\u003e\n              \u003cbr /\u003e\n              \u003cb\u003e손성호(FE)\u003c/b\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd style=\"min-width: 150px;\"\u003e\n            \u003ca href=\"https://github.com/sjy2335\"\u003e\n              \u003cimg src=\"https://github.com/sjy2335.png\" width=\"100\"\u003e\n              \u003cbr /\u003e\n              \u003cb\u003e윤상진(BE)\u003c/b\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n      \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e\n            ISTJ\n        \u003c/td\u003e\n        \u003ctd\u003e\n            ENFP\n        \u003c/td\u003e\n        \u003ctd\u003e\n            ISFP\n        \u003c/td\u003e\n        \u003ctd\u003e\n            INFP\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n[🧑‍🧑‍🧒‍🧒 팀 와치덕스가 궁금하다면](https://github.com/boostcampwm-2024/web35-watchducks/wiki/%08About-Team-Watchducks)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboostcampwm-2024%2Fweb35-watchducks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboostcampwm-2024%2Fweb35-watchducks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboostcampwm-2024%2Fweb35-watchducks/lists"}