{"id":21906254,"url":"https://github.com/Alfex4936/k-pullup","last_synced_at":"2025-10-31T09:31:45.989Z","repository":{"id":222427241,"uuid":"756158248","full_name":"Alfex4936/chulbong-kr","owner":"Alfex4936","description":"대한민국 철봉 지도","archived":false,"fork":false,"pushed_at":"2024-04-22T13:38:29.000Z","size":8189,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-22T14:29:08.486Z","etag":null,"topics":["fullstack","golang","kakaomap","korea","map"],"latest_commit_sha":null,"homepage":"https://k-pullup.com","language":"Go","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/Alfex4936.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}},"created_at":"2024-02-12T04:40:23.000Z","updated_at":"2024-04-22T14:29:09.606Z","dependencies_parsed_at":"2024-02-14T06:29:51.665Z","dependency_job_id":"2e71fa37-0360-4e18-a2cf-e39a77f0eaab","html_url":"https://github.com/Alfex4936/chulbong-kr","commit_stats":null,"previous_names":["alfex4936/chulbong-kr"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alfex4936%2Fchulbong-kr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alfex4936%2Fchulbong-kr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alfex4936%2Fchulbong-kr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alfex4936%2Fchulbong-kr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alfex4936","download_url":"https://codeload.github.com/Alfex4936/chulbong-kr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239173328,"owners_count":19594330,"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":["fullstack","golang","kakaomap","korea","map"],"created_at":"2024-11-28T16:43:11.460Z","updated_at":"2025-10-31T09:31:45.983Z","avatar_url":"https://github.com/Alfex4936.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# chulbong- :kr:\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"100\" src=\"https://github.com/Alfex4936/chulbong-kr/assets/2356749/6236863a-11e1-45d5-b2e2-9bcf40363e1d\" alt=\"k-pullup logo\"/\u003e\u003c/br\u003e\n  \u003cimg width=\"1024\" alt=\"2025-10-08 pullupbars\" src=\"https://github.com/user-attachments/assets/0eec5b32-553b-4741-a76e-0712e5bb08f3\" /\u003e\n  \u003cimg alt=\"GitHub commit activity (branch)\" src=\"https://img.shields.io/github/commit-activity/w/Alfex4936/chulbong-kr/main\"\u003e\n  \u003cimg alt=\"Go)\" src=\"https://img.shields.io/badge/Go-1.2x-lightblue\"\u003e\n  \u003cimg alt=\"MySQL\" src=\"https://img.shields.io/badge/MySQL-8.x-brightgreen\"\u003e\n  \u003cimg alt=\"Redis\" src=\"https://img.shields.io/badge/Dragonfly-1.x-red\"\u003e\n\u003c/p\u003e\n\n\u003e [!NOTE]  \n\u003e The service is running with [Go as backend](https://github.com/Alfex4936/chulbong-kr/tree/main/backend) but [Spring boot 3](https://github.com/Alfex4936/chulbong-kr/tree/main/backend-spring) is also available. (WIP)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"356\" src=\"https://github.com/user-attachments/assets/78072f29-59f5-4303-b241-533b9198b18d\" alt=\"gochulbong\"/\u003e\u003c/br\u003e\n\u003c/p\u003e\n\n### 프로젝트 소개 :world_map:\n\n**k-pullup**은 공공장소에 있는 턱걸이 바를 찾고 공유하기 위한 커뮤니티 플랫폼입니다.\n\n지도 API를 활용하여 사용자는 가입 및 로그인 후 턱걸이 바의 위치를 마커로 추가할 수 있으며,\n\n사진 한 장과 간단한 설명을 함께 업로드할 수 있습니다.\n\n로그인한 다른 사용자는 해당 마커에 댓글을 남길 수 있어, 정보 공유 및 소통이 용이합니다.\n\n- 백엔드\n  - https://github.com/Alfex4936/chulbong-kr\n- 프론트엔드\n  - https://github.com/2YH02/k-pullup\n\n![0](https://github.com/Alfex4936/chulbong-kr/assets/2356749/c0f58f73-d568-4ef7-8fa1-1f20820b8fff)\n\n## 🖼️ 구현 UI\n\n|      메인 화면      |      검색 (주변 검색, 초성 지원)      |      위치 채팅      |\n|:-------------------:|:----------------------------------:|:-------------------:|\n| \u003cimg width=\"350\" alt=\"main\" src=\"https://github.com/user-attachments/assets/be4dfef3-c42b-4dc9-9df8-e10069ce35d2\"\u003e | \u003cimg width=\"350\" alt=\"search\" src=\"https://github.com/user-attachments/assets/22875f67-c5d3-43d4-8164-74cebeb54f63\"\u003e | \u003cimg width=\"350\" alt=\"chat\" src=\"https://github.com/user-attachments/assets/6a20b8b7-8ab6-4cfe-b3fd-49e22348a033\"\u003e |\n\n|  거리뷰 (가장 가까운 위치)  |      댓글      |    오프라인 저장 (카카오맵)     |\n|:-------------------:|:-------------:|:-----------------------------:|\n| \u003cimg width=\"350\" alt=\"road view\" src=\"https://github.com/user-attachments/assets/7b7e7f6c-2cc1-4175-8153-a8a3727bc5a5\"\u003e | \u003cimg width=\"350\" alt=\"comment\" src=\"https://github.com/user-attachments/assets/ac60be05-07a4-4a39-be45-346e5727f079\"\u003e | \u003cimg width=\"350\" alt=\"offline-pdf\" src=\"https://github.com/Alfex4936/chulbong-kr/assets/2356749/a7eb993e-f847-40c8-9b93-d367f4c6a3f8\"\u003e |\n\n|   공유, 북마크   |  이미지 상세  |    위치 등록    |\n|:----------------:|:-------------:|:---------------------:|\n| \u003cimg width=\"350\" alt=\"share bookmark\" src=\"https://github.com/user-attachments/assets/45211feb-32d1-4452-9472-f7436efa5115\"\u003e | \u003cimg width=\"350\" alt=\"image detail\" src=\"https://github.com/user-attachments/assets/ea5efb8d-c5c6-4739-8a9a-50224b1db051\"\u003e | \u003cimg width=\"350\" alt=\"set location\" src=\"https://github.com/user-attachments/assets/a05f7f3b-b2ce-467d-8e84-0b1dfd8faa72\"\u003e |\n\n|   위치 삭제   |    지도 이동   |  마이페이지, 설정  |\n|:-------------:|:-------------:|:--------------------:|\n| \u003cimg width=\"350\" alt=\"delete location\" src=\"https://github.com/user-attachments/assets/23b9c5f2-9aea-4a17-81c0-ee3e6757144a\"\u003e | \u003cimg width=\"350\" alt=\"move map\" src=\"https://github.com/user-attachments/assets/f8b3784a-4c7a-49ef-8998-4c53d1be949f\"\u003e | \u003cimg width=\"350\" alt=\"mypage config\" src=\"https://github.com/user-attachments/assets/5b069293-5501-450a-841c-6fc1449e4386\"\u003e |\n\n|   정보 수정 요청   |   수정 요청 승인  |  반응형  |\n|:-------------:|:-------------:|:-------------:|\n| \u003cimg width=\"350\" alt=\"report\" src=\"https://github.com/user-attachments/assets/782de329-311f-457f-b40b-d8686a7a26cd\"\u003e | \u003cimg width=\"350\" alt=\"approve report\" src=\"https://github.com/user-attachments/assets/22735cf2-c18a-40ec-8538-29a9bf4f9a6e\"\u003e | \u003cimg width=\"350\" alt=\"responsive web\" src=\"https://github.com/user-attachments/assets/9435ac37-6d47-4998-a2b0-33afce3b2c29\"\u003e |\n\n![slack](https://github.com/Alfex4936/chulbong-kr/assets/2356749/5ec03f6a-871f-4556-90c3-13bb44769f13)\n\n### 기능\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant AuthService as Auth Service\n    participant MarkerService as Marker Service\n    participant CommentService as Comment Service\n    participant ShareService as Share Service\n    participant SearchService as Search Service\n    participant AdminService as Admin Service\n    participant ChatService as Chat Service\n    participant PopularService as Popular Service\n    participant OfflineService as Offline Service\n    participant AddressService as Address Service\n\n    Note over User, AuthService: User Registration and Authentication\n    User-\u003e\u003eAuthService: Sign Up with Email\n    AuthService-\u003e\u003eUser: Send Email Verification\n    User-\u003e\u003eAuthService: Verify Email\n    User-\u003e\u003eAuthService: Login\n    AuthService-\u003e\u003eUser: Authentication Token\n\n    Note over User, MarkerService: Marker Management\n    User-\u003e\u003eMarkerService: Add Marker with Location, Photo, Description\n    MarkerService-\u003e\u003eAddressService: Validate Address\n    AddressService--\u003e\u003eMarkerService: Address Validated/Failed\n    MarkerService--\u003e\u003eUser: Marker Added\n    User-\u003e\u003eMarkerService: View Marker\n    MarkerService--\u003e\u003eUser: Display Marker Details\n\n    Note over User, CommentService: Commenting on Markers\n    User-\u003e\u003eCommentService: Add Comment to Marker\n    CommentService--\u003e\u003eUser: Comment Added\n    User-\u003e\u003eCommentService: View Comments\n    CommentService--\u003e\u003eUser: Display Comments\n\n    Note over User, ShareService: Sharing Markers\n    User-\u003e\u003eShareService: Share Marker Link\n    ShareService--\u003e\u003eUser: Marker Link\n\n    Note over User, SearchService: Searching for Nearby Markers\n    User-\u003e\u003eSearchService: Search Markers Near Current Location\n    SearchService--\u003e\u003eUser: Display Nearby Markers\n\n    Note over Admin, AdminService: Admin Tasks\n    Admin-\u003e\u003eAdminService: Review Markers with Dislikes\n    AdminService--\u003e\u003eAdmin: Display Markers for Review\n    Admin-\u003e\u003eAdminService: Update Marker Status\n    AdminService--\u003e\u003eAdmin: Marker Status Updated\n\n    Note over User, ChatService: Chat Functionality\n    User-\u003e\u003eChatService: Join Marker Chat Room\n    ChatService--\u003e\u003eUser: Joined Chat Room\n    User-\u003e\u003eChatService: Send Message in Chat Room\n    ChatService--\u003e\u003eUser: Message Sent\n\n    Note over User, PopularService: Viewing Popular Markers\n    User-\u003e\u003ePopularService: View Popular Markers\n    PopularService--\u003e\u003eUser: Display Popular Markers\n\n    Note over User, OfflineService: Offline Marker Access\n    User-\u003e\u003eOfflineService: Download Static Map Image\n    OfflineService--\u003e\u003eUser: Static Map Image with Markers\n\n    Note over User, MarkerService: Suggesting Marker Edits\n    User-\u003e\u003eMarkerService: Suggest Marker Edit with Photo\n    MarkerService--\u003e\u003eUser: Edit Suggestion Submitted\n```\n\n- **회원가입 및 로그인**: 사용자 인증을 위한 기본적인 회원가입 및 로그인 기능. (이메일 인증 or 소셜 로그인)\n  - Google/Naver/Kakao 지원\n- **마커 추가**: 턱걸이 바의 위치를 지도에 마커로 표시. 사진과 간단한 설명을 포함할 수 있음.\n- **댓글 기능**: 로그인한 사용자는 각 마커에 댓글을 남길 수 있어 정보 공유가 가능.\n- **마커 공유**: 특정 마커 공유 버튼을 눌러서 링크를 공유가 가능.\n- **근처 턱걸이 바 검색**: 현재 화면 중앙 위치에서 가까운 턱걸이 바를 찾을 수 있는 기능.\n- **필터링**: 신뢰 기반이지만 기본 필터링을 거침\n  - 주소 없는 경우 DB 기록\n  - 대한민국 육지 내에서만 가능\n  - 사진 AI 모델\n  - 위치 추가 제한 구역 설정\n  - 욕설\n- **채팅**: 각 마커마다 채팅 방 + 지역별 채팅 방 (익명)\n- **인기 장소 확인**: 사용자들이 실시간 자주 방문하는 인기 턱걸이 바 위치 확인 기능. (현재 위치 기준 + 전국)\n- **정적 이미지 오프라인**: 오프라인 용도로 철봉 위치들을 PDF로 저장할 수 있는 기능. (카카오맵 정적 이미지 보완)\n- **마커 장소 검색**: 등록된 마커들의 주소 검색 기능\n  - 초성 검색: ㅅㅇㅅ -\u003e \"수원시\"\n  - 전국 5대 지하철 역 검색 가능: \"서울대입구역\" -\u003e 주변 2km 반경 철봉들 불러옴\n  - QWERTY 한글: rPfyd -\u003e \"계룡\"\n- **정보 수정 제안**: 등록된 마커들의 정보 수정 제안 기능 (사진 1장 필수)\n\n### TODO 아이디어\n\n- **커뮤니티 포럼**: 사용자들이 운동 팁, 턱걸이 바 추천 등을 공유할 수 있는 커뮤니티 공간.\n- **이벤트 및 챌린지**: 사용자들이 참여할 수 있는 운동 관련 이벤트 및 챌린지 개최.\n\n### pullup/dips bar detection\n\n\"A nimble AI model, trained on 700 images in August 2024, striving to expertly detect bars with precision.\" (YOLO v8)\n\n![image](https://github.com/user-attachments/assets/d822d93a-9985-480f-acfc-ba44eb4e96dc)\n\n### 기술 스택\n\n![image](https://github.com/Alfex4936/chulbong-kr/assets/2356749/f82e2295-ce31-4b48-af92-20a8471b7155)\n\nhttps://github.com/Alfex4936/chulbong-kr/assets/2356749/913b113c-4a8d-4df1-bb5a-83f6babf7475\n\n- **백엔드**: Go언어 Fiber v2, MySQL, AWS S3, LavinMQ (RabbitMQ), Redis, Bleve (Apache Lucene-like, ZincSearch에서 직접 검색 인덱싱으로 변경)\n  - 메인: Go, 서브: Java (전체 프로젝트 자바로도 작성 중)\n- **프론트엔드**: NextJS (TypeScript), Tailwind css, Storybook, Zustand, Yarn Berry\n- **개발 \u0026 운영 효율성**: pprof, flamegraph, Uber's zap logger, Swagger OpenAPI, Prometheus+Grafana\n- **AI**: YOLO v8, gpt-4o mini\n- **협업**: Slack (+ Slack API)\n\n### 🚀 Project Roles 🚀\n\n- **Backend Development**  \n  👨‍💻 [@Alfex4936](https://github.com/Alfex4936)\n\n- **Frontend Development**  \n  🎨 [@2YH02](https://github.com/2YH02)\n\n\u003e [!NOTE]\n\u003e 대부분 철봉 위치 데이터는 [chulbong.kr](https://chulbong.kr/) 에서 가져왔음을 알립니다. (2차 필터링)\n\n### Data analysis (2024 June ~ 2024 Nov)\n![graph_animated](https://github.com/user-attachments/assets/7c990f2c-d618-4403-9330-35fa2f553c14)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlfex4936%2Fk-pullup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlfex4936%2Fk-pullup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlfex4936%2Fk-pullup/lists"}