Skip to main content

Overview

소개

  • Pomodoro technique을 기반으로 하는 공부 & 작업 시간 측정 App입니다.

  • 한 사이클의 작업 시간을 여러 개의 작업 세션들과 이어지는 짧은 휴식 그리고 마지막 긴 휴식으로 나누어 높은 집중력을 유지하는 데 도움을 줍니다. (작업 시간을 pomodoro 또는 pomo라고 부릅니다).

    • One cycle == (pomo + short break) * number of pomos + long break
  • 작업 시간에 대한 통계를 제공하여 사용자의 생산성을 파악하는데 도움을 주고 다양한 Feedback기능을 통해 동기부여가 될 수 있도록 도와줍니다.

만들게 된 계기

  • 원래 사용하던 앱이 있었는데, 일시 정지를 한 번 했을 때 얼마 동안 했는지 기록이 안 되었습니다.
  • 그것을 계기로 제가 원하는 기능들을 추가하면서 배워보자는 생각으로 만들기 시작했습니다.

기술 스택

프론트엔드

HTML, CSS, JavaScript and WEB APIs

TypeScript

  • React
    • useMemo, useCallback, useContext, etc.
  • React Router DOM
    • Nested Routing

HTTP Requests & Authentication

Styling

  • Styled Components, React Inline Style

Etc

  • Recharts
  • idb
    • for a promise-based interface for interacting with Indexed DB
  • date-fns
  • JavaScript Design Patterns
    • Pub/Sub (Publisher-Subscriber Pattern)

백엔드

  • NestJS, Express
  • Firebase Admin
  • MongoDB Atlas, Mongoose, @nest/mongoose

호스팅

기능 요약

아키텍처 (Architecture)

이 프로젝트의 전체 시스템 아키텍처는 C4 모델을 사용하여 표현했습니다. C4 모델은 소프트웨어 시스템을 위성 사진을 보듯 가장 넓은 관점(C1)에서 시작하여, 점차 코드가 있는 상세 레벨(C4)까지 확대하며 설명하는 방식입니다.

System Context Diagram (C1)

이 다이어그램은 우리 '뽀모도로 앱'이 외부 세계와 어떻게 상호작용하는지 보여주는 가장 높은 수준의 지도입니다.

Container Diagram (C2)

위 시스템을 확대한 다이어그램입니다. '뽀모도로 앱'이 어떤 기술적인 컨테이너들(웹 애플리케이션, API 서버, 데이터베이스 등)로 구성되어 있는지 보여줍니다.

Page Screenshots

  • 아래는 각 페이지의 간단한 스크린샷입니다. 구체적인 기능 설명은 'Features' 사이드바 항목에서 다루겠습니다.

/timer

timer-one-cate

세션 진행 도중에 카테고리 바꾼 경우. timer-two-cate

타임라인
timeline

/statistics

Total Graph and Category graph

두번째 그래프에 Uncategorized만 그려짐.
same-week-1

두번째 그래프에 DocumentationDevelopment.
same-week-2

두번째 그래프에 UncategorizedJob Search and Application.
same-week-3

Two graphs show different week data

첫번째 - 11.4 ~ 11.10, 두번째 - 10.28 ~ 11.3.
diff-week-data

첫번째 - 10.28 ~ 11.3, 두번째 - 11.4 ~ 11.10.
diff-week-data-2

Mouse hover over each graph

hover-over-first
hover-over-second

Weekly Trend

weeklyTrend

Goals

Daily goals daily-goals

Weekly goals weekly-goal

/settings

settings-wide-1
settings-wide-2
narrow-settings-1 narrow-settings-2