알고먹자는 사용자가 식단과 운동을 기록하고, 하루 동안 섭취한 칼로리와 영양소, 운동 기록, 체중 목표를 한곳에서 관리할 수 있는 Java Swing 기반 데스크톱 프로그램입니다.
아침·점심·저녁 등 식사별로 음식을 검색해 식단을 기록할 수 있으며, 운동 종류와 운동 시간을 입력해 운동 기록을 저장할 수 있습니다. 저장한 기록은 날짜별로 확인할 수 있고, 목표 체중을 설정하여 현재 진행 상황을 확인할 수 있습니다.
2025년 4인 팀 프로젝트로 개발했으며, 프로젝트 종료 후 기존 프로젝트를 다시 실행하고 분석하면서 실행 환경, 보안, 데이터 처리, 기능 오류 및 UI/UX를 개인적으로 개선했습니다.
- 프로젝트명: 알고먹자
- 개발 기간: 2025.01.20 ~ 2025.02.20
- 프로젝트 형태: 4인 팀 프로젝트 / 프로젝트 종료 후 개인 개선
- 팀원: 석인철, 이상민, 성연오, 박민경
- 역할: 팀장
- GitHub: 현재 저장소
- 상세 포트폴리오: 알고먹자 프로젝트 상세 보기
- 아침·점심·저녁 등 식사 종류 선택
- 음식 검색 및 상세 영양정보 조회
- 음식 중량 조절
- 선택한 음식 식단에 추가 및 삭제
- 식단 기록 중량 조절
- 선택한 음식 식단에 추가 및 삭제
- 식단 기록 저장
- 일일 칼로리 및 탄수화물·단백질·지방 섭취량 확인
- 운동 카테고리별 목록 조회
- 운동 이름 검색
- 운동 상세 정보 확인
- 운동 시간과 현재 체중을 기준으로 예상 소모 칼로리 계산
- 운동 기록 저장
- 시작 체중 및 목표 체중 설정
- 목표 기간 설정
- 현재 목표 진행률 확인
- 목표 정보 수정
- 월간 캘린더 이동
- 날짜별 식단 기록 조회
- 날짜별 운동 기록 조회
- 회원가입 및 로그인
- 아이디 찾기
- 비밀번호 재설정
- 회원정보 수정
- 신체정보 관리
- 사용자 공지사항 목록 및 상세 조회
- 관리자 공지사항 작성·수정·삭제
- 공지사항 첨부파일 관리
- Java 21 - 애플리케이션 기능 구현
- Java Swing - 데스크톱 GUI 구성
- MySQL - 회원, 음식, 식단, 운동, 목표, 공지사항 데이터 관리
- JDBC / MySQL Connector/J - Java 애플리케이션과 MySQL 연동
- DAO Pattern - 화면 로직과 데이터베이스 접근 코드 분리
- PBKDF2 - 회원 비밀번호 해싱 및 검증
- Eclipse
- JDK 21
- Git
- GitHub
- 4인 팀 프로젝트의 팀장 역할 수행
- 프로젝트 기능 구성과 역할 분담 조율
- 팀원들과 개발 진행 상황 공유 및 기능별 작업 조율
- 프로젝트 최종 발표 담당
식단 관리 기능 전반을 담당했습니다.
- 식사 종류 선택
- 음식 검색 및 조회
- 음식 상세 영양정보 확인
- 음식 중량 조절
- 선택한 음식 식단 추가 및 삭제
- 식단 기록 저장
- 일일 섭취 칼로리 및 영양소 확인
- 시작 체중 및 목표 체중 설정
- 목표 기간 설정
- 목표 진행 상황 확인
- 목표 정보 수정
- 회원가입
- 로그인
- 아이디·비밀번호 찾기
- 회원정보 수정
- 신체정보 관리
- 운동 목록 및 운동 기록 기능 개발에 일부 참여
- 운동 화면 간 데이터 전달 및 기능 연동
- 캘린더 기반 식단·운동 기록 조회 기능을 팀원과 공동 개발
- 팀원 전원이 함께 데이터베이스 설계
- 팀장으로서 프로젝트 주요 기능을 기준으로 초기 DB 구조의 틀 제안
- 팀원들과 테이블 구성과 데이터 관계를 논의하며 설계 방향 조율
팀 프로젝트 종료 후 기존 프로젝트를 다시 실행하고 코드를 분석하면서 당시 부족했던 부분을 개인적으로 개선했습니다.
- Apple Silicon macOS 환경에서 Eclipse 프로젝트 재구성
- Temurin JDK 21 환경 설정
- MySQL 및 MySQL Connector/J 연결 환경 구성
- 외부 라이브러리 경로를 프로젝트 상대 경로 기준으로 정리
- DB 접속 정보를
db.properties로 분리 .gitignore를 통해 로컬 DB 설정 파일 추적 제외- Git 히스토리에 남아 있던 민감정보 정리
- 공개 저장소용 DB 스키마 및 설정 문서 정리
- PBKDF2 기반 비밀번호 해싱 적용
- 회원가입과 로그인에서 동일한 방식으로 비밀번호 저장·검증
- 일반 사용자와 관리자 로그인 흐름 점검
- 여러 식단 데이터를 하나의 JDBC 트랜잭션으로 처리
- 저장 과정에서 오류 발생 시 전체 롤백
- 일부 데이터만 저장되는 상황 방지
- 운동 목록에서 카테고리 선택 화면으로 돌아가는 기능 추가
- 유산소·코어 카테고리 조회 흐름 정리
- 선택한 운동 정보 전달 및 운동 기록 저장 흐름 수정
- 운동 입력값 초기화 및 뒤로가기 동작 개선
- 운동 목록 카드 렌더링 문제 수정
- 공통 색상·글꼴·버튼·카드 스타일 정리
- 화면별 여백 및 입력 영역 배치 개선
- 신체정보 화면의 컴포넌트 겹침 문제 수정
- 식단 목록 데이터 개수에 따라 높이가 변경되는 동적 레이아웃 적용
- 운동 목록의 카드 및 텍스트 잘림 문제 수정
- 공개 저장소에 불필요한 테스트 코드 및 작업용 문서 정리
- DB 스키마와 DAO의 테이블·컬럼 정합성 점검
- 실행 환경 및 DB 설정 문서 정리
- 기능별 작업 이력을 Git 커밋으로 관리
| 항목 | 기준 |
|---|---|
| JDK | Eclipse Temurin JDK 21 |
| IDE | Eclipse IDE for Java Developers |
| DB | MySQL |
| JDBC Driver | MySQL Connector/J |
| 프로젝트 형식 | Eclipse Java Project |
- 저장소를 내려받습니다.
- Eclipse에서
Existing Projects into Workspace로 프로젝트를 가져옵니다. - MySQL Connector/J를 내려받아
lib/mysql-connector-j.jar로 배치합니다. - MySQL에서
sql/schema.sql을 실행하여 데이터베이스 스키마를 구성합니다. src/db.properties.example을 복사하여src/db.properties를 생성하고 로컬 DB 접속 정보를 입력합니다.- Eclipse에서 JDK 21이 적용되어 있는지 확인합니다.
src/main/MainFrame.java를 Java Application으로 실행합니다.
실제 DB 접속 정보가 포함된
src/db.properties파일은 Git에 포함되지 않습니다.
프로젝트 기능, 팀 프로젝트 당시 담당 역할, 프로젝트 종료 후 개인 개선 과정과 트러블슈팅에 대한 상세 내용은 아래 포트폴리오에서 확인할 수 있습니다.
👉 알고먹자 상세 포트폴리오
- 창 크기는
440x956으로 고정되어 있으며 반응형 크기 조절은 지원하지 않습니다. - 휴대폰 확인은 가입정보 대조 방식이며 실제 SMS 인증 서비스는 연동하지 않았습니다.
- 공개 스키마에는 관리자 계정이 포함되어 있지 않습니다.
이 프로젝트는 MIT License를 따릅니다.