LottoFlex 개발기 | MBTI 성향별 번호 추천, 스크래치, 복권 가계부까지

LottoFlex 개발기 — MBTI로 번호를 뽑는 로또 웹앱

로또 번호 생성기는 많지만, 대부분 "랜덤 6개"가 전부입니다. 이번엔 반대로 "재미"에 집중했습니다. MBTI 성향별 번호 추천, 스크래치, 당첨 위시리스트, 복권 가계부까지 — 로또 구매의 설렘을 늘려주는 웹앱 LottoFlex의 개발 과정입니다.

로또 용지를 사서 긁는 그 순간의 설렘은 누구나 압니다. 그런데 번호를 찍는 순간은 왜 이렇게 밋밋할까? "번호 고르는 행동 자체를 재미있게 만들면 어떨까"라는 질문에서 이 프로젝트가 시작됐습니다.

1. 세 가지 생성 모드: 자동, MBTI, 스크래치

단순 랜덤 하나로는 부족하다고 판단해 생성 방식을 세 가지로 나눴습니다.

모드동작 방식재미 포인트
자동전통적인 랜덤 6개 생성빠르고 심플
MBTI12문항 테스트 → 16가지 성향별 맞춤 번호"내 성향 번호"라는 소속감
스크래치긁으면 번호가 나타나는 인터랙션로또 용지 긁는 촉감 재현

MBTI 모드가 가장 재미있었습니다. 12문항 간편 테스트를 앱 안에 넣고, 각 성향마다 번호 생성 규칙을 다르게 부여했습니다. 예를 들어 계획형(J)은 연속 번호를 선호하고, 탐구형(N)은 흩어진 번호를 선호하는 식으로요. 물론 실제 당첨 확률과는 무관하지만, "이 번호는 나를 위한 번호"라는 감성이 생기는 게 중요했습니다.

2. 스크래치: CSS와 이벤트로 구현한 긁기

스크래치 기능은 HTML Canvas의 globalCompositeOperation = 'destination-out'을 이용해 구현했습니다. 마우스나 터치로 긁으면 그 부분이 지워지고, 일정 비율 이상 긁으면 번호가 나타나는 구조입니다.

ctx.globalCompositeOperation = 'destination-out'
ctx.lineWidth = 30
ctx.lineCap = 'round'
// 포인터 이동 이벤트마다 선을 그려 스크래치 구현

모바일 터치와 데스크톱 마우스 이벤트를 함께 처리해야 해서 이벤트 정규화가 필요했고, 이 부분이 생각보다 까다로웠습니다.

3. 당첨 위시리스트와 복권 가계부

재미는 기능으로 계속 이어져야 합니다. 번호를 뽑고 나면 "당첨되면 할 일" 위시리스트를 이모지와 함께 적을 수 있게 했고, 매주 구매한 복권 금액을 기록하는 복권 가계부도 넣었습니다. 지출이 쌓이면 "공익기여 금액"으로 자동 계산해 보여주는 게 포인트였습니다. 매주 5,000원을 썼다면 그만큼 복권기금에 기여한 셈이라는, 살짝 긍정적인 프레임 말이죠.

4. 생성 번호 보관함과 공유

생성한 번호는 최대 20개까지 보관함에 저장하고, 모바일 공유 API(Web Share API)나 클립보드 복사로 친구에게 보낼 수 있게 했습니다. 다크모드 전용의 화려한 네온 디자인은 토이프로젝트라서 더 과감하게 가져가 봤습니다.

핵심 정리
  1. 도구의 가치는 기능 수보다 "사용자가 느끼는 감성"에서 나옵니다.
  2. MBTI라는 유행 주제를 기능에 녹이니 공유율이 크게 올랐습니다.
  3. Canvas의 destination-out 하나로 스크래치 인터랙션을 구현할 수 있습니다.
  4. 가계부처럼 재미없을 수 있는 기능도 "공익기여"라는 프레임으로 바꾸니 사랑받았습니다.
참고
로또 당첨 번호는 완전한 확률 게임이며, 어떤 생성 방식도 당첨 확률을 높이지 않습니다. 즐거운 취미로만 즐기세요.
LottoFlex JavaScript Canvas MBTI PWA 토이프로젝트