againworld 개발기 — 레트로 채팅 서비스를 npx 한 줄로

// RECOMMENDED GEAR
Apple 맥북 네오 — A18 Pro칩입문 개발자를 위한 경제형 맥북. Flutter, React 개발에 충분한 성능.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
againworld 개발기 — 레트로 채팅 서비스를 npx 한 줄로
시작은 향수에서
90년대 PC통신 서비스를 아시나요? 나우누리, 천리안, 하이텔…
모뎀 연결음과 함께 접속하면, 텍스트로 가득 찬 화면에 전국의 사람들이 한 방에 모여 대화하던 그 시절. 방도 없고, 프로필도 없고, 그냥 접속하면 모두가 거기 있었습니다.
그 감성을 2026년에 다시 만들어보고 싶었습니다.
컨셉
규칙은 단순합니다.
- 접속하면 랜덤 닉네임이 생성됩니다
- 방이 없습니다 — 전 세계가 하나의 채팅방
- 입장하면 본인에게만
hello again, world.가 출력됩니다 - 터미널을 닫으면 끝
현대의 채팅 서비스처럼 읽음 표시, 알림, 프로필 사진 같은 건 없습니다. 그냥 흘러가는 대화입니다.
기술 스택
TUI 클라이언트: Node.js + TypeScript + Ink (React for CLI)
백엔드: Firebase Realtime Database + Anonymous Auth
배포: npm 패키지 (npx)
처음엔 Firestore를 고려했지만, 채팅처럼 순서가 중요한 데이터는 Realtime Database의 child_added 이벤트가 훨씬 자연스럽습니다. Firestore는 문서 단위 과금이라 메시지가 많아질수록 비용이 증가하지만, RTDB는 전송량 기준이라 단순 채팅에 유리합니다.
TUI 라이브러리는 Ink를 선택했습니다. React 문법 그대로 사용할 수 있어서 러닝커브가 거의 없고, TypeScript 지원도 훌륭합니다.
배포 방식
npx 를 선택한 이유는 단 하나입니다.
진입 장벽을 0에 가깝게
Node.js만 설치되어 있으면 누구나 아래 한 줄로 입장할 수 있습니다:
npx againworld
설치, 설정, 회원가입 — 아무것도 필요 없습니다.
아키텍처 — 확장성을 고려한 설계
MVP는 단순하지만, 백엔드를 처음부터 분리해서 설계했습니다.
Firebase 백엔드 (Realtime Database + Auth)
↓
TUI 클라이언트 (현재)
Web 클라이언트 (추후)
MCP 서버 (추후)
Firebase 하나로 어떤 프론트엔드든 붙일 수 있는 구조입니다. 나중에 웹 버전을 추가하거나, AI가 MCP로 접속하는 것도 가능합니다.
프로젝트 구조
src/
├── core/
│ ├── firebase.ts # Firebase 초기화
│ ├── session.ts # 세션 관리 (~/.againworld/session.json)
│ ├── chat.ts # 메시지 송수신
│ └── nickname.ts # 랜덤 닉네임 생성
└── cli/
├── App.tsx # 메인 앱
├── Header.tsx # 상단 헤더
├── ChatArea.tsx # 메시지 영역
└── InputArea.tsx # 입력 영역
파일당 100줄 이하로 유지하면서, 각 파일이 하나의 역할만 담당하도록 설계했습니다.
세션 유지
npx 로 실행할 때마다 새로운 프로세스가 생성됩니다. 하지만 닉네임과 인증 정보는 유지되어야 합니다.
~/.againworld/session.json 에 Firebase UID와 닉네임을 저장해서, 재접속 시에도 같은 사용자로 인식됩니다.
Firebase 프로젝트 준비
원래 전용 Firebase 프로젝트를 새로 만들려 했지만, GCP 프로젝트 할당량 초과로 막혔습니다. 사용하지 않는 기존 프로젝트를 againworld 로 이름을 바꿔서 재활용했습니다.
Anonymous Auth와 Realtime Database를 활성화하고, 보안 규칙도 설정했습니다:
- 인증된 사용자만 읽기/쓰기 가능
- 메시지 작성자 UID 검증
- 닉네임 2
12자, 메시지 1500자 제한
앞으로
- 접속자 수 실시간 표시
- Rate limit (Cloud Functions, Phase 2)
- 웹 버전
- MCP 지원
지금 당장 한 번 들어와보세요.
npx againworld
이 글 공유하기
// SPONSORED
[>]댓글
아직 댓글이 없어요. 첫 댓글을 남겨보세요!