Skip to content
/ k-pullup Public

카카오 지도 API를 이용하여 모두가 함께 만드는 철봉 지도

Notifications You must be signed in to change notification settings

2YH02/k-pullup

Repository files navigation

pullup - 🇰🇷

k-pullup logo
2024-07-15 pullupbars GitHub commit activity (branch)

gochulbong
we love go~!

🗺️ 프로젝트 소개

pullup-kr은 공공장소에 있는 턱걸이 바를 찾고 공유하기 위한 커뮤니티 플랫폼입니다.

지도 API를 활용하여 사용자는 가입 및 로그인 후 턱걸이 바의 위치를 마커로 추가할 수 있으며,

사진 한 장과 간단한 설명을 함께 업로드할 수 있습니다.

로그인한 다른 사용자는 해당 마커에 댓글을 남길 수 있어, 정보 공유 및 소통이 용이합니다.

🖼️ 구현 UI

메인 화면 검색 (주변 검색, 초성 지원) 위치 채팅
main search chat
거리뷰 (가장 가까운 위치) 댓글 오프라인 저장 (카카오맵)
road view comment offline-pdf
공유, 북마크 이미지 상세 위치 등록
share bookmark image detail set location
위치 삭제 지도 이동 마이페이지, 설정
delete location move map mypage config
정보 수정 요청 수정 요청 승인 반응형
report approve report responsive web

🔧 기술 스택

백엔드

  • Go언어 Fiber v2, MySQL, AWS S3, LavinMQ (RabbitMQ), Redis, Bleve (Apache Lucene-like, ZincSearch에서 직접 검색 인덱싱으로 변경)
  • 메인: Go, 서브: Java (전체 프로젝트 자바로도 작성 중)

프론트엔드

  • NextJS (TypeScript), Tailwind css, Storybook, Zustand, Yarn Berry (현재)
  • React (TypeScript), Tailwind css, React Testing Library, Jest, NPM, Tanstack Query (변경 전)

개발 & 운영 효율성

  • pprof, flamegraph, Uber's zap logger, Swagger OpenAPI, Prometheus+Grafana, Sentry

협업

Slack (+ Slack API)

✨ 기능

sequenceDiagram
    participant User
    participant AuthService as Auth Service
    participant MarkerService as Marker Service
    participant CommentService as Comment Service
    participant ShareService as Share Service
    participant SearchService as Search Service
    participant AdminService as Admin Service
    participant ChatService as Chat Service
    participant PopularService as Popular Service
    participant OfflineService as Offline Service
    participant AddressService as Address Service

    Note over User, AuthService: User Registration and Authentication
    User->>AuthService: Sign Up with Email
    AuthService->>User: Send Email Verification
    User->>AuthService: Verify Email
    User->>AuthService: Login
    AuthService->>User: Authentication Token

    Note over User, MarkerService: Marker Management
    User->>MarkerService: Add Marker with Location, Photo, Description
    MarkerService->>AddressService: Validate Address
    AddressService-->>MarkerService: Address Validated/Failed
    MarkerService-->>User: Marker Added
    User->>MarkerService: View Marker
    MarkerService-->>User: Display Marker Details

    Note over User, CommentService: Commenting on Markers
    User->>CommentService: Add Comment to Marker
    CommentService-->>User: Comment Added
    User->>CommentService: View Comments
    CommentService-->>User: Display Comments

    Note over User, ShareService: Sharing Markers
    User->>ShareService: Share Marker Link
    ShareService-->>User: Marker Link

    Note over User, SearchService: Searching for Nearby Markers
    User->>SearchService: Search Markers Near Current Location
    SearchService-->>User: Display Nearby Markers

    Note over Admin, AdminService: Admin Tasks
    Admin->>AdminService: Review Markers with Dislikes
    AdminService-->>Admin: Display Markers for Review
    Admin->>AdminService: Update Marker Status
    AdminService-->>Admin: Marker Status Updated

    Note over User, ChatService: Chat Functionality
    User->>ChatService: Join Marker Chat Room
    ChatService-->>User: Joined Chat Room
    User->>ChatService: Send Message in Chat Room
    ChatService-->>User: Message Sent

    Note over User, PopularService: Viewing Popular Markers
    User->>PopularService: View Popular Markers
    PopularService-->>User: Display Popular Markers

    Note over User, OfflineService: Offline Marker Access
    User->>OfflineService: Download Static Map Image
    OfflineService-->>User: Static Map Image with Markers

    Note over User, MarkerService: Suggesting Marker Edits
    User->>MarkerService: Suggest Marker Edit with Photo
    MarkerService-->>User: Edit Suggestion Submitted
Loading
  • 회원가입 및 로그인: 사용자 인증을 위한 기본적인 회원가입 및 로그인 기능. (이메일 인증 필요)
  • 마커 추가: 턱걸이 바의 위치를 지도에 마커로 표시. 사진과 간단한 설명을 포함할 수 있음.
  • 댓글 기능: 로그인한 사용자는 각 마커에 댓글을 남길 수 있어 정보 공유가 가능.
  • 마커 공유: 특정 마커 공유 버튼을 눌러서 링크를 공유가 가능.
  • 근처 턱걸이 바 검색: 현재 화면 중앙 위치에서 가까운 턱걸이 바를 찾을 수 있는 기능.
  • 관리자: 자동 1차 필터링 (주소가 없는 경우 db에 기록) + 싫어요 n개 이상 마커들 확인
  • 채팅: 각 마커마다 채팅 방 + 지역별 채팅 방 (익명)
  • 인기 장소 확인: 사용자들이 실시간 자주 방문하는 인기 턱걸이 바 위치 확인 기능. (현재 위치 기준 + 전국)
  • 정적 이미지 오프라인: 오프라인 용도로 철봉 위치들을 저장할 수 있는 기능. (카카오맵 정적 이미지 보완)
  • 마커 장소 검색: 등록된 마커들의 주소 검색 기능 (초성 지원)
  • 정보 수정 제안: 등록된 마커들의 정보 수정 제안 기능 (사진 1장 필수)

TODO 아이디어

  • 커뮤니티 포럼: 사용자들이 운동 팁, 턱걸이 바 추천 등을 공유할 수 있는 커뮤니티 공간.
  • 이벤트 및 챌린지: 사용자들이 참여할 수 있는 운동 관련 이벤트 및 챌린지 개최.

🚀 Project Roles 🚀

🎁🎁🎁

slack

image

visual.mp4

Note

The service is running with Go as backend but Spring boot 3 is also available. (WIP)

대부분 철봉 위치 데이터는 chulbong.kr 에서 가져왔음을 알립니다. (2차 필터링)

About

카카오 지도 API를 이용하여 모두가 함께 만드는 철봉 지도

Resources

Stars

Watchers

Forks

Languages