사이드 프로젝트 - FocusPot

wjd15sheep·2026년 5월 27일

프로젝트

목록 보기
12/12

FocusPot 🐾 — 프로젝트 기획안 v1.6

친구들과 함께하는 데스크탑 오버레이 타이머


다른 분의 아이디어로 시작하는 프로젝트로 클론 및 성능 개선하여 모두 사용할 수 있는

01. 프로젝트 컨셉

공부하거나 다른 앱을 사용할 때도 유튜브 PiP처럼 화면 위에 항상 떠있는 오버레이 앱.
Electron 데스크탑 앱을 설치 후 실행하면, 방에 접속해 친구들과 시간을 실시간으로 공유한다.
로그인 없이 닉네임과 내 PC의 이미지/GIF 파일을 골라 바로 참여할 수 있다.

각자 하고 싶은 걸 하면서도 "나 이만큼 하고 있어"를 함께 나누는 공간 — FocusPot.

🐱🐹🐶 기본 캐릭터

프로필 설정 시 직접 파일을 고르지 않으면 기본 이미지로 자동 적용된다.

캐릭터이미지
고양이노트북 하는 고양이 이미지
햄스터노트북 하는 햄스터 이미지
강아지노트북 하는 강아지 이미지

02. 확정 기능

🏠 방 시스템

  • 6자리 코드로 방 생성 및 친구 초대
  • 로그인 없이 닉네임 + 이미지/GIF 선택 후 바로 참여
  • 방 최대 인원 6명
  • 인터넷으로 어디서든 접속 가능

🐾 캐릭터 설정

  • 닉네임 입력
  • 기본 캐릭터 3종 중 선택 (고양이 / 햄스터 / 강아지) 또는 내 PC에서 이미지(PNG/JPG)/GIF 직접 업로드
  • 선택한 파일은 base64로 인코딩되어 WebSocket으로 전송 → 친구들 화면에 바로 표시
  • 서버나 클라우드에 파일 저장 없음 — 세션 동안만 메모리에서 유지

⏱️ 타이머

  • 방 입장 시 타이머 자동 시작, 모든 친구와 실시간 동기화
  • 타이머 숫자 클릭 → 정지 / 다시 클릭 → 재개 (토글)
  • 별도 버튼 없음 — 타이머 자체가 버튼

💬 말풍선 (채팅 앱 스타일)

  • 내 말풍선 클릭 → 텍스트 + 이모지 피커 팝업
  • 텍스트와 이모지를 자유롭게 조합 (예: 집중 중.. 🔥)
  • 완료 시 방 안 모든 친구에게 실시간 공유
  • 친구 카드 말풍선은 읽기 전용

🖥️ 오버레이

  • 항상 최상단 — 어떤 앱 위에서도 보임
  • 투명 배경 — 캐릭터와 타이머만 떠있는 느낌
  • 드래그로 화면 원하는 위치 자유 이동
  • 오버레이 크기 조절 (소 / 중 / 대)

🔌 솔로 모드 (오프라인)

  • 인터넷 연결 없이도 혼자 타이머 사용 가능
  • 캐릭터 선택 후 바로 오버레이 타이머 시작
  • WebSocket 연결 없이 로컬에서만 동작

📦 확장 예정 (v2)

  • 로그인 / 계정 시스템 (캐릭터 설정 저장, 기록 누적)
  • 누적 시간 통계 및 랭킹

03. 비기능 요구사항

항목내용
인증로그인 없이 즉시 사용 가능
동시 접속방 최대 6명 동시 접속 지원
오버레이항상 최상단, 어떤 앱 위에서도 표시
실시간성타이머·말풍선·이미지 즉시 동기화
보안이미지 파일 서버 저장 금지 (세션 메모리만 유지)
오프라인인터넷 없어도 솔로 타이머 기능 사용 가능
멀티플레이방 기능은 인터넷 연결 필요

04. 화면 구성 및 사용자 흐름

화면 목록

화면이름주요 요소
시작 화면앱 로고(FocusPot), 혼자하기 / 같이하기 선택
방 선택방 만들기 / 참가하기 (같이하기 선택 시만, 인터넷 연결 확인)
프로필 설정닉네임 입력, 기본 캐릭터 선택 or PC에서 이미지/GIF 파일 업로드
오버레이 메인 ★캐릭터 + 타이머 (솔로: 1인 / 멀티: 친구 카드 가로 나열)

사용자 흐름

앱 시작
  ├── 혼자하기 → 캐릭터 선택 → 오버레이 (솔로 타이머)
  │
  └── 같이하기 → 인터넷 연결 확인
                   ├── 연결 실패 → 경고 메시지
                   └── 연결 성공 → 방 만들기 or 참가하기
                                     └── 캐릭터 선택 → 오버레이 (멀티 타이머)

05. 오버레이 카드 구조 (1인당)

[ 말풍선: 집중 중.. 🔥 ]
         |
    [ 캐릭터 이미지/GIF ]
    [ 01:23:45 ] [ 나가기 ]

말풍선 입력 방식 (채팅 앱 스타일)

┌─────────────────────────────┐
│ 집중 중.. 🔥                 │  ← 말풍선 미리보기
├─────────────────────────────┤
│ [텍스트 입력란        ] 😊  │  ← 이모지 피커 버튼
│                  [ 완료 ]   │
└─────────────────────────────┘

카드별 권한

요소내 카드친구 카드
말풍선클릭해서 수정 가능읽기 전용
캐릭터 이미지/GIF표시표시
타이머클릭으로 정지/재개읽기 전용
나가기 버튼클릭 시 방 퇴장, 친구들 화면에서 내 카드 즉시 사라짐표시 안 됨

06. 기술 스택

🖥️ 클라이언트 (Electron 데스크탑 앱)

기술역할숙련도
Electron데스크탑 앱, 항상 최상단 투명 오버레이 창, 로컬 파일 접근새로 배움
React + TypeScriptUI 전체 구성기존 경험
Vite빌드 도구 (Electron에 최적화)새로 배움 (쉬움)
Tailwind CSS스타일링기존 경험

☕ 백엔드 (Spring Boot 서버)

기술역할숙련도
Java + Spring Boot방 관리 REST API 서버기존 경험
Spring WebSocket + STOMP타이머·말풍선·이미지(base64) 실시간 동기화새로 배움 (Spring Boot 확장)

🚀 배포 & 인프라

기술역할숙련도
AWS EC2Spring Boot 서버 배포기존 경험
GitHub형상 관리기존 경험
GitHub ActionsElectron 앱 자동 빌드 (.exe / .dmg)새로 배움 (쉬움)

🗂️ 아키텍처 흐름

[Electron 앱 (React + Vite)]
  ↓ 로컬 파일 선택 또는 기본 캐릭터 선택 (이미지/GIF)
  ↓ base64 인코딩
        ↕ HTTP (REST)       → 방 생성/참여
        ↕ WebSocket (STOMP) → 타이머 동기화, 말풍선, 이미지(base64) 공유
[Spring Boot 서버 — AWS EC2]
  → 방 안 모든 클라이언트에 브로드캐스트 (파일 저장 없음)

📌 새로 배울 것 (3가지)

  1. Electron — 로컬 파일 접근 + 투명 오버레이 창. 난이도 낮음.
  2. Spring WebSocket + STOMP — Spring Boot 의존성 추가 후 어노테이션 방식. 난이도 낮음.
  3. Vite + GitHub Actions — 설정 파일 수준. 난이도 매우 낮음.

07. 개발 로드맵

단계내용
1단계Electron + Vite + React 셋업, 투명 오버레이 창, 드래그 이동 구현 ✅
2단계시작 화면 (혼자하기/같이하기), 방 선택, 프로필 설정, 솔로 타이머 오버레이 UI
3단계Spring Boot 서버, WebSocket/STOMP 방 시스템, 멀티 타이머·말풍선 동기화, EC2 배포
4단계이미지/GIF base64 전송 및 친구 카드 렌더링, 말풍선 이모지 피커
5단계디자인 다듬기, GitHub Actions로 .exe / .dmg 자동 빌드
v2로그인/계정, 캐릭터 설정 저장, 누적 기록, 통계, 랭킹

0개의 댓글