1 of 30

# 김유빈 # 김은서 # 이상민 # 최정윤

DINOSOUL

- AOAO -

다이노와 함께 성장하는 투두 어플리케이션

2 of 30

목차

1

팀원 소개

3

서비스 플로우

5

ERD

7

프로젝트 시연 및 기능소개

2

프로젝트 소개

4

아키텍처

6

협업문화

8

기대효과

3 of 30

Part 1

Team Intro

4 of 30

팀원 소개 - AOAO

Part 1

최정윤

이상민

김은서

김유빈

  • Docs 매니저
  • 캘린더 기능
  • 홈화면 스위칭 기능
  • 다이어리 기능
  • security , ouath (자체로그인, 카카오)
  • 마이페이지 기능
  • github action 으로 ci/cd 구축
  • 다이노 생성 기능
  • 다이노 키우기 기능
  • 다이노 상점 기능
  • 다이노 다시보기 기능

  • 투두리스트 / 목표 기능
  • 클라우드 환경에 어플리케이션 배포
  • S3 이용하여 이미지 업로드
  • 에러 핸들링 및 응답 객체 구현
  • 슬랙 깃허브 연동

5 of 30

Part 2

Project Intro

6 of 30

서비스 배경

Part 2

부지런하게 살고 싶은데 실천에 옮기기 쉽지 않아..ㅜㅜ

계획만 세우고 하질 않는 의지박약 습관을 고치고 싶어.

혼자서 무언가를 하려니깐 의욕이 떨어지고 동기부여가 잘 안되는것 같아..

매일매일 나의 하루를 기록하고 좀 더 성취감있게 보내보고 싶어!

성취 가능한 목표 설정의 필요성

목표수립 ▶️목표를 세울 때마다 달성 ▶️ 성취 경험이 쌓임 ▶️ 나는 하면 되는 사람이라는 자기 효능감 ▶️ 다음 목표 ▶ (반복)

⭐️ 자신이 어떤 일을 성공적으로 수행할 수 있는 능력이 있다고 믿고 반복을 통해 선순환 구조를 만들어 갈 수 있음.

과중 목표로 인한 스트레스

의지박약 / 작심삼일

성취경험

우선순위 선정

문제점

경험의 필요성

투두 서비스를 통해 실현 !

7 of 30

서비스 목표

Part 2

일정 관리 및 목표 달성

개인 기록

재미 요소 제공

투두 기능을 통해 본인의 할 일을 계획하고,

이행을 통해 수립한 목표를 달성할 수 있습니다.

다이어리 기능을 통해 일기를 작성하고 자신의 하루를 되돌아볼 수 있습니다.

다이노 기능을 통해

서비스 이용에 흥미를 느끼고,

사용자 이용률을 증진시킬 수 있습니다.

8 of 30

Part 3

Service Flow

9 of 30

서비스 플로우

Part 3

회원 기능

투두 기능

다이어리 기능

10 of 30

서비스 플로우

Part 3

다이노 기능

11 of 30

4:19

프로필 편집

닉네임 변경

비밀번호 수정

탈퇴하기

서비스 플로우

Part 3

마이페이지 기능

12 of 30

Part 4

ERD

13 of 30

ERD 구조

Part 4

ERD 구조

  • 사용자, 투두리스트, 다이어리, 공룡정보 등 4개의 도메인으로 분리하여 테이블 설계
  • JPA 의 Audit 기능을 이용하여 생성 및 수정 시간 관리

14 of 30

Part 5

Architecture

15 of 30

아키텍처 : 개발 기술 스택

Part 5

  • Android
    • Kotlin
  • Server
    • Java 17, Spring Boot 3
    • Spring Data JPA, Spring Security 6
    • Oracle 21c, H2
    • JWT, jUnit, mockito
  • Infra
    • Amazon EC2, RDS, S3
  • CI/CD
    • Docker, Github Actions
  • Tool
    • Github, Slack, Figma, Notion

16 of 30

아키텍처 : 서버 / 인프라 구조

Part 5

  • 실행 환경의 경량화를 위해 profile 분리하여 환경에 맞는 DB 선택
    • 테스트: H2
    • 로컬: H2
    • 배포: Oracle
  • 깃허브 활동에 따른 슬랙 연동

17 of 30

Slack을 통한 PR 알림 자동화

Part 5

18 of 30

Part 6

Collaboration Culture

19 of 30

API 명세서

Part 6

  • API 명세서 작성과 앱 구현 진행 상황을 관리하여 작업 사항 조율

20 of 30

진행 상황 공유

앱구현 진행 상황

컨벤션

Part 6

  • 석 컨벤션, 코드 컨벤션, 파일명 규칙 작성을 통해 작업 통일화 진행.

21 of 30

GitHub

Part 6

버전관리 및 이슈관리

코드리뷰

  • 각 기능별 이슈 작성 및 이슈 분류를 통해 작업사항 공유
  • Git-Flow 전략 사용
  • 이슈 및 PR 템플릿 작성
  • 코드 리뷰를 통해 코드 개선 및 코드흐름 파악

22 of 30

Part 7

Project Demo

23 of 30

프로젝트 시연

Part 7

DINOSOUL 바로가기

24 of 30

프로젝트 시연 - 회원 기능

Part 7

로그인 / 소셜로그인

  • spring security 와 oauth 동시 적용
    • 어플리케이션 실행 시 자체로그인과 카카오 소셜로그인 중 선택 가능
    • 로그인 시 jwt를 통해 AccessToken, Refresh Token을 발급해, 해당 token을 이용해 사용자 데이터의 유효성을 검증
  • 카카오 로그인
    • 앱 자체에서 카카오 AcessToken을 받아와 서버로직을 최소화해 유저 정보를 받아옴
  • 로그인
    • api 호출 전 커스텀한 인증필터를 적용해 보안을 높임
  • 로그아웃

마이페이지 /

프로필 편집

  • 사용자 투두 수 확인 가능 (이번 달 전체 투두, 이번달 완료한 투두, 오늘 완료한 투두/작성한 투두)
  • 프로필 편집
    • 프로필 사진 편집
      • 갤러리 접근 가능
    • 닉네임 변경
      • 중복확인 가능
    • 비밀번호 수정
      • 유효성 검사 (중복된 비밀번호으로 변경 안됨)
  • 이메일, 닉네임 중복 처리 진행
  • 닉네임, 비밀번호 TextWatcher를 이용해 사용자에게 실시간으로 유효성 검증을 알려줌

자체 회원 가입

25 of 30

프로젝트 시연 - 다이어리 기능

Part 7

캘린더

  • 캘린더 구현 및 날짜별 투두/다이어리 작성을 위해 연결작업 진행
    • Binding을 활용하여 화면 버튼과 연동 후 스위치 변환을 통해 한 화면에서 각 Fragment를 출력

다이어리

  • 다이어리 기능 구현
    • 다이어리 조회 기능
    • 다이어리 작성 기능
    • 다이어리 수정 기능
    • 다이어리 삭제 기능

26 of 30

프로젝트 시연 - 투두리스트 기능

Part 7

투두리스트

  • 선택한 날짜에 대한 할 일 목록 작성 기능
    • 조회, 작성, 수정, 삭제, 체크 / 체크 취소 기능 구현
    • 투두리스트 체크 시 포인트 부여
  • 2개의 RecyclerView 를 활용하여 투두리스트 및 목표 리스트를 화면에 표출
  • 캘린더에서 추출한 날짜 정보를 ViewModel 에 담아 Fragment 및 RecyclerView 에 데이터 전달
  • 자연스러운 화면 전환을 위해 onResume() 에서 UI 재로드

투두리스트 목표

  • 투두리스트의 그룹을 지정하여 손쉬운 할 일 관리
    • 투두리스트 목표 조회, 작성, 수정, 삭제 기능 구현
  • 투두리스트 목표 수정 시 BottomSheetDialog 를 이용해 수정 화면 표출

투두리스트 목표 팔레트

  • 목표에 속해있는 투두리스트 체크 색상을 선택하여 UX 향상
    • 투두리스트 목표 수정 시 팔레트 색상 선택 가능
  • 팔레트 정보는 RecyclerView 의 GridLayoutManager 으로 정렬
  • 서버 어플리케이션 실행 시 기본 팔레트를 저장하여 DB 데이터 설정 자동화

27 of 30

프로젝트 시연 - 다이노 기능

Part 7

  • 사용자의 정보에 맞추어 UI 적용
    • 색상 / 레벨 / 이름 / 아이템 개수 / 경험치
  • 아이템 사용
    • 코루틴의 async, await - 비동기
    • 콜백
  • 생명주기 관리
    • 불필요한 네트워크 리소스 사용 방지
    • 데이터 로드 시간 감소

다이노 키우기

다이노 상점

  • 아이템 구매
    • 2개의 리사이클러뷰 간 통신 및 데이터 전달 필요
    • 콜백

새로운 다이노

  • 다이노 입양
    • 이름 및 색상 선택

다이노 도감

  • 과거 다이노 목록
    • 리사이클러뷰 사용

28 of 30

Part 8

Benefit

29 of 30

기대효과

투두 기능을 통해 일정을 체계적으로 관리하고 다이노의 성장을 가시적으로 확인 가능하기에 보다 높은 성취감을 느낄 수 있습니다.

사용자 이탈 방지

포인트 기능과 공룡과의 상호작용을 통해 사용자들이 더 많은 할 일을 등록하고 완료하며 서비스 내 활동이 늘어나도록 격려합니다.

사용자 성취감 증가

Part 8

30 of 30

End

감사합니다