Skip to content

USW-Circle-Link/USW-Circle-Link-APP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋™๊ตฌ๋ผ๋ฏธ (Donggurami)

์ˆ˜์›๋Œ€ํ•™๊ต ๋™์•„๋ฆฌ ์—ฐํ•ฉํšŒ ๊ณต์‹ ํ”Œ๋žซํผ

๊ทธ๋ž˜ํ”ฝ ์ด๋ฏธ์ง€

๐Ÿ“˜ ๊ฐœ์š”

๋™๊ตฌ๋ผ๋ฏธ๋Š” ์ˆ˜์›๋Œ€ํ•™๊ต ๋™์•„๋ฆฌ ์—ฐํ•ฉํšŒ์˜ ๊ณต์‹ ํ”Œ๋žซํผ์œผ๋กœ, ๋ชจ๋“  ๋™์•„๋ฆฌ ์ •๋ณด๋ฅผ ์ „์‚ฐํ™”ํ•˜์—ฌ ํšจ์œจ์ ์ธ ๊ด€๋ฆฌ์™€ ํ™๋ณด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํ•™์ƒ๋“ค์€ ์†์‰ฝ๊ฒŒ ๋™์•„๋ฆฌ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ๋™์•„๋ฆฌ๋Š” ๋ณ„๋„ ํ™๋ณด ์—†์ด๋„ ์‹ ์ž… ํšŒ์›์„ ๋ชจ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”Œ๋žซํผ์€ Flutter๋กœ ๊ฐœ๋ฐœ๋œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ, ์›น, iOS, Android ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋™์•„๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ์ง€์›์„œ๋ฅผ ์ž‘์„ฑ ๋ฐ ์ œ์ถœํ•˜๋ฉฐ, ์ง€์› ํ˜„ํ™ฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์•Œ๋ฆผ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๋™์•„๋ฆฌ ํ•ฉ๊ฒฉ ์—ฌ๋ถ€ ๋ฐ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“– ๋” ์ž์„ธํ•œ ํ”„๋กœ์ ํŠธ ์„ค๋ช…์€ ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๐ŸŽฅ ์‹œ์—ฐ ๋™์˜์ƒ

๐ŸŒ ์„œ๋น„์Šค ๋งํฌ

์›น ๋ฒ„์ „ (๊ถŒ์žฅ)

์„œ๋น„์Šค ๋งํฌ ์„ค๋ช…
์‚ฌ์šฉ์ž ์„œ๋น„์Šค donggurami.net ๋™์•„๋ฆฌ ํƒ์ƒ‰, ์ง€์›์„œ ์ž‘์„ฑ/์ œ์ถœ
๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ admin.donggurami.net ๋™์•„๋ฆฌ ๊ด€๋ฆฌ์ž์šฉ ๋Œ€์‹œ๋ณด๋“œ

๋ชจ๋ฐ”์ผ ์•ฑ

ํ”Œ๋žซํผ ๋‹ค์šด๋กœ๋“œ ์ƒํƒœ
iOS App Store ์šด์˜ ์ค‘
Android Google Play ์šด์˜ ์ค‘

๐Ÿ’ก ์›น๊ณผ ์•ฑ ๋ชจ๋‘ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์›น์€ ์„ค์น˜ ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์•ฑ์€ ํ‘ธ์‹œ ์•Œ๋ฆผ ๋“ฑ ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ฑ ์ฃผ์š” ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ ์„ค๋ช… ์›น iOS Android
๋™์•„๋ฆฌ ํƒ์ƒ‰ ๋‹ค์–‘ํ•œ ๋™์•„๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ƒ์„ธ ์ •๋ณด ํ™•์ธ O O O
์ง€์›์„œ ์ž‘์„ฑ/์ œ์ถœ ์„ ํƒํ•œ ๋™์•„๋ฆฌ์— ์ง€์›์„œ ์ž‘์„ฑ ๋ฐ ์ œ์ถœ O O O
์ง€์› ํ˜„ํ™ฉ ํ™•์ธ ์ง€์›ํ•œ ๋™์•„๋ฆฌ์˜ ์ƒํƒœ๋ฅผ ์‹ค์‹œ๊ฐ„ ํ™•์ธ O O O
ํ‘ธ์‹œ ์•Œ๋ฆผ ํ•ฉ๊ฒฉ ์—ฌ๋ถ€ ๋ฐ ์ค‘์š” ์•Œ๋ฆผ ์ˆ˜์‹  - O O
ํ”„๋กœํ•„ ๊ด€๋ฆฌ ํ”„๋กœํ•„ ์—…๋ฐ์ดํŠธ ๋ฐ ๊ด€๋ฆฌ O O O

ํ”Œ๋žซํผ๋ณ„ ํŠน์ง•

์›น ๋ฒ„์ „

  • ์„ค์น˜ ์—†์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋ชจ๋ฐ”์ผ/๋ฐ์Šคํฌํƒ‘ ๋ฐ˜์‘ํ˜• ์ง€์›
  • ์ตœ์‹  ๊ธฐ๋Šฅ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜

๋ชจ๋ฐ”์ผ ์•ฑ

  • ๋„ค์ดํ‹ฐ๋ธŒ ํ‘ธ์‹œ ์•Œ๋ฆผ ์ง€์›
  • ์˜คํ”„๋ผ์ธ ์บ์‹œ ์ง€์›
  • ์•ฑ ์•„์ด์ฝ˜์œผ๋กœ ๋น ๋ฅธ ์ ‘๊ทผ

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ & Tools

๊ณตํ†ต

  • Dart
  • Flutter
  • MVVM

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ & API

  • Riverpod
  • Firebase Cloud Messaging
  • Firebase Analytics
  • Sentry

๋ฐฐํฌ & CI/CD

  • GitHub Pages
  • GitHub Actions
  • Fastlane
  • TestFlight
  • Google Play

IDE

  • VS Code

๋„๊ตฌ

  • Git
  • Notion
  • Miro
  • Figma

๐Ÿ”ง ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Flutter SDK (3.24.1 ์ด์ƒ)
  • Dart SDK (3.5.1 ์ด์ƒ)
  • IDE: VS Code ๋˜๋Š” Android Studio

ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์•„๋ž˜ ํŒŒ์ผ๋“ค์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ์„ค์ • ํŒŒ์ผ

ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค๋ช… ํš๋“ ๋ฐฉ๋ฒ•
android/app/key.properties Android ์„œ๋ช… ํ‚ค ์„ค์ • key.example.properties ๋ณต์‚ฌ ํ›„ ์ˆ˜์ •
android/app/google-services.json Firebase Android ์„ค์ • Firebase Console์—์„œ ๋‹ค์šด๋กœ๋“œ
ios/Runner/GoogleService-Info.plist Firebase iOS ์„ค์ • Firebase Console์—์„œ ๋‹ค์šด๋กœ๋“œ

Fastlane ์„ค์ • ํŒŒ์ผ (๋ฐฐํฌ ์‹œ ํ•„์š”)

ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค๋ช… ํš๋“ ๋ฐฉ๋ฒ•
ios/fastlane/Appfile iOS ์•ฑ ์ •๋ณด ํŒ€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์š”์ฒญ
ios/fastlane/Fastfile iOS ๋ฐฐํฌ ๋ ˆ์ธ ํŒ€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์š”์ฒญ
ios/fastlane/Matchfile Match ์ธ์ฆ์„œ ์„ค์ • ์ €์žฅ์†Œ์— ํฌํ•จ๋จ
android/fastlane/Appfile Android ์•ฑ ์ •๋ณด ํŒ€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์š”์ฒญ
android/fastlane/Fastfile Android ๋ฐฐํฌ ๋ ˆ์ธ ํŒ€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์š”์ฒญ
android/app/service-account.json Play Store ์„œ๋น„์Šค ๊ณ„์ • Google Cloud Console์—์„œ ์ƒ์„ฑ

Android ์„œ๋ช… ํ‚ค ์„ค์ •

# 1. ์˜ˆ์ œ ํŒŒ์ผ ๋ณต์‚ฌ
cp android/app/key.example.properties android/app/key.properties

# 2. key.properties ํŒŒ์ผ ํŽธ์ง‘
# storePassword, keyPassword, keyAlias, storeFile ๊ฐ’์„ ์ž…๋ ฅ

key.properties ํ˜•์‹:

storePassword=your_store_password
keyPassword=your_key_password
keyAlias=your_key_alias
storeFile=/absolute/path/to/keystore.jks

Firebase ์„ค์ •

  1. Firebase Console์—์„œ ํ”„๋กœ์ ํŠธ ์„ ํƒ
  2. ํ”„๋กœ์ ํŠธ ์„ค์ • โ†’ ์•ฑ ์ถ”๊ฐ€์—์„œ ๊ฐ ํ”Œ๋žซํผ ์„ค์ • ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
  3. ํ•ด๋‹น ๊ฒฝ๋กœ์— ํŒŒ์ผ ๋ฐฐ์น˜:
    • Android: android/app/google-services.json
    • iOS: ios/Runner/GoogleService-Info.plist

์„ค์น˜ ๋ฐ ์‹คํ–‰

# 1. ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/USW-Circle-Link/USW-Circle-Link-APP.git
cd USW-Circle-Link-APP

# 2. ์˜์กด์„ฑ ์„ค์น˜
flutter pub get

# 3. ์ฝ”๋“œ ์ƒ์„ฑ (Freezed, Retrofit ๋“ฑ)
flutter pub run build_runner build

ํ”Œ๋žซํผ๋ณ„ ์‹คํ–‰ ๋ฐฉ๋ฒ•

์›น ๋ฒ„์ „

# ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
flutter run -d chrome

# ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ
flutter build web --release

iOS ์•ฑ

# iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์‹คํ–‰
flutter run -d ios

# ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ (Xcode ํ•„์š”)
flutter build ios --release

Android ์•ฑ

# Android ์—๋ฎฌ๋ ˆ์ดํ„ฐ/๋””๋ฐ”์ด์Šค์—์„œ ์‹คํ–‰
flutter run -d android

# APK ๋นŒ๋“œ
flutter build apk --release

# App Bundle ๋นŒ๋“œ (Play Store ๋ฐฐํฌ์šฉ)
flutter build appbundle --release

ํ…Œ์ŠคํŠธ ๋ฐ ๋ถ„์„

# ํ…Œ์ŠคํŠธ ์‹คํ–‰
flutter test

# ์ฝ”๋“œ ๋ถ„์„
flutter analyze

๐Ÿš€ ๋ฐฐํฌ (CD)

Fastlane์„ ์ด์šฉํ•˜์—ฌ iOS์™€ Android ์•ฑ์„ ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์กฐ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ๋ฐฐํฌ ํ”Œ๋žซํผ                               โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚       ์›น        โ”‚       iOS       โ”‚          Android            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  GitHub Pages   โ”‚   TestFlight    โ”‚   Play Store Internal       โ”‚
โ”‚  (GitHub Actions)โ”‚   (Fastlane)   โ”‚        (Fastlane)           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

GitHub Actions Runner ์š”๊ตฌ์‚ฌํ•ญ

iOS/Android ์•ฑ ๋ฐฐํฌ(deploy_prod)๋ฅผ ์œ„ํ•ด์„œ๋Š” Self-hosted macOS Runner๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ์šฐ Runner ์„ค๋ช…
์›น ๋ฐฐํฌ ubuntu-latest GitHub ์ œ๊ณต Runner ์‚ฌ์šฉ
iOS/Android ๋ฐฐํฌ self-hosted, macOS Self-hosted Runner ํ•„์š”

Self-hosted Runner ์„ค์ • ๋ฐฉ๋ฒ•

  1. GitHub ์ €์žฅ์†Œ โ†’ Settings โ†’ Actions โ†’ Runners
  2. "New self-hosted runner" ํด๋ฆญ
  3. macOS ์„ ํƒ ํ›„ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ์„ค์น˜
  4. Runner์— ๋‹ค์Œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ:
    • Xcode (์ตœ์‹  ๋ฒ„์ „)
    • Flutter SDK
    • Ruby & Bundler (Fastlane์šฉ)
    • CocoaPods
# ์›Œํฌํ”Œ๋กœ์šฐ ์˜ˆ์‹œ
jobs:
  deploy_prod:
    runs-on: [self-hosted, macOS]
    steps:
      - uses: actions/checkout@v4
      # ...

iOS ๋ฐฐํฌ (TestFlight)

Fastlane Match๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ์™€ ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํŒŒ์ผ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

cd ios

# TestFlight ๋ฐฐํฌ
fastlane release

๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค:

  1. Match๋กœ App Store ์ธ์ฆ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ
  2. CocoaPods ์˜์กด์„ฑ ์„ค์น˜
  3. Flutter iOS ๋นŒ๋“œ (flutter build ios --release)
  4. Xcode ์ฝ”๋“œ ์„œ๋ช… ์„ค์ •
  5. IPA ๋นŒ๋“œ
  6. TestFlight ์—…๋กœ๋“œ

Android ๋ฐฐํฌ (Play Store)

cd android

# Play Store Internal Track ๋ฐฐํฌ
fastlane deploy

๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค:

  1. Flutter App Bundle ๋นŒ๋“œ (flutter build appbundle --release)
  2. Play Store Internal Track ์—…๋กœ๋“œ

์›น ๋ฐฐํฌ (GitHub Pages)

main ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œํ•˜๋ฉด GitHub Actions๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

# ์ˆ˜๋™ ๋นŒ๋“œ
flutter build web --release --source-maps

# ๋ฐฐํฌ๋Š” GitHub Actions์—์„œ ์ž๋™ ์ˆ˜ํ–‰
git push origin main

๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค:

  1. Flutter ์›น ๋นŒ๋“œ
  2. Sentry ์†Œ์Šค๋งต ์—…๋กœ๋“œ
  3. GitHub Pages ๋ฐฐํฌ

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

iOS (GitHub Secrets ๋˜๋Š” ๋กœ์ปฌ ํ™˜๊ฒฝ)

๋ณ€์ˆ˜๋ช… ์„ค๋ช…
MATCH_PASSWORD Match ์ธ์ฆ์„œ ์•”ํ˜ธํ™” ๋น„๋ฐ€๋ฒˆํ˜ธ
FASTLANE_TEAM_ID Apple Developer Team ID
FASTLANE_USER Apple ID
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ์•ฑ ์ „์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ

Android (GitHub Secrets ๋˜๋Š” ๋กœ์ปฌ ํ™˜๊ฒฝ)

๋ณ€์ˆ˜๋ช… ์„ค๋ช…
PLAY_STORE_JSON_KEY Google Play Console ์„œ๋น„์Šค ๊ณ„์ • JSON
ANDROID_KEYSTORE_BASE64 ์„œ๋ช… ํ‚ค์Šคํ† ์–ด (Base64 ์ธ์ฝ”๋”ฉ)
ANDROID_KEY_ALIAS ํ‚ค ๋ณ„์นญ
ANDROID_KEY_PASSWORD ํ‚ค ๋น„๋ฐ€๋ฒˆํ˜ธ
ANDROID_STORE_PASSWORD ํ‚ค์Šคํ† ์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ

About

APP

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 9