๐โโ๏ธ Running Diary
๊ฐ์
์์ด ์ด์ฉํ๋ ๊ฐ์ธ ๋ฌ๋ ๊ธฐ๋ก ์ฑ

๐ฑ ์ฑ ์๊ฐ
Running Diary๋ ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ์ต์ฐ์ ์ผ๋ก ํ๋ ๋ฌ๋ ๊ธฐ๋ก ์ฑ์
๋๋ค. ํ์๊ฐ์
์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์์ ๊ธฐ๊ธฐ ๋ด๋ถ์๋ง ์์ ํ๊ฒ ์ ์ฅ๋ฉ๋๋ค.
โจ ์ฃผ์ ํน์ง
- ๐ ์์ ํ ๊ฐ์ธ์ ๋ณด ๋ณดํธ: ๋ชจ๋ ๋ฐ์ดํฐ๋ ๊ธฐ๊ธฐ ๋ด๋ถ ์ ์ฅ
- ๐ ์ฆ์ ์์: ํ์๊ฐ์
์์ด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ๐ ์ ํํ GPS ์ถ์ : ์ค์๊ฐ ๋ฌ๋ ๊ฒฝ๋ก ๋ฐ ํต๊ณ ์ ๊ณต
- ๐ ์์ธํ ๋ถ์: ๋ฌ๋ ๊ธฐ๋ก ๋ฐ ํต๊ณ ์๊ฐํ
- ๐๏ธ ์บ๋ฆฐ๋ ๋ทฐ: ๋ ์ง๋ณ ๋ฌ๋ ๊ธฐ๋ก ๊ด๋ฆฌ
- ๐ค๏ธ ๋ ์จ ์ ๋ณด: ๋ฌ๋ ์ ๋ ์จ ์ ๋ณด ์ ๊ณต
- ๐ญ ๋ฌ๋ ์ผ๊ธฐ: ์ปจ๋์
๊ณผ ๋ฉ๋ชจ ๊ธฐ๋ก
- ๐บ๏ธ ๊ฒฝ๋ก ์๊ฐํ: ๋ฌ๋ ๊ฒฝ๋ก๋ฅผ ์ง๋์ ํ์
๐ฏ ํต์ฌ ๊ธฐ๋ฅ
๐โโ๏ธ ๋ฌ๋ ์ถ์
- ์ค์๊ฐ GPS ์ถ์ : ์ ํํ ์์น ๊ธฐ๋ฐ ๊ฑฐ๋ฆฌ ์ธก์
- ์๋ ํ์ด์ค ๊ณ์ฐ: ๋ถ/km ๋จ์ ์ค์๊ฐ ํ์ด์ค ํ์
- ์นผ๋ก๋ฆฌ ์๋ชจ๋: ๋ฌ๋ ์ค ์นผ๋ก๋ฆฌ ์๋ชจ๋ ๊ณ์ฐ
- ๊ตฌ๊ฐ๋ณ ๊ธฐ๋ก: ๋ฉ ํ์ ๋ฐ ๊ตฌ๊ฐ๋ณ ์ฑ๊ณผ ๋ถ์
๐ ํต๊ณ ๋ฐ ๋ถ์
- ์ฃผ๊ฐ/์๊ฐ/์ฐ๊ฐ ํต๊ณ: ๊ธฐ๊ฐ๋ณ ๋ฌ๋ ์ฑ๊ณผ ๋ถ์
- ์ด ๊ฑฐ๋ฆฌ ๋ฐ ์๊ฐ: ๋์ ๋ฌ๋ ๊ธฐ๋ก
- ํ๊ท ํ์ด์ค: ์ ์ฒด ๊ธฐ๊ฐ ํ๊ท ์ฑ๊ณผ
- ๊ฐ์ธ ๊ธฐ๋ก: ์ต๊ณ ๊ธฐ๋ก ๋ฐ ๊ฐ์ ์ถ์ด
๐๏ธ ๊ธฐ๋ก ๊ด๋ฆฌ
- ์บ๋ฆฐ๋ ๋ทฐ: ๋ ์ง๋ณ ๋ฌ๋ ๊ธฐ๋ก ํ์ธ
- ์์ธ ๊ธฐ๋ก: ๊ฐ ๋ฌ๋ ์ธ์
์ ์์ธ ์ ๋ณด
- ๋ฌ๋ ์ผ๊ธฐ: ์ปจ๋์
๋ฐ ๋ฉ๋ชจ ๊ธฐ๋ก
- ๊ฒฝ๋ก ์๊ฐํ: ์นด์นด์ค๋งต ๊ธฐ๋ฐ ๋ฌ๋ ๊ฒฝ๋ก ํ์
๐ ๊ฐ์ธ์ ๋ณด ๋ณดํธ
- ๊ธฐ๊ธฐ ๋ด ์ ์ฅ: ๋ชจ๋ ๋ฐ์ดํฐ๋ ๊ธฐ๊ธฐ ๋ด๋ถ์๋ง ์ ์ฅ
- ์ธ๋ถ ์ ์ก ์์: ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์กํ์ง ์์
- ์ํธํ ์ ์ฅ: SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์์ ํ ์ ์ฅ
- ์์ ์ญ์ : ์ธ์ ๋ ์ง ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์ ๊ฐ๋ฅ
๐ ๏ธ ๊ธฐ์ ์คํ
Frontend
- Flutter 3.19.0: ํฌ๋ก์ค ํ๋ซํผ ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ
- Dart 3.3.0: ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- Provider: ์ํ ๊ด๋ฆฌ
- Material Design: UI/UX ๋์์ธ
Backend & Database
- SQLite: ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- SQLiteStorageAdapter: ๋ฐ์ดํฐ ์ ์ฅ ์ด๋ํฐ
- DatabaseService: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์๋น์ค
Location & Maps
- Geolocator: GPS ์์น ์ถ์
- Kakao Maps: ๋ค์ดํฐ๋ธ ์ง๋ ์๋น์ค
- LocationService: ์์น ์๋น์ค ๊ด๋ฆฌ
- PermissionService: ๊ถํ ๊ด๋ฆฌ
Advertising
- Google AdMob: ๊ด๊ณ ์์ตํ
- AdService: ๊ด๊ณ ์๋น์ค ๊ด๋ฆฌ
Weather
- WeatherService: ๋ ์จ ์ ๋ณด API ์ฐ๋
๐ฑ ์คํฌ๋ฆฐ์ท
ํ ํ๋ฉด
- ๋ฌ๋ ์์ ๋ฒํผ
- ์ต๊ทผ ๊ธฐ๋ก ๋ชฉ๋ก
- ๊ฐ๋จํ ํต๊ณ ์ ๋ณด
๋ฌ๋ ํ๋ฉด
- ์ค์๊ฐ ๋ฌ๋ ์ ๋ณด
- ํ์ด์ค, ๊ฑฐ๋ฆฌ, ์๊ฐ ํ์
- ์ผ์์ ์ง/์ฌ๊ฐ/์ข
๋ฃ ๊ธฐ๋ฅ
๊ธฐ๋ก ์์ธ ํ๋ฉด
- ๋ฌ๋ ๊ฒฝ๋ก ์ง๋
- ์์ธ ํต๊ณ ์ ๋ณด
- ๋ฌ๋ ์ผ๊ธฐ ์์ฑ
ํต๊ณ ํ๋ฉด
- ๊ธฐ๊ฐ๋ณ ํต๊ณ ์ฐจํธ
- ์ฑ๊ณผ ๋ถ์ ๊ทธ๋ํ
- ๊ฐ์ธ ๊ธฐ๋ก ๊ด๋ฆฌ
์ค์ ํ๋ฉด
- ๊ฐ์ธ์ ๋ณด ๋ณดํธ ์ ์ฑ
- ์ฑ ์ ๋ณด ๋ฐ ๋ฌธ์
- ๋ฐ์ดํฐ ๊ด๋ฆฌ
๐ ์์ํ๊ธฐ
์์คํ
์๊ตฌ์ฌํญ
- iOS: iOS 15.2 ์ด์
- Android: Android 6.0 (API level 23) ์ด์
- Flutter: 3.19.0 ์ด์
- Dart: 3.3.0 ์ด์
์ค์น ๋ฐ ์คํ
- ์ ์ฅ์ ํด๋ก
git clone https://github.com/your-username/running-diary.git
cd running-diary
- ์์กด์ฑ ์ค์น
- iOS ์ค์ (iOS ๊ฐ๋ฐ ์)
- ์ฑ ์คํ
๊ถํ ์ค์
์ฑ ์ฌ์ฉ์ ์ํด ๋ค์ ๊ถํ์ด ํ์ํฉ๋๋ค:
- ์์น ๊ถํ: ๋ฌ๋ ๊ฒฝ๋ก ์ถ์ ์ ์ํด ํ์
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์์น ๊ถํ: ๋ฌ๋ ์ค ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ ๋๋ ์ถ์
๐ ๊ธฐ๋ฅ ์์ธ
๋ฌ๋ ์ถ์ ์์คํ
์ค์๊ฐ GPS ์ถ์ โ ๊ฑฐ๋ฆฌ ๊ณ์ฐ โ ํ์ด์ค ๊ณ์ฐ โ ํต๊ณ ์
๋ฐ์ดํธ
๋ฐ์ดํฐ ์ ์ฅ ๊ตฌ์กฐ
RunningRecord
โโโ ๊ธฐ๋ณธ ์ ๋ณด (ID, ์์/์ข
๋ฃ ์๊ฐ, ๊ฑฐ๋ฆฌ, ์๊ฐ)
โโโ ํต๊ณ ์ ๋ณด (ํ๊ท ํ์ด์ค, ์นผ๋ก๋ฆฌ)
โโโ ๊ฒฝ๋ก ์ ๋ณด (GPS ์ขํ ๋ฐฐ์ด)
โโโ ๋ฉ ๊ธฐ๋ก (๊ตฌ๊ฐ๋ณ ์ฑ๊ณผ)
๊ฐ์ธ์ ๋ณด ๋ณดํธ ์ฒด๊ณ
์ฌ์ฉ์ ๊ธฐ๊ธฐ โ SQLite ์ํธํ ์ ์ฅ โ ์ธ๋ถ ์ ์ก ์์ โ ์์ ์ญ์ ๊ฐ๋ฅ
๐จ UI/UX ํน์ง
๋์์ธ ์์น
- ์ง๊ด์ ์ฌ์ฉ์ฑ: ๋๊ตฌ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ธํฐํ์ด์ค
- ์๊ฐ์ ํผ๋๋ฐฑ: ๋ฌ๋ ์ค ์ค์๊ฐ ์ ๋ณด ํ์
- ์ผ๊ด์ฑ: ์ ์ฒด ์ฑ์์ ์ผ๊ด๋ ๋์์ธ ์ธ์ด
- ์ ๊ทผ์ฑ: ๋ค์ํ ์ฌ์ฉ์๋ฅผ ๊ณ ๋ คํ ์ ๊ทผ์ฑ
์์ ํ
๋ง
- ์ฃผ์ ์์: ๋
ธ๋์ (#FFB300)
- ๋ณด์กฐ ์์: ๋ค์ด๋น ๋ธ๋ฃจ (#2E3A59)
- ๋ฐฐ๊ฒฝ ์์: ํฌ๋ฆผ์ (#FFF8E1)
- ํ
์คํธ ์์: ๋คํฌ ๊ทธ๋ ์ด (#5D6B7A)
๐ง ๊ฐ๋ฐ ์ ๋ณด
ํ๋ก์ ํธ ๊ตฌ์กฐ
lib/
โโโ main.dart # ์ฑ ์ง์
์
โโโ models/ # ๋ฐ์ดํฐ ๋ชจ๋ธ
โโโ providers/ # ์ํ ๊ด๋ฆฌ
โโโ screens/ # ํ๋ฉด UI
โโโ services/ # ๋น์ฆ๋์ค ๋ก์ง
โโโ utils/ # ์ ํธ๋ฆฌํฐ
โโโ widgets/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ฏ
์ฃผ์ ํจํค์ง
dependencies:
flutter: ^3.19.0
provider: ^6.1.1
geolocator: ^10.1.0
google_mobile_ads: ^4.0.0
sqflite: ^2.3.0
path: ^1.8.3
๐ ์ฑ๋ฅ ์ต์ ํ
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- ํจ์จ์ ์ธ ์ํ ๊ด๋ฆฌ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ต์ ํ
- ๋ถํ์ํ ์์ ฏ ๋ฆฌ๋น๋ ๋ฐฉ์ง
- ์ด๋ฏธ์ง ๋ฐ ๋ฆฌ์์ค ์ต์ ํ
๋ฐฐํฐ๋ฆฌ ์ต์ ํ
- GPS ์ฌ์ฉ ์ต์ ํ๋ก ๋ฐฐํฐ๋ฆฌ ์๋ชจ ์ต์ํ
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ ํจ์จํ
- ๋ถํ์ํ ๋คํธ์ํฌ ์์ฒญ ์ต์ํ
๐ ๊ฐ์ธ์ ๋ณด ๋ณดํธ
๋ฐ์ดํฐ ์์ง ๋ฒ์
- ์์น ์ ๋ณด: ๋ฌ๋ ๊ฒฝ๋ก ์ถ์ ์ ์ํ GPS ์ขํ
- ๋ฌ๋ ๊ธฐ๋ก: ๊ฑฐ๋ฆฌ, ์๊ฐ, ํ์ด์ค, ๊ฒฝ๋ก ๋ฐ์ดํฐ
- ๊ธฐ๊ธฐ ์ ๋ณด: ์ฑ ์ฌ์ฉ์ ์ํ ๊ธฐ๋ณธ ๊ธฐ๊ธฐ ์ ๋ณด
๋ณดํธ ์กฐ์น
- ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์ ๊ธฐ๊ธฐ ๋ด๋ถ์๋ง ์ ์ฅ
- ์ธ๋ถ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์กํ์ง ์์
- ์์น ์ ๋ณด๋ ๋ฌ๋ ์ค์๋ง ์์ง
- ๋ฐ์ดํฐ ์ํธํ ์ ์ฅ (SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค)
์ฌ์ฉ์ ๊ถ๋ฆฌ
- ์ธ์ ๋ ์ง ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์ ๊ฐ๋ฅ
- ์ค์ > ๋ฐ์ดํฐ ์ญ์ ๋ฉ๋ด์์ ์ผ๊ด ์ญ์
- ๊ฐ๋ณ ๊ธฐ๋ก ์ญ์ ๊ฐ๋ฅ
๐ ๋ฌธ์ ๋ฐ ์ง์
๊ฐ๋ฐ์ ์ ๋ณด
- ๊ฐ๋ฐ์: Donghyung Lee
- ๊ฐ๋ฐ์ฌ: PuppyPaw
- ์ด๋ฉ์ผ: puppypaw2508201@gmail.com
๋ฌธ์ ๊ฐ๋ฅํ ๋ด์ฉ
- ์ฑ ์ฌ์ฉ ๊ด๋ จ ๋ฌธ์
- ๋ฒ๊ทธ ๋ฆฌํฌํธ
- ๊ธฐ๋ฅ ์ ์
- ๊ฐ์ธ์ ๋ณด ๊ด๋ จ ๋ฌธ์
- ๊ธฐํ ๋ฌธ์์ฌํญ
๋ต๋ณ ์๊ฐ
- ์ผ๋ฐ ๋ฌธ์: 1-2์ผ ๋ด
- ๊ฐ์ธ์ ๋ณด ๊ด๋ จ: 3์ผ ๋ด
- ๊ธด๊ธ ๋ฌธ์: 24์๊ฐ ๋ด
๐ ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
๐ค ๊ธฐ์ฌํ๊ธฐ
ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๊ณ ์ถ์ผ์๋ค๋ฉด:
- ์ด ์ ์ฅ์๋ฅผ ํฌํฌํฉ๋๋ค
- ์๋ก์ด ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค (
git checkout -b feature/amazing-feature)
- ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค (
git commit -m 'Add some amazing feature')
- ๋ธ๋์น์ ํธ์ํฉ๋๋ค (
git push origin feature/amazing-feature)
- Pull Request๋ฅผ ์์ฑํฉ๋๋ค
๐ ๋ณ๊ฒฝ ์ด๋ ฅ
v1.0.0 (2025-08-15)
- ๐ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค
- ๐โโ๏ธ ๊ธฐ๋ณธ ๋ฌ๋ ์ถ์ ๊ธฐ๋ฅ
- ๐ ํต๊ณ ๋ฐ ๋ถ์ ๊ธฐ๋ฅ
- ๐๏ธ ์บ๋ฆฐ๋ ๋ทฐ
- ๐ ๊ฐ์ธ์ ๋ณด ๋ณดํธ ์ ์ฑ
- ๐ฑ iOS ๋ฐ Android ์ง์
๐ ๊ฐ์ฌ์ ๋ง
- Flutter ํ: ํ๋ฅญํ ํฌ๋ก์ค ํ๋ซํผ ํ๋ ์์ํฌ ์ ๊ณต
- Kakao: ๋ค์ดํฐ๋ธ ์ง๋ ์๋น์ค ์ ๊ณต
- Google: AdMob ๊ด๊ณ ํ๋ซํผ ์ ๊ณต
- ์คํ์์ค ์ปค๋ฎค๋ํฐ: ๋ค์ํ ํจํค์ง ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต
Running Diary์ ํจ๊ป ๊ฑด๊ฐํ ๋ฌ๋ ๋ผ์ดํ๋ฅผ ์์ํ์ธ์! ๐โโ๏ธโจ
โ๊ฐ์
์์ด, ์์ ํ๊ฒ, ํธ๋ฆฌํ๊ฒโ