Skip to content

홍익대학교 열람실 열공이들을 위한 어플리케이션

Notifications You must be signed in to change notification settings

TeamHY2/HongikYeolgong2-Android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

안드

개요

🔍 홍익열공이는 홍익대학교 열람실 사용자들의 불편을 해결하기 위해 시작된 프로젝트입니다.

열람실에서 공부하던 중, 자리 연장 시간을 놓쳐 자리를 잃거나 매번 알람을 맞추는 번거로움을 느꼈습니다. 이 문제를 단순한 개인의 불편으로 넘기지 않고, 다른 학생들도 같은 어려움을 겪고 있는지 확인하기 위해 설문조사를 진행했습니다. 300명 이상의 학생들이 설문에 참여하며 열람실 시스템에 불편함을 호소했고, 이를 바탕으로 문제를 해결하기 위한 애플리케이션 개발을 시작했습니다.

이렇게 탄생한 홍익열공이는 자리 관리와 학습 타이머 기능을 통해 열람실 사용자들에게 효율적이고 편리한 솔루션을 제공합니다. 서비스 출시 후 400명 이상의 학생들이 앱을 사용하며 뜨거운 관심을 보였고, 이를 계기로 학교와의 협력을 시작하게 되었습니다.

현재는 학교 시스템 개선을 목표로 중앙도서관과 지속적인 논의를 진행하고 있으며, 학생들의 의견을 적극 반영해 800여명의 사용자와 함께 서비스 업데이트를 이어가고 있습니다. 홍익열공이는 단순한 앱을 넘어, 학생들의 학습 환경을 개선하는 가치 있는 변화를 만들어가고 있습니다.

홍익열공이 성장 과정 보러가기

프로젝트 설명

🔍 홍익열공이는 열람실 예약 및 학습 타이머 기능을 제공하는 Android 앱입니다.
사용자는 편리한 자리 확인, 예약, 타이머 시작, 그리고 알림 기능을 통해 학습 효율을 높일 수 있습니다.

주요 기능:

  • 🪑 열람실 자리 예약 및 확인
  • ⏱️ 학습 타이머 및 알림
  • 📊 사용 기록 및 랭킹 시스템

기술 스택

카테고리 기술
언어 Kotlin
아키텍처 MVVM, Clean Architecture
UI Jetpack Compose
DI Hilt
비동기 처리 Kotlin Coroutines, StateFlow
데이터 관리 Android DataStore
알림 Foreground Service
테스트 Kotest
데이터 분석 Amplitude

기술을 도입한 이유

1️⃣ 피처별 모듈 분리

모듈화를 왜 해야 할까? 모듈화를 하는 궁극적인 이유는 관심사 분리와 빌드 속도 최적화에 있습니다. 프로젝트의 각 부분을 독립적으로 관리하고 빌드 시간을 단축함으로써, 생산성을 높이고 유지보수를 용이하게 합니다.

⚠️ 레이어별 모듈 분리의 한계

  • 레이어별로 Data, Domain, Presentation을 분리하면 구조적으로는 명확해 보이지만, 각 피처가 레이어 모듈을 공유하게 됩니다.
  • 예를 들어, 특정 A 피처의 Data를 수정하더라도 다른 피처들의 Data와 같은 모듈로 묶여 있어, 불필요한 코드들까지 다시 빌드해야 하는 문제가 발생합니다.
  • 이러한 구조는 피처가 늘어날수록 빌드 시간이 기하급수적으로 증가하며, 프로젝트 규모가 커질수록 비효율적입니다.

피처별 모듈 분리를 선택한 이유

  • 피처별로 Data, Domain, Presentation을 독립적인 모듈로 구성함으로써, 피처 A가 몰라도 되는 피처 B의 기능들을 효과적으로 분리할 수 있습니다.
  • 결과적으로 특정 피처의 변경 사항이 다른 피처에 영향을 미치지 않으며, 불필요한 빌드를 방지할 수 있습니다.
  • 피처 단위로 작업 영역이 명확히 나뉘어, 작업 충돌을 최소화하고 협업이 용이해집니다.
  • 변경 사항에 유연하게 대응할 수 있어, 프로젝트의 확장성과 유지보수성을 높이는 데 적합한 구조입니다.

2️⃣ Clean Architecture

  • 도메인 로직의 중요성 강화: 서비스 초기에는 서버가 없는 상태에서 대부분의 도메인 로직을 클라이언트에서 처리해야 했습니다. 이에 따라 도메인 로직의 유지보수성과 확장성이 핵심적인 요구사항으로 대두되었습니다.
  • 구조적 안정성 확보: 도메인 로직이 서비스의 중심이 되는 구조에서, 코드의 의존성을 명확히 분리하고 각 레이어 간의 역할을 명확히 하기 위해 Clean Architecture를 채택하였습니다.
  • 효율적인 테스트 환경 구축: Clean Architecture는 Kotest를 활용한 비즈니스 로직 단위 테스트를 가능하게 하여, 도메인 계층의 안정성과 정확성을 효과적으로 검증할 수 있었습니다.

3️⃣ Foreground Service

  • 도메인 요구사항 해결: Foreground Service는 사용자가 타이머를 실행 중인 상태에서도 앱이 백그라운드로 전환되거나 시스템에 의해 프로세스가 종료되는 상황에서 타이머가 중단되지 않도록 보장합니다.
  • 시스템 리소스 관리 최적화: 서비스가 백그라운드에서 실행될 경우, Android 시스템에 의해 우선순위가 낮아지는 문제를 방지하고, 안정적인 성능을 유지할 수 있었습니다.

의존성 그래프

image

About

홍익대학교 열람실 열공이들을 위한 어플리케이션

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages