Skip to content

Commit 99320c0

Browse files
authored
프로젝트 내용 수정 및 추가 (#66)
* refactor: 프로젝트 순서 수정 * refactor: 행운복권 기간 수정 * refactor: 저평가 우량주 포트폴리오 기간 수정 * feat: 링크레터 프로젝트 추가
1 parent e02c921 commit 99320c0

3 files changed

Lines changed: 43 additions & 13 deletions

File tree

1.37 MB
Loading

composeApp/src/commonMain/composeResources/values/strings.xml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,16 +105,25 @@
105105
<string name="project_more">프로젝트 더보기</string>
106106
<string name="project_collapse">프로젝트 접기</string>
107107

108+
<string name="project_link_letter">링크레터</string>
109+
<string name="project_link_letter_subtitle">Kotlin Multiplatform 블로그 구독 알림 서비스</string>
110+
<string name="project_link_letter_period">2025.06 – 2025.07</string>
111+
<string name="project_link_letter_techStack">Kotlin Multiplatform, Jetpack Compose / Compose Multiplatform, Koin, Ktor, Room</string>
112+
<string name="project_link_letter_description">여러분의 관심사, 한곳에서 만나보세요. 인터넷을 돌아다니다 보면 팔로우하고 싶은 블로그와 콘텐츠가 너무 많아, 정작 놓치는 정보가 많으시죠? 링크레터는 흩어져 있는 블로그를을 한곳으로 모아, 좋아하는 크리에이터의 새 글을 실시간 알림으로 신속하고 편리하게 전달해드립니다. 이제는 일일이 방문하지 않아도, 원하는 소식을 빠짐없이 받아보세요!</string>
113+
<string name="project_link_letter_contributions">- 기획, 개발, 디자인 전 과정을 담당하며 서비스 전체를 주도적으로 설계 및 구현\n- Android/iOS 코드 80% 이상 공유로 단일 코드베이스 기반의 효율적 개발\n- Core 모듈을 통한 계층별 분리 및 Koin 의존성 주입으로 유지보수성 향상\n- MVI 아키텍처 도입으로 상태 관리 안정성 향상\n- RSS URL을 메모리에 캐싱하여 네트워크 요청 최소화 및 속도 개선\n- 일일 스케줄링 자동 실행 및 백그라운드 새 포스트 감지 푸시 알림 구현</string>
114+
115+
116+
108117
<string name="project_lucky_lottery">행운복권</string>
109118
<string name="project_lucky_lottery_subtitle">회차별 로또 당첨번호를 확인하는 서비스</string>
110-
<string name="project_lucky_lottery_period">2020.11 - 진행중</string>
119+
<string name="project_lucky_lottery_period">2020.11 – 2021.01(개발) / 2024.01 – 현재(유지보수 중)</string>
111120
<string name="project_lucky_lottery_techStack">Android, Kotlin, Compose, Room DB</string>
112121
<string name="project_lucky_lottery_description">'행운복권'은 로또와 연금복권의 당첨 번호를 회차별로 확인하고, QR코드 스캔을 통해 빠르게 당첨 여부를 확인할 수 있는 서비스입니다. 이 앱은 아버지께서 로또와 연금복권 당첨 번호를 매번 번거롭게 확인하는 불편함을 해소하기 위해 개발한 프로젝트입니다. Kotlin을 처음 배우며 안드로이드 앱을 개발하고 배포한 후, 앱의 성능과 유지보수성을 개선하기 위해 아키텍처 개선과 Jetpack Compose로의 마이그레이션을 진행했습니다. 그 결과, 앱은 1,000건 이상의 다운로드를 기록하며 사용자들로부터 긍정적인 반응을 얻었습니다.</string>
113122
<string name="project_lucky_lottery_contributions">- 기획, 개발, 디자인 전 과정을 담당하며 서비스 전체를 주도적으로 설계 및 구현\n- MVVM 도입으로 뷰와 비즈니스 로직 분리\n- QR코드 스캐너 구현으로 사용자 편의성 향상\n- Room DB로 회차별 복권 번호 저장 기능 개발\n- Jetpack Compose로 UI 마이그레이션 및 색상 통합</string>
114123

115124
<string name="project_junjange_dev">저평가 우량주 포트폴리오</string>
116125
<string name="project_junjange_dev_subtitle">Kotlin Multiplatform 포트폴리오</string>
117-
<string name="project_junjange_dev_period">2025.05 - 진행중</string>
126+
<string name="project_junjange_dev_period">2025.05(개발) / 2025.06 - 현재(유지보수 중)</string>
118127
<string name="project_junjange_dev_techStack">Kotlin, Kotlin Multiplatform, Compose, Wasm</string>
119128
<string name="project_junjange_dev_description">'저평가 우량주 포트폴리오'는 Kotlin Multiplatform과 Compose Multiplatform을 활용해 개발한 웹 포트폴리오 사이트입니다. Kotlin/Wasm 타겟을 통해 브라우저 환경에서도 실행할 수 있도록 빌드하고, Android Compose 개발 경험을 웹으로 확장하는 데 집중했습니다. 반응형 레이아웃과 일관된 디자인 시스템을 적용하여, 다양한 해상도에서도 자연스럽고 일관된 사용자 경험(UX)을 제공하도록 설계했습니다.</string>
120129
<string name="project_junjange_dev_contributions">- Kotlin Multiplatform 기반 웹 포트폴리오 구현\n- Compose Multiplatform을 활용해 반응형 레이아웃과 디자인 시스템 구축\n- 모바일/웹 환경 모두에서 최적화된 UI 구현</string>

composeApp/src/wasmJsMain/kotlin/junjange/dev/ui/model/Project.kt

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import junjange_dev.composeapp.generated.resources.ic_friendogly_grahic
1313
import junjange_dev.composeapp.generated.resources.ic_junjange_dev_graphic
1414
import junjange_dev.composeapp.generated.resources.ic_knocknock_graphic
1515
import junjange_dev.composeapp.generated.resources.ic_kordle_graphic
16+
import junjange_dev.composeapp.generated.resources.ic_link_letter_graphic
1617
import junjange_dev.composeapp.generated.resources.ic_lucky_lottery_graphic
1718
import junjange_dev.composeapp.generated.resources.ic_move_move_graphic
1819
import junjange_dev.composeapp.generated.resources.ic_oh_soon_taxi_graphic
@@ -63,6 +64,12 @@ import junjange_dev.composeapp.generated.resources.project_kordle_description
6364
import junjange_dev.composeapp.generated.resources.project_kordle_period
6465
import junjange_dev.composeapp.generated.resources.project_kordle_subtitle
6566
import junjange_dev.composeapp.generated.resources.project_kordle_techStack
67+
import junjange_dev.composeapp.generated.resources.project_link_letter
68+
import junjange_dev.composeapp.generated.resources.project_link_letter_contributions
69+
import junjange_dev.composeapp.generated.resources.project_link_letter_description
70+
import junjange_dev.composeapp.generated.resources.project_link_letter_period
71+
import junjange_dev.composeapp.generated.resources.project_link_letter_subtitle
72+
import junjange_dev.composeapp.generated.resources.project_link_letter_techStack
6673
import junjange_dev.composeapp.generated.resources.project_lucky_lottery
6774
import junjange_dev.composeapp.generated.resources.project_lucky_lottery_contributions
6875
import junjange_dev.composeapp.generated.resources.project_lucky_lottery_description
@@ -119,21 +126,19 @@ enum class Project(
119126
val links: List<Link>,
120127
val contributionsRes: StringResource,
121128
) {
122-
LUCKY_LOTTERY(
123-
titleRes = Res.string.project_lucky_lottery,
124-
subtitleRes = Res.string.project_lucky_lottery_subtitle,
125-
graphicRes = drawable.ic_lucky_lottery_graphic,
126-
periodRes = Res.string.project_lucky_lottery_period,
127-
descriptionRes = Res.string.project_lucky_lottery_description,
129+
LINK_LETTER(
130+
titleRes = Res.string.project_link_letter,
131+
subtitleRes = Res.string.project_link_letter_subtitle,
132+
graphicRes = drawable.ic_link_letter_graphic,
133+
periodRes = Res.string.project_link_letter_period,
134+
descriptionRes = Res.string.project_link_letter_description,
128135
roleRes = Res.string.android_developer,
129-
techStackRes = Res.string.project_lucky_lottery_techStack,
136+
techStackRes = Res.string.project_link_letter_techStack,
130137
links =
131138
listOf(
132-
Res.string.google_play_store to "https://play.google.com/store/apps/details?id=com.junjange.lotto3",
133-
Res.string.github to "https://github.com/junjange/lucky-lottery-android-v2",
134-
Res.string.notion to "https://www.notion.so/e3c739fdf1ce4613ad005dfae45f88a1",
139+
Res.string.github to "https://github.com/junjange/linkletter-client",
135140
),
136-
contributionsRes = Res.string.project_lucky_lottery_contributions,
141+
contributionsRes = Res.string.project_link_letter_contributions,
137142
),
138143
JUNJANGE_DEV(
139144
titleRes = Res.string.project_junjange_dev,
@@ -149,6 +154,22 @@ enum class Project(
149154
),
150155
contributionsRes = Res.string.project_junjange_dev_contributions,
151156
),
157+
LUCKY_LOTTERY(
158+
titleRes = Res.string.project_lucky_lottery,
159+
subtitleRes = Res.string.project_lucky_lottery_subtitle,
160+
graphicRes = drawable.ic_lucky_lottery_graphic,
161+
periodRes = Res.string.project_lucky_lottery_period,
162+
descriptionRes = Res.string.project_lucky_lottery_description,
163+
roleRes = Res.string.android_developer,
164+
techStackRes = Res.string.project_lucky_lottery_techStack,
165+
links =
166+
listOf(
167+
Res.string.google_play_store to "https://play.google.com/store/apps/details?id=com.junjange.lotto3",
168+
Res.string.github to "https://github.com/junjange/lucky-lottery-android-v2",
169+
Res.string.notion to "https://www.notion.so/e3c739fdf1ce4613ad005dfae45f88a1",
170+
),
171+
contributionsRes = Res.string.project_lucky_lottery_contributions,
172+
),
152173
FRIENDOGLY(
153174
titleRes = Res.string.project_friendogly,
154175
subtitleRes = Res.string.project_friendogly_subtitle,

0 commit comments

Comments
 (0)