Focus Tracker는 사용자의 집중 루틴과 학습 세션을 기록하고 집중도를 수치화하여 관리할 수 있도록 만든 백엔드 API 프로젝트이다.
사용자는 루틴을 생성하고, 각 루틴에 대해 집중 세션을 시작/종료할 수 있으며 세션 종료 시 집중 점수를 기록할 수 있다. 또한 누적된 데이터를 기반으로 일별/요약 통계를 조회할 수 있다.
본 프로젝트는 FastAPI 기반 REST API로 구현되었으며, Docker 환경에서 MySQL, Redis와 함께 실행된다.
Swagger UI를 통해 모든 API를 테스트할 수 있다.
http://113.198.66.75:10031/docs
- 서버 주소:
113.198.66.75 - 포트 번호:
10031
모든 API는 아래 Root 경로를 기준으로 제공된다.
http://113.198.66.75:10031/api/v1
예시:
/api/v1/auth/login/api/v1/users/me/api/v1/routines/api/v1/sessions
- 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)
서버에 프로젝트 폴더를 업로드한다.
scp -i kyb.pem -P 19031 -r focus-tracker ubuntu@113.198.66.75:~/프로젝트 루트에 .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:3000Docker Compose를 이용해 모든 서비스를 실행한다.
docker compose up -d --build정상 실행 시 다음 컨테이너가 올라간다.
- focus_dev_app (FastAPI 서버)
- focus_dev_mysql (MySQL)
- focus_dev_redis (Redis)
컨테이너 상태 확인:
docker compose psSwagger 접속:
http://113.198.66.75:10031/docs
- 회원가입 / 로그인 / 토큰 갱신
- 사용자 정보 조회 및 수정
- 루틴 생성 / 수정 / 삭제
- 집중 세션 시작 / 종료
- 집중 점수 기록
- 일별 / 요약 통계 조회
- 관리자 전용 API 제공
본 프로젝트는 백엔드 API 설계, 인증 처리, 데이터 모델링, Docker 기반 배포까지 전체 흐름을 경험하는 것을 목표로 개발되었다.
실제 서비스 구조를 최대한 반영하여 구현하였으며, Swagger를 통해 모든 API를 직접 테스트할 수 있도록 구성하였다.