Muhammad Arslan
고용하기
프로젝트로 돌아가기

Halatap

단일 대시보드에서 현대적인 명함을 제작, 공유하고 이메일, QR, vCard, Apple Wallet으로 내보낼 수 있는 플랫폼입니다.

역할: Front-end and feature engineer (multi-developer team)일정: 2025-2026유형: Full-stack web app

Next.js 16

React 19

TypeScript

Convex

Tailwind CSS 4

Radix UI

Resend

샘플 프로필이 적용된 Halatap 인터랙티브 디지털 명함 미리보기

개요

Halatap은 기존 종이 명함을 언제든 최신 상태로 유지할 수 있는 디지털 명함으로 대체합니다. 사용자마다 템플릿 세트를 기반으로 명함을 제작할 수 있는 대시보드가 제공되며, 상황에 맞게 다양한 방식으로 공유할 수 있습니다: 공개 링크, QR 코드, 이메일, 다운로드 가능한 연락처 파일, 또는 Apple Wallet에 바로 저장되는 패스 형태가 지원됩니다. Next.js와 Convex 기반으로 구축된 풀스택 앱으로, 보안 계정 체계, 실시간 데이터 동기화, 영어 및 아랍어 지원을 완벽히 갖추고 있습니다.

문제점

종이 명함은 시대에 뒤떨어지게 되었습니다. 직책이나 전화번호가 바뀌는 순간 정보는 낡은 것이 되고, 잃어버리기 쉬우며, 오직 하나의 물리적 형태로만 존재합니다. 디지털 공유 역시 단일 진실 공급원이 없어 링크, PDF, QR 코드, 메시징 앱 등에 파편화되므로 실질적으로는 나을 것이 없습니다. 게다가 글로벌 사용자는 둘 이상의 언어로 된 명함이 필요하고, 기업 팀 단위에서는 한 번에 하나씩이 아닌 여러 명함을 일괄 생성하는 방법이 필요합니다. Halatap은 이 모든 문제를 단일 시스템으로 통합하고자 했습니다.

내 역할 및 접근 방식

본 프로젝트는 팀 단위로 진행되었으며, 저는 다른 개발자들과 협업하여 프론트엔드 전반과 다수의 엔드투엔드 기능 개발에 참여했습니다. 작업 범위는 명함 제작 및 대시보드 환경, 공유 플로우, 그리고 앱 외부에서도 명함을 유용하게 활용할 수 있도록 해주는 연동 기능(지갑 패스, vCard 내보내기, 이메일 전송)을 아울렀습니다. 개발 전반에 걸친 기본 접근 방식은 제품의 모듈성을 유지하는 것이었습니다. 단일 템플릿 시스템이 편집기 미리보기와 공개 명함 양쪽에 동일하게 연결되고, 단일 명함 스키마가 개별 명함 생성과 대량 가져오기를 모두 지원하도록 하여 기능들이 갈래를 치지 않고 동일한 토대를 재사용하도록 구축했습니다.

기술 스택

프레임워크Next.js 16 (App Router) with React 19 and TypeScript
백엔드Convex for the real-time database, queries, and mutations
스타일링 / UITailwind CSS 4 with Radix UI primitives
인증custom email/password plus Google OAuth
이메일Resend, through the Convex integration
지갑 패스passkit-generator with node-forge for certificate signing
추가 기능Jotai for local state, Framer Motion for transitions, react-qr-code, Sonner for notifications

주요 기능

템플릿 기반 명함 빌더미리보기와 실제 공개 명함이 동일한 컴포넌트에서 렌더링되어 디자인한 그대로 공유되는 다양한 템플릿 제공.
다중 명함 관리 대시보드한 곳에서 개수 제한 없이 명함을 생성, 편집, 복제, 삭제 및 공유.
공개 및 비공개 공유공개 명함은 링크를 통해 열리며, 비공개 명함은 백엔드에서 특정 수신자 이메일로만 접근을 제한.
이메일 공유Resend를 통해 링크와 안내 문구가 첨부된 명함 초대장 발송.
Apple Wallet 패스명함별 맞춤 색상, 공개 링크 연결용 QR 바코드, 현지화 필드가 적용된 서명된 PKPass 생성.
vCard 내보내기스마트폰 주소록에 바로 추가할 수 있는 연락처 데이터 다운로드.
대량 CSV 업로드식별 필드, 소셜 링크, 행별 이미지를 매핑하여 다수의 명함을 한 번에 가져오기.
이중 언어 지원주요 필드의 영어 및 아랍어 버전을 UI와 생성된 패스 모두에서 처리.

갤러리

샘플 프로필 및 연락처 정보가 표시된 Halatap 명함 편집기
샘플 웹사이트 URL이 포함된 Halatap 소셜 링크 편집기

도전 과제 및 해결 방안

접근 권한 제어는 복잡하게 얽히지 않으면서도 유연해야 했습니다. 공개 명함과 비공개 명함은 서로 다른 규칙이 필요하므로, 명함과 수신자에 연결된 전용 공유(shares) 테이블로 공유 관계를 모델링했습니다. 공개 접근은 명함이 명시적으로 '공개'로 지정된 경우에만 허용되며, 이 검증 로직은 UI 곳곳에 분산시키지 않고 명함 조회 쿼리 내부에서 직접 수행됩니다.

인증은 외부 솔루션에 완전히 의존하지 않고 직접 구축했기에 각별히 신경 써야 했습니다. 비밀번호는 평문 저장 대신 Web Crypto API를 통해 솔트 처리된 PBKDF2로 해싱하며, 재설정 토큰은 유효 시간이 제한되고 한 번 사용되면 만료 처리됩니다. 가장 구현 난도가 높았던 기능은 Apple Wallet 패스 생성이었습니다. 인증서 기반 서명, 규격에 맞는 번들 에셋, 임베디드 QR 페이로드, 포맷팅된 다국어 필드가 필요하며, 이 모든 항목이 온디맨드로 생성되어 올바른 콘텐츠 타입과 함께 반환됩니다. 개인 사용자와 기업 팀을 모두 지원하는 과제는 일반 생성 플로우와 별도의 CSV 대량 가져오기 경로 전반에서 단일 명함 스키마를 재사용함으로써 해결했습니다.

결과

Halatap은 디지털 명함이 갖춰야 할 본질을 충실히 구현합니다. 웹, 이메일, QR, 연락처 파일, Apple Wallet 전반에서 2개 국어로 연동되는 수정 가능한 단일 프로필을 개인과 팀 모두에게 제공합니다. 특히 지갑 패스와 대량 가져오기 기능은 단순한 "프로필 페이지" 수준을 넘어 실제 비즈니스 현장의 다채널 공유 환경에 부합하는 제품으로 차별화해 줍니다.

유사한 프로덕트 문제가 있으신가요?

현재 프로덕트 현황, 필요한 결과, 직면한 제약 사항을 공유해 주세요. 이를 바탕으로 합리적인 첫 번째 마일스톤을 정의해 드립니다.

풀스택 개발자 채용
프로젝트 브리프 시작하기
전체 프로젝트다음 프로젝트MLZ-Advanced
Halatap: Apple Wallet 및 vCard를 지원하는 디지털 명함 플랫폼 | Muhammad Arslan