Skip to content

Repository files navigation

Focus Tracker Backend

1. 프로젝트 설명

Focus Tracker는 사용자의 집중 루틴과 학습 세션을 기록하고 집중도를 수치화하여 관리할 수 있도록 만든 백엔드 API 프로젝트이다.

사용자는 루틴을 생성하고, 각 루틴에 대해 집중 세션을 시작/종료할 수 있으며 세션 종료 시 집중 점수를 기록할 수 있다. 또한 누적된 데이터를 기반으로 일별/요약 통계를 조회할 수 있다.

본 프로젝트는 FastAPI 기반 REST API로 구현되었으며, Docker 환경에서 MySQL, Redis와 함께 실행된다.


2. Swagger 주소

Swagger UI를 통해 모든 API를 테스트할 수 있다.

http://113.198.66.75:10031/docs
  • 서버 주소: 113.198.66.75
  • 포트 번호: 10031

3. API Root 주소

모든 API는 아래 Root 경로를 기준으로 제공된다.

http://113.198.66.75:10031/api/v1

예시:

  • /api/v1/auth/login
  • /api/v1/users/me
  • /api/v1/routines
  • /api/v1/sessions

4. 사용 기술 스택

  • Backend: FastAPI (Python 3.12)
  • ORM: SQLAlchemy 2.x
  • Database: MySQL 8.0
  • Cache / Rate Limit: Redis, SlowAPI
  • Auth: JWT (Access / Refresh Token)
  • Infra: Docker, Docker Compose
  • Docs: Swagger (OpenAPI)

5. 코드 설치 및 실행 방법

5.1 프로젝트 업로드

서버에 프로젝트 폴더를 업로드한다.

scp -i kyb.pem -P 19031 -r focus-tracker ubuntu@113.198.66.75:~/

5.2 환경 변수 설정

프로젝트 루트에 .env 파일을 생성하고 아래 항목을 설정한다.

MYSQL_ROOT_PASSWORD=****
MYSQL_DATABASE=focusdb
MYSQL_USER=focus_user
MYSQL_PASSWORD=****

DATABASE_URL=mysql+pymysql://focus_user:****@mysql:3306/focusdb
REDIS_URL=redis://redis:6379/0

JWT_SECRET=your_jwt_secret_key
CORS_ORIGINS=http://localhost:3000

5.3 Docker 기반 실행

Docker Compose를 이용해 모든 서비스를 실행한다.

docker compose up -d --build

정상 실행 시 다음 컨테이너가 올라간다.

  • focus_dev_app (FastAPI 서버)
  • focus_dev_mysql (MySQL)
  • focus_dev_redis (Redis)

5.4 실행 확인

컨테이너 상태 확인:

docker compose ps

Swagger 접속:

http://113.198.66.75:10031/docs

6. 주요 기능 요약

  • 회원가입 / 로그인 / 토큰 갱신
  • 사용자 정보 조회 및 수정
  • 루틴 생성 / 수정 / 삭제
  • 집중 세션 시작 / 종료
  • 집중 점수 기록
  • 일별 / 요약 통계 조회
  • 관리자 전용 API 제공

7. 마무리

본 프로젝트는 백엔드 API 설계, 인증 처리, 데이터 모델링, Docker 기반 배포까지 전체 흐름을 경험하는 것을 목표로 개발되었다.

실제 서비스 구조를 최대한 반영하여 구현하였으며, Swagger를 통해 모든 API를 직접 테스트할 수 있도록 구성하였다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages