Skip to content

Android Memo App with Architecture & Design Pattern

Notifications You must be signed in to change notification settings

peterchoee/android-memo

Repository files navigation

SimpleMemo

Clean Architecture, MVVM, Multi Module을 구현한 간단한 메모장 앱

Feature

  • 텍스트 메모 작성, 카메라/갤러리 이미지 추가, 링크 이미지 추가
  • 메모 추가/삭제/수정 ​

Environment

  • IDE: Android Studio 4.0.1
  • Language: kotlin 1.3.72
  • minSdkVersion: 21
  • targetSdkVersion: 29 ​

Architecture

Clean Architecture + MVVM

[Clean-Architecture] Clean Architecture + Modulization

  • Clean Architecture의 각 레이어에 맞춰 Multi Module로 구성
  • app: Application, DI
  • common: Common Resource
  • presentation: UI(Activity&Fragment), ViewModel
  • domain: UseCase, Mapper
  • data: Repository, Local(Room), Mapper

[MVVM] design_pattern_mvvm

  • ACC ViewModel을 활용한 MVVM 구현
  • DataBinding, LiveData 사용
  • RxJava 사용 ​

Package Structure

app (application)
├── ...
├── src
│   ├── main
│   │   ├── di                      # Dependency Injection by Koin
│   │   └── MemoApplication.kt
│   ├── res
│   │   └── mipmap
│   └── AndroidManifest.xml
│
common
├── ...
├── src
│   ├── main
│   │   ├── RxExtension.kt          # Bridge RxJava2 to RxJava3 & etc
│   │   └── ToastExtension.kt       # Toast Message Extension
│   └── ...
│
data
├── ...
├── src
│   ├── main
│   │   ├── entity                  # Entity for Data layer
│   │   ├── local                   # RoomDatabase & Dao
│   │   ├── mapper                  # Mapper Extension
│   │   └── repository              # Repository
│   └── ...
│
domain
├── ...
├── src
│   ├── main
│   │   ├── entity                  # Entity for Domain layer
│   │   ├── repository              # Repository interface
│   │   └── usecase                 # UseCase
│   └── ...
│
presentation
├── ...
├── src
│   ├── main
│   │   ├── entity                  # Entity for Presentation layer
│   │   ├── mapper                  # Mapper Extension
│   │   ├── ui                      # Activity & ViewModel
│   │   │   ├── base                # BaseActivity, BaseViewModel
│   │   │   ├── detail              
│   │   │   ├── main                
│   │   │   ├── write               
│   │   └── util                    # SingleLiveEvent, Permission, Provider, etc...
│   ├── res
│   │   ├── ...
│   │   ├── drawable                # SVG, Image resources
│   │   ├── font                    # NanumSquare regular, bold, extrabold
│   │   ├── values                  # color, dimen, string, style...
│   │   │   ├── colors.xml
│   │   │   ├── dimens.xml
│   │   │   ├── strings.xml
│   │   │   ├── styles.xml
│   │   ├── ...
│   └── AndroidManifest.xml
│

Library & Tool

  • Koin 2.0.1
  • ACC ViewModel 2.2.0
  • LiveData 2.2.0
  • Room 2.2.3
  • RxJava3 3.0.0
  • Glide 4.11.0
  • Logger 2.2.0
  • More Information

ScreenShot

Main(Empty) Write Main(List) Detail
preview_01 preview_02 preview_03 preview_04

About

Android Memo App with Architecture & Design Pattern

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages