2025.01 ~
2026.03 iOS App Store · Google Play 정식 출시
기획·설계·개발·배포·운영 1인 수행. 웹 앱 + Expo 네이티브 Shell 하이브리드 구조.
소개
디지털 환경에서의 정서적 고립을 해소하고 싶어 만든 익명 P2P 힐링 커뮤니티입니다. 누군가와 연결되고 싶지만 신분을 드러내기 어려운 순간을 위해, 완전한 익명성을 보장하면서도 진심 어린 대화가 가능한 공간을 만들었습니다.
익명으로 고민이나 소원을 원석으로 올리면, 다른 사람들이 위로의 말을 조약돌로 하나씩 얹어줍니다. 조약돌이 지정 개수에 도달하면 돌탑이 완결됩니다.
전통 탁본(拓本)처럼 마음에 남는 글을 스냅샷으로 보관합니다. 원본이 삭제되어도 탁본은 사라지지 않습니다. 원석 작성자는 마음에 드는 조약돌에 쪽지를 끼워 감사를 전할 수 있습니다.
닉네임·프로필 없이 익명 캐릭터(쉐도우)로만 활동합니다. 조약돌 작성·출석 체크·탁본 받기로 선함 포인트를 쌓고, 커뮤니티 원칙을 함께 지킵니다.
“당신이 쌓은 돌 하나가 누군가의 하루를 버티게 합니다.”
길가의 돌탑 문화에서 영감을 받았습니다. 지나는 이마다 돌을 하나씩 얹으며 안녕을 빌었던 전통처럼, 사용자들이 익명의 공간에서 고민이나 소원을 내려놓고, 타인의 이야기 위에 위로를 얹을 수 있는 서비스를 만들었습니다.
SNS에는 자신을 드러내기 어렵고, 가까운 지인에게는 솔직하기 어려운 순간이 있습니다. 이 간극을 해소하기 위해, 선함연구소라는 개인 브랜드 아래 완전한 익명성을 보장하면서도 진심 어린 위로가 오가는 커뮤니티를 기획·설계·개발·운영하고 있습니다.
2026년 3월 iOS App Store, Google Play에 정식 출시했습니다.
돌들의 숲 (Turborepo 모노레포)
├── 웹 앱 (frontend) — 실제 앱 UI (React SPA)
├── 네이티브 쉘 (native) — iOS / Android WebView 하이브리드
├── 백엔드 (backend) — GraphQL API 서버
├── 랜딩 (landing) — 서비스 소개 · 다운로드 안내
└── 어드민 (admin) — 내부 운영 관리 도구네이티브 앱은 Expo WebView Shell로 앱스토어 배포를 담당하고, 실제 UI는 React 웹 앱이 렌더링합니다. 소셜 로그인·광고·추적 권한 등 네이티브 기능은 WebView 브릿지(window.nativeBridge)를 통해 웹 앱에 노출하며, 웹 앱 업데이트는 앱스토어 심사 없이 바로 배포할 수 있습니다.
| 서비스 용어 | 은유 | 의미 |
|---|---|---|
| 원석 | 마음에 담은 돌 | 사용자가 숲에 내려놓는 고민이나 소원 |
| 조약돌 | 함께 쌓아가는 작은 돌 | 원석에 올려놓는 위로·응원 답변 |
| 탁본 | 돌에 새긴 흔적을 종이에 옮기는 전통 | 인상 깊은 글의 영구 스냅샷 |
| 선함 | 쌓인 선한 행동들 | 활동으로 획득하는 포인트 단위 |
| 돌탑 완결 | 충분한 돌이 쌓인 탑 | 지정 개수 이상의 조약돌이 쌓인 상태 |
서비스의 핵심입니다. 사용자는 고민이나 소원을 원석으로 올리고, 다른 사용자가 위로·응원을 조약돌로 쌓아줍니다. 조약돌이 지정 개수에 도달하면 돌탑이 완결됩니다.
원석은 수정·삭제 없이 숨김 처리만 가능합니다. 진정성 있는 기록으로 남기기 위한 의도적인 설계입니다. 생성 후 30일이 지나면 자동 삭제되어 이야기의 생명주기를 만듭니다.
마음에 남는 글을 스냅샷으로 영구 보관합니다. 원본이 삭제되어도 탁본은 사라지지 않습니다. 한지·화선지 느낌의 베이지 그라데이션과 먹물 텍스트 효과로 아날로그 탁본의 정서를 디지털로 재현했습니다.
원석 작성자가 마음에 드는 조약돌에 감사·반응 메시지를 끼워 넣을 수 있습니다. 1:1 DM이 아니라 조약돌(콘텐츠)에 첨부되는 개념으로, 서비스의 익명성 원칙을 유지합니다. 두루마리 펼쳐지는 애니메이션과 종이 재질 텍스처 바텀시트로 표현됩니다.
| 획득 행동 | 선함 |
|---|---|
| 조약돌 작성 | +1 |
| 내 글이 탁본됨 | +1 |
| 출석 체크 (1일 1회) | +1 |
획득한 선함으로 탁본 슬롯을 추가할 수 있습니다. 무과금 사용자도 모든 핵심 기능을 이용할 수 있도록 결제는 ‘후원’ 또는 ‘편의 가속’으로 포지셔닝했습니다.
닉네임·프로필 사진 없이 익명 캐릭터(쉐도우)로만 활동합니다. 이메일 인증과 소셜 로그인(Apple·Google)을 지원하며, 계정 정보는 서비스 내부에서 노출되지 않습니다. 만 19세 이상만 가입 가능합니다.
iOS WebView에서 비 user-gesture 컨텍스트의 focus()가 무시되는 제약을 해결하기 위해, 단일 물리 input 엘리먼트를 step 간 재사용해 iOS 포커스 연속성을 확보했습니다. 활성 필드는 키보드 바로 위에 고정되고, 완료된 값은 마스킹 칩으로 누적됩니다.
Apple App Store Guideline 1.2(UGC Safety)를 충족합니다. 콘텐츠 차단(발길질), 사용자 차단, 신고·이의 신청, 누적 신고 기반 자동 제재 단계를 갖추고 있습니다.
| 레이어 | 기술 |
|---|---|
| 웹 앱 | React 19, Vite, TypeScript, TanStack Router, Relay, Tailwind CSS v4, Three.js |
| 네이티브 쉘 | Expo SDK 55, React Native, react-native-webview |
| 백엔드 | Cloudflare Workers, Hono, GraphQL Yoga, Pothos, Prisma |
| 데이터베이스 | Cloudflare D1 (SQLite) |
| 인프라 | Cloudflare (Workers, D1, KV, Durable Objects) |
| 이메일 | Resend |
| 랜딩 | Astro 5, Tailwind CSS |
| 모노레포 | Turborepo, Bun |
graphql-schema)로 공유합니다.