러닝앱은 많습니다.거리 재고, 페이스 보여주고, 칼로리 계산하고, 기록 저장하고.좋죠. 필요한 기능입니다.그런데 솔직히 말하면, 거기서 끝나는 앱도 많습니다.오늘 5km 뛰었습니다.어제보다 10초 빨랐습니다.이번 달 누적 30km입니다.좋은데… 조금 심심하지 않나요?러닝은 원래 혼자 하는 운동처럼 보이지만, 진짜 오래 뛰게 만드는 건 숫자보다 사람입니다.같이 뛰는 사람, 나보다 조금 앞선 사람, 은근히 신경 쓰이는 크루원, 그리고 “오늘 안 뛰면 순위 내려가겠는데?”라는 작은 자극.런레이스는 바로 그 지점을 파고듭니다.런레이스는 단순한 러닝 기록 앱이 아닙니다.크루가 같이 달리고, 경쟁하고, 응원하고, 보상까지 걸 수 있는 러닝 플랫폼입니다.크루 월간 목표, 이제 말로만 하지 마세요“이번 달 우리 크루 ..
기록만 남기는 러닝앱은 이제 지겹다러닝앱, 다 비슷하지 않나요?거리 재고.페이스 보여주고.칼로리 계산하고.끝.처음엔 신기하지만, 어느 순간부터는 그냥 숫자만 쌓입니다.오늘도 뛰었고, 기록은 남았고, 앱은 조용합니다.그런데 러닝이 정말 그것뿐일까요?런레이스는 다릅니다.런레이스는 단순히 “얼마나 뛰었는지”를 기록하는 앱이 아닙니다.러닝을 더 치열하게, 더 재미있게, 더 계속하고 싶게 만드는 새로운 러닝 플랫폼입니다.혼자 뛰는 러너도 런레이스 안에서는 경쟁할 수 있습니다.목표를 만들고, 챌린지에 참여하고, 기록으로 순위를 확인하고, 나의 달리기가 하나의 레이스가 됩니다.그냥 운동이 아니라, 매일 참여하는 경기.그냥 기록이 아니라, 이기고 싶은 데이터.그냥 러닝앱이 아니라, 러너를 움직이게 만드는 앱.기존 러닝..
웹 어플리케이션에서 사용자에게 푸시 알림을 보내는 기능을 구현하는 방법을 정리해보겠습니다.개요Firebase Cloud Messaging(FCM)은 웹, IOS, Android 앱에서 푸시 알림을 보낼 수 있을 크로스 플랫폼 메시징 솔루션 입니다.Firebase 프로젝트 설정Firebase Console 에 접속새 프로젝트 생성 또는 기존 프로젝트 선택앱 웹 추가 ( 아이콘 클릭)SDK 설정 정보 및 VAPID KEY 발급저는 간단하게 memos 라는 프로젝트에 push라는 이름으로 라는 플랫폼으로 생성했습니다. 좌측상단에 톱니바퀴 > 프로젝트 설정그러면 가이드대로 npm으로 firebase 설치해주고 firebaseConfig는 저장해줍니다. 그리고 위로 올려서 "클라우드 메시징" 탭에서 VAPID ..
의존성 추가dependencies { implementation("org.springframework.boot:spring-boot-starter-batch") implementation("org.springframework.boot:spring-boot-starter-data-jpa") // JPA 사용 시 runtimeOnly("org.postgresql:postgresql") // 데이터베이스에 따라 변경}application.ymlspring: // DB 정보는 알아서 적당히 바꾸시길 datasource: url: jdbc:postgresql://localhost:5432/mydb username: myuser password: mypassword driv..
간단하고 담백하게 설정 방법을 작성하려고 합니다.의존성추가// Swaggerimplementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.5")application.ymlspringdoc: swagger-ui: path: /docs // 경로 커스텀 disable-swagger-default-url: true api-docs: path: /api-docsSwagger Configimport io.swagger.v3.oas.models.OpenAPI;import io.swagger.v3.oas.models.info.Info;import org.springframework.context.annotation.Bean;impor..
https://admin.portone.io/위 사이트에서 가입 후결제연동 > 연동정보에서 테스트 채널을 생성해준다. 대충 요렇게 필요한 채널키와 상점 아이디가 생성이 된다.서버구성결제 창 띄우기 위한 경로만 설정더보기import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class ViewController { @GetMapping("/") public String movePayment() { return "payment"; }} 스프링에 내장된 templates 활용했다.(/src/main/resource..
