Skip to content

kimgihun1234/Prepay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

857 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💳 PrePay [선결제 관리 어플]

2025.01.06 ~ 2025.02.21 / 6명

Image

프로젝트 소개

  • PrePay는 여러 사람이 함께 사용하는 가게에 금액을 미리 선결제하고, QR 코드를 통해 간편하게 결제할 수 있도록 돕는 어플리케이션입니다.

  • 사용자들은 그룹을 생성하고 참여할 수 있으며 그룹에 등록된 가게에서 선결제된 금액을 사용하여 결제할 수 있습니다.

  • 그룹은 공개 그룹과 비공개 그룹으로 나누어져 있습니다.

    공개 그룹 : 특정 사용자가 기부형식으로 가게에 금액을 선결제 하며 누구나 금액을 사용가능

    비공개 그룹 : 회사나, 동아리 등 특정 사용자들만 사용 가능한 그룹으로 비밀번호를 통해 입장 가능

팀원 구성

김기훈 프로필 차현우 프로필 조성윤 프로필 서현석 프로필 김성수 프로필 경이현 프로필
김기훈
(Android & 팀장)
차현우
(Android)
조성윤
(Android)
서현석
(Android)
김성수
(Back-end)
경이현
(Back-end)

1. 개발환경

  • Front-End : Kotlin, Android Studio

  • Back-End : Java17, Spring boot, Spring Data JPA, Spring Security

  • Infra : Amazon EC2, Docker, Jenkins, Nginx

  • DB : Mysql

  • Tools : Git, Jira, Notion

2. 프로젝트 구조

C:.
├─.gradle
│  ├─8.11.1
│  │  ├─checksums
│  │  ├─executionHistory
│  │  ├─expanded
│  │  ├─fileChanges
│  │  ├─fileHashes
│  │  └─vcsMetadata
│  ├─buildOutputCleanup
│  └─vcs-1
├─.idea
│  ├─dataSources
│  │  └─4063f9e9-6a34-4c40-b20e-12ee78d77031
│  │      └─storage_v2
│  │          └─_src_
│  │              └─schema
│  └─modules
├─build
│  ├─classes
│  │  └─java
│  │      ├─main
│  │      │  └─com
│  │      │      └─d111
│  │      │          └─PrePay
│  │      │              ├─aop
│  │      │              ├─bootpay
│  │      │              │  ├─request
│  │      │              │  ├─response
│  │      │              │  └─util
│  │      │              ├─config
│  │      │              ├─controller
│  │      │              ├─dto
│  │      │              │  ├─request
│  │      │              │  └─respond
│  │      │              ├─exception
│  │      │              ├─global
│  │      │              ├─model
│  │      │              ├─repository
│  │      │              ├─schedule
│  │      │              ├─security
│  │      │              │  ├─config
│  │      │              │  ├─controller
│  │      │              │  ├─dto
│  │      │              │  ├─entity
│  │      │              │  ├─jwt
│  │      │              │  ├─oauth2
│  │      │              │  ├─repository
│  │      │              │  └─service
│  │      │              ├─service
│  │      │              └─value
│  │      └─test
│  │          └─com
│  │              └─d111
│  │                  └─PrePay
│  ├─generated
│  │  ├─querydsl
│  │  │  └─com
│  │  │      └─d111
│  │  │          └─PrePay
│  │  │              ├─model
│  │  │              └─security
│  │  │                  └─entity
│  │  └─sources
│  │      └─headers
│  │          └─java
│  │              ├─main
│  │              └─test
│  ├─libs
│  ├─reports
│  │  ├─problems
│  │  └─tests
│  │      └─test
│  │          ├─classes
│  │          ├─css
│  │          ├─js
│  │          └─packages
│  ├─resources
│  │  └─main
│  ├─test-results
│  │  └─test
│  │      └─binary
│  └─tmp
│      ├─bootJar
│      ├─compileJava
│      │  └─compileTransaction
│      │      ├─backup-dir
│      │      └─stash-dir
│      ├─compileTestJava
│      │  └─compileTransaction
│      │      ├─backup-dir
│      │      └─stash-dir
│      ├─jar
│      └─test
├─gradle
│  └─wrapper
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─d111
    │  │          └─PrePay
    │  │              ├─aop
    │  │              ├─bootpay
    │  │              │  ├─request
    │  │              │  ├─response
    │  │              │  └─util
    │  │              ├─config
    │  │              ├─controller
    │  │              ├─dto
    │  │              │  ├─request
    │  │              │  └─respond
    │  │              ├─exception
    │  │              ├─global
    │  │              ├─model
    │  │              ├─repository
    │  │              ├─schedule
    │  │              ├─security
    │  │              │  ├─config
    │  │              │  ├─controller
    │  │              │  ├─dto
    │  │              │  ├─entity
    │  │              │  ├─jwt
    │  │              │  ├─oauth2
    │  │              │  ├─repository
    │  │              │  └─service
    │  │              ├─service
    │  │              └─value
    │  └─resources
    └─test
        └─java
            └─com
                └─d111
                    └─PrePay

3. 역할 분담

Image

4. 핵심 기능 소개

[메인페이지]

[그룹 생성]

[공개 그룹 조회]

[QR 결제]

[결제 내역 조회]

5. ERD

ERD 이미지

6. 시스템 아키텍쳐

Image

7 . 차별점

1️⃣ 영수증 제공 및 결제 내역 공유

  • 모든 결제에 대해 영수증을 자동 제공하여 투명한 거래를 보장합니다.
  • 모임원 전체가 실시간으로 결제 내역을 확인할 수 있어 관리가 용이합니다.

2️⃣ 공개 선결제 모임 지원

  • 누구나 사용할 수 있는 공개 선결제 모임을 지원합니다.
  • 기부 형식의 선결제가 가능하며, 안전하고 투명한 운영이 가능합니다.

3️⃣ 편리한 결제 내역 관리

  • 기존의 수기 관리 방식의 불편함을 해소하여 보다 체계적인 관리가 가능합니다.
  • 결제 내역을 디지털화하여 빠르고 정확한 기록 확인이 가능합니다.

4️⃣ 유연한 금액 사용 방식

  • 선결제된 금액을 자유롭게 설정 및 관리할 수 있어 효율적인 비용 운용이 가능합니다.

8. 프로젝트 후기

김기훈 : 선결제 앱을 개발하면서 프로젝트에서 MVVM(Model-View-ViewModel) 패턴을 사용하여 코드의 유지보수성과 확장성을 높였습니다. 팀원들간의 협업과 Jira를 활용하여 일정 관리를 진행하여 프로젝트를 잘 마무리하였습니다. 이 프로젝트를 통해 협업과 Jira, 안드로이드 디자인 패턴에 대해 학습할 수 있어 좋았습니다.

차현우 : 코틀린을 처음 접하면서 어려움을 많이 겪었지만 MVVM 패턴을 학습하고, 모바일 XML 디자인에서 어떤 부분을 신경 써야 하는지 알 수 있었습니다. 코틀린의 동작구조(Model-View, Adapter, RecyclerView 등)를 학습하고 모바일 프로젝트 협업의 기틀을 다질 수 있었습니다.

조성윤 : 코틀린을 처음 사용해봐서 초기에 어려웠지만, MVVM 패턴에 적응하면서 이걸 왜 쓰는지에 대한 이해를 하였습니다. 또한 디자인 패턴을 학습하며 어떻게 하면 가독성과 유지보수성을 높일 수 있는지 배웠고, 안드로이드 환경에서 어떻게 코드를 작성할지 배울 수 있었습니다.

서현석 : 안드로이드 개발을 하며 코틀린을 배우면서 모바일 앱이 어떤 식으로 구현되는지 학습할 수 있었고, 개발자로서의 저의 역량이 많이 향상된 것도 느꼈습니다. 또한 모바일 UI에 대해서 깊이 고민해 볼 수 있는 좋은 기회였습니다.

김성수 : 6인 프로젝트를 진행하며 Hibernate를 학습하고 도입하는 과정에서 많은 것을 배울 수 있었습니다. 뿐만 아니라 Docker, Jenkins를 이용해 EC2에 배포를 직접 해보면서 배포의 흐름을 익힐 수 있었습니다.

경이현 : 스프링 프레임워크의 동작 방식을 이해할 수 있었던 프로젝트였습니다. 또한, JPA가 내부적으로 어떻게 작동하는지 학습할 수 있었고, 특히 N+1 문제를 직접 경험하며 이를 해결하는 과정에서 효율적인 JPA 활용법을 익힐 수 있었습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •