서비스 정의
Forkarium(포카리움)은 사람, 작품, 회사, 장소가 서로 어떻게 이어져 있는지, 그 연결이 언제 어떻게 바뀌었는지, 지금은 어떤 연결이 뜨거운지 기억하는 소셜 위키입니다. 글을 쓰면 그 안의 항목이 잡혀 서로 이어지고, 이어진 이유가 남습니다. 위키가 도시의 건물 하나하나를 설명하는 안내서라면, 포카리움은 사람들이 함께 그리는 지하철 노선도입니다. 환승 정보와 혼잡도까지 보여 주지만, 건물의 역사는 설명하지 않습니다. 슬로건 “호기심을 잇고, 지식을 쌓다"는 이 흐름을 한 줄로 압축한 말입니다.
해결하려는 문제
위키는 정리된 지식을 읽기에 좋지만, 누가 어떤 궁금증을 품고 그 문서를 찾았는지는 남기지 않습니다. 반대로 소셜 피드에는 감상과 질문이 넘치지만 하루만 지나도 아래로 밀려납니다. 포카리움은 둘을 한 서비스로 묶었습니다. 글은 문서로 들어가는 입구가 되고, 문서는 다음 글의 재료가 됩니다. 흘러가 버리던 궁금증이 쌓일 자리가 생긴 것입니다.
관계를 자동으로 모으면 신뢰 문제도 따라옵니다. 기계가 뽑은 관계와 사람이 판단해 이은 링크가 뒤섞이면 읽는 사람은 무엇을 믿어야 할지 알기 어렵습니다. 그래서 처음부터 링크마다 어디에서 왔는지를 따로 기록합니다.
핵심 타깃
- 작품과 인물을 따라 읽는 사람: 영화, 드라마, 게임을 보고 출연진과 성우, 이어지는 작품까지 찾아보는 사람
- 아는 것을 보태는 사람: 문서에 내용과 출처를 더하고, 두 항목이 왜 이어지는지 이유를 적어 두는 사람
- 읽어 온 길을 남기는 사람: 탐색한 순서를 저장했다가 나중에 이어 읽거나 다른 사람과 나누려는 사람
핵심 사용자 흐름
- 글로 시작한다: 짧은 감상이나 질문을 쓰면 본문에 적힌 인물, 작품, 단체 이름이 해당 문서에 자동으로 붙음. 작성자가 하나씩 확정하거나 뺄 수 있음
- 문서를 연다: 아직 보강되지 않은 항목을 열면 공개 출처에서 관계를 읽어 오고, 찾아낸 링크가 하나씩 선을 그리며 떠오름
- 링크를 따라간다: 관계별로 이어진 다음 항목으로 넘어가는 동안 들른 곳이 로그인 없이도 탐험 경로에 쌓임
- 저장하고 갈라진다: 경로를 발자취로 저장해 공유하고, 다른 사람의 발자취 중간 지점에서 갈라져 내 경로를 이어 감
주요 기능
- 함께 고치는 위키 문서: 누구나 본문을 편집하고 출처를 보탬. 편집한 판은 모두 남으며, 되돌릴 때도 앞선 판을 지우지 않고 새 판으로 쌓음
- 출처 세 갈래: 웹 출처에서 가져온 사실(W), 사람이 이유를 적어 이은 링크(@), 기계가 뽑은 검증 전 후보(AI)를 글자와 색으로 구분
- 문서 링크와 역링크: 편집기에서 다른 문서를 찾아 링크를 넣고, 미리보기와 역링크를 통해 거꾸로도 찾아감. 본문 속 링크는 사실 관계로 치지 않음
- 발자취 편집과 공유: 저장한 경로의 순서를 바꾸거나 항목을 빼고, 들른 항목마다 한 줄 메모를 남김. 항목을 공유하면 거기까지 온 길이 링크에 실려 받는 사람의 화면에서 한 칸씩 펼쳐짐
- 첫 화면의 뜨거운 링크: 홈은 검색으로 시작하며, 그 아래에는 최근 14일 동안 양쪽 항목에 글이 붙었거나 누군가 이유를 새로 적은 링크를 실제 글 수와 함께 보여 줌. 글 목록은 팔로우 탭과 글 탭으로 옮김
- 변화의 기록: 항목과 관계 지면에는 링크가 언제 생겼고, 바뀌었으며, 끝났는지를 날짜순으로 남김. 날짜는 소식 글과 출처에 적힌 날짜에서 가져오며, 사건은 별도 항목이 아니라 이 기록의 한 줄로 남음
- 탐색 시작과 우연한 발견: 검색어가 없어도 확인된 관계 두 개로 이어진 발견 카드를 펼쳐 볼 수 있으며, 우연한 발견 지면은 열 때마다 새로 섞임
- 항목 우주: 서로 이어진 항목들을 3차원 별자리로 띄워 전체 지형을 훑어보는 지면
- 읽기 목록: 나중에 읽을 문서를 로그인 없이도 지금 쓰는 브라우저에 보관함(기기 사이 동기화가 없다는 점을 화면에 밝힘)
- 공식 계정의 소식: 공식 계정 @forkarium 하나가 어떤 관계가 언제 생겼고 바뀌었는지를 평서문으로만 씀. 캐릭터 말투를 쓰거나 질문형으로 마무리하지 않으며, 관계 변화의 근거를 대지 못한 초안은 올리지 않고 검토로 넘김
- 5개 언어: 한국어, 영어, 일본어, 중국어 간체, 번체
서비스 설계 포인트
- 출처의 성격부터 가른다: 언어 모델은 백과사전 요약문에 담긴 관계를 구조로 옮기기만 함. 실제 항목으로 확인된 결과만 링크가 되며, 그마저 검증 전 후보로 표시됨. 사람이 이은 링크와 같은 칸에 섞지 않음
- 미리 긁어 두지 않는다: 전체를 한꺼번에 수집하지 않고, 누군가 항목을 열 때 필요한 만큼만 보강함
- 봇은 스스로 밝힌다: 봇 글에는 자동 생성 배지와 번호가 붙은 출처 목록이 달리고, 봇이 이은 링크도 기계 후보로 표시됨. 봇은 사람 글에 댓글도 반응도 달지 않으며, 민감한 주제는 검토를 거친 뒤에만 올라감
- 없는 수치는 만들지 않는다: 많이 본 항목, 팔로우, 분야별 목록은 실제 값이 있을 때만 보이고, 비어 있으면 그 칸을 뺌. 출처에 없는 숫자가 들어간 봇 초안은 바로 올리지 않고 검토로 넘김
- 얇은 지면은 색인하지 않는다: 내용이 충분한 문서, 일정 길이를 넘는 글, 제목이 붙은 경로만 사이트맵에 싣고 나머지는 noindex로 둠
- 캔버스는 한 지면에만: 문서 안의 관계는 세로 노선 하나를 따라 읽는 HTML로 두고, 그래프 캔버스는 항목 우주에서만 씀
기술 스택
- Frontend: Next.js 15 (App Router), 서버 렌더링과 스트리밍
- Hosting: Firebase App Hosting (
mainpush가 곧 배포) - Database: Cloud SQL for PostgreSQL (공유 인스턴스의
forkarium데이터베이스). 브라우저는 DB에 직접 연결하지 않으며, 모든 쓰기는 Next 서버의 라우트 핸들러가 처리 - Auth: Firebase Auth (Google 로그인), 라우트마다 ID 토큰 검증
- Analytics: Google Analytics 4
- Media: Firebase Storage (외부 이미지는 복사해 두고 원본 출처를 기록하며, 사용자 사진은 브라우저에서 줄인 뒤 webp로 다시 인코딩)
- Knowledge sources: Wikidata 구조화 데이터, 위키백과 요약문
- Automation: GitHub Actions 크론이 3시간마다 공식 계정의 소식 봇을 실행