중국어과에서 컴퓨터공학과로 전과한 지 얼마 안 됐을 때였다.
말 그대로 (응애응애) 갓 신생아 컴공생 시절.

하필 2학기에 전과를 하게 되면서
실습 위주의 수업을 한꺼번에 듣게 됐고,
그중 하나가 「오픈소스프로그래밍」이었다.
사실 이 과목은
전과를 결심하게 된 이유 중 하나이기도 했다.
(헥헥)
전과 전부터 나는
알고리즘을 도출해서 성능 비교하고,
코딩테스트용 문제를 푸는 것보다는,
"실제로 내가 쓸 수 있고,
상용화까지 상상해볼 수 있는 걸 만드는것"
에 더 흥미를 느끼는 사람이었다.
그래서 이 수업의 프로젝트 주제를 정할 때도
‘기술 과시용’이 아니라
현실에서 문제 되는 걸 해결해보고 싶다는 생각이 컸다.
주제를 고민하던 중,
컴공 전과 후 처음으로 만났던 그 분께서
툭 던지듯 한 단어를 말했다.
"큐싱 어때?"
…그 순간 바로 도파민 터졌다.
(아, 이건 된다 싶었다.)
당시 QR코드를 이용한 서비스가 급격히 늘어나면서
악성 QR코드를 통해 피싱 피해를 입는
큐싱(QR Phishing) 사례도 함께 증가하고 있던 시기였다.
그렇게 최종적으로 제안한 아이디어가
큐싱 피해 방지 자전거 대여 애플리케이션이었다.
당시 QR코드 기반 공유 자전거를 이용하다가
악성 QR코드로 인해 피싱 피해를 입는 사례가 실제로 늘고 있었고,
이 문제는 단순한 불편을 넘어
개인정보 유출과 서비스 신뢰도 하락으로 이어질 수 있었다.
- 큐싱이란
악성 QR코드를 촬영하도록 유도해
악성 앱 설치나 피싱 사이트 접속을 유도하는 공격 방식으로,
도시 내 공유 서비스가 확산될수록
그 위험성도 함께 커지고 있었다.
그래서 우리는
보안성과 편의성을 동시에 만족하는 자전거 대여 플랫폼을
만들어보고자 했다.
기획 단계에서
기존 자전거 공유 앱(T사, A사)의 UX를 분석하면서
여러 불편함을 느꼈고,
기존에 비교적 안정적으로 사용되던
G사의 UX 흐름을 참고해
메인 화면과 주요 버튼 디자인을 설계했다.
단순히 디자인만 비슷하게 가져가는 것이 아니라,
큐싱을 구조적으로 막을 수 있는 기능을 넣는 데 집중했다.
이 프로젝트의 핵심 차별점은 다음과 같다.
👉 즉시 신고 화면으로 전환
신고가 접수되면
관리자가 실시간으로 보고 있지 않더라도
알림을 통해 문제를 인지하고
빠르게 대응할 수 있도록 설계했다.
즉,
사용자가 피해를 입은 ‘이후’ 가 아니라
피해가 발생하기 ‘직전’ 단계에서
문제를 차단하는 구조를 목표로 했다.
(근데 만들고 있는 와중에 타어플에서 이미 똑같은 보안기능 나옴 !! 젠장!!)
이번 프로젝트에서는
단순히 과제를 제출하기 위한 결과물이 아니라,
(언제나 나는)
실제로 동작하는 서비스에 최대한 가까운 형태를 만들어보고 싶었기에..
각 기술은 그 목적에 맞게 선택했다.
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
기획 단계부터
“일단 만들어보자”가 아니라
사용자가 실제로 쓸 화면을 먼저 그리고 싶었다.
Figma를 사용해
앱과 관리자 페이지의 화면 흐름을 미리 설계했고,
미리캔버스는 발표 자료와 디자인 보조용으로 활용했다.
디자인을 먼저 잡아두니
기능 구현 시에도 방향이 흔들리지 않았다.
이 프로젝트는
웹 서비스보다는 실제 앱 형태로 구현해보고 싶었다.
QR 스캔, 센서 연동 등
모바일 환경에서 자연스럽게 동작하는 기능들이 많았기 때문에
안드로이드 네이티브 개발을 선택했고,
Kotlin을 사용해 앱을 구현했다.
백엔드는
모바일 앱과 웹 관리자 페이지를 연결하는 역할이 필요했다.
복잡한 구조보다는
API 중심으로 빠르게 구현하는 것이 목적이었기 때문에
Flask를 사용해 서버를 구성했다.
QR 검증 로직과
신고 및 데이터 처리 API를 중심으로 구현했다.
QR 정보, 신고 내역, 사용자 데이터 등
구조가 고정되지 않은 데이터들이 많았고,
이미지 정보와 함께 처리해야 하는 경우도 많았다.
그래서 정형 데이터베이스보다는
JSON 기반의 반정형 데이터를 유연하게 다룰 수 있는 MongoDB가
더 적합하다고 판단했다.
모바일 앱 외에도
관리자 입장에서 확인할 수 있는 웹 페이지를
간단하게라도 만들어보고 싶었다.
Vue를 사용해
신고 내역과 자전거 상태를 확인할 수 있는
관리자 페이지를 구현했다.
프론트엔드 프레임워크를 실제 서비스에 적용해보는
좋은 경험이 되었다.
단순한 앱 시연에서 끝내고 싶지 않았다.
실제 자전거 센서와 연동해
대여 / 반납 로직이 어떻게 동작할지까지
구현해보고 싶었고,
이를 위해 Arduino를 사용했다.
다만 실제 자전거와 부품이 없는 상황이었기 때문에
3D 프린터로 자전거 모형을 제작해
QR 코드 테스트 환경을 구성했다.
하드웨어까지 포함한 흐름을 직접 만들어본 경험은
이 프로젝트에서 가장 인상 깊은 부분 중 하나였다.
프로젝트에서 나는 다음 역할을 맡았다.
전반적인 프로젝트 매니징과 기획 중심 역할을 담당했다.
첫 프로젝트였고 나름 캡스톤 상대로 교내대회에서 상도 탔지만,
다만 아쉬움도 분명히 남는다.
보안 로직과 백엔드 핵심 구현은
다른 팀원이 주로 담당했기 때문에,
보안과 서버 구조를 더 깊이 파고들지 못한 점이 아쉬웠다.
지금 돌아보면,
그때 조금 더 욕심을 내서
보안 쪽까지 함께 파고들었으면
더 많이 성장할 수 있었을 것 같다.
이 프로젝트는
컴공 전과 후 처음으로
‘문제에서 출발한 서비스’ 를 만들어본 경험이었다.
기술이 목적이 아니라,
현실에서 실제로 발생하는 문제를 어떻게 구조로 풀어낼 것인가를
처음으로 진지하게 고민했던 프로젝트였다.
큐싱 이슈가 한창이던 그때,
나는 이렇게 고민했고
이렇게 하나의 결과물을 만들어냈다.
지금의 나를 만든 꽤 중요한 시작점이었다고 생각한다.
