Backend
home
🕰️

프로젝트 기획

생성 일시
2026/03/28 06:46
업무 유형
기획
참고링크: https://phenomenal-narwhal-f42c4a.netlify.app/
Kotlin
복사
CS 교육 앱 개발 로드맵 v2
완전 내장형(Offline-First) · Kotlin 입문자 기준 · 클라우드 비용 $0
MacBook Pro 14 M2 Pro · Android Studio + Kotlin + Room DB
이 문서의 핵심 원칙 3가지
① 완전 오프라인 — 인터넷·클라우드 없이 앱이 100% 작동한다
② 비용 $0 — Play Store 등록비 $25 외 추가 서버·구독 비용 없음
③ Kotlin 완전 입문자 기준 — 아는 게 없어도 순서대로 따라가면 앱이 나온다
전체 개발 로드맵
Phase 0 0 ~ 2주
Kotlin 맛보기 (사전 준비) • 변수·타입·조건문·함수 딱 이것만 먼저 • 안드로이드 없이 웹에서 바로 연습 (play.kotlinlang.org) • Hello World 하나 출력해보기
Phase 1 1주
Android Studio 세팅 • Android Studio 설치 · 첫 프로젝트 생성 • 실제 안드로이드 기기 연결 · 앱 실행 확인 • 프로젝트 폴더 구조 이해
Phase 2 2 ~ 3주
Kotlin 핵심만 빠르게 • 클래스 · 데이터 클래스 · 널 안전성 • 컬렉션(List·Map) · 람다 • Coroutine 기초 (비동기 처리)
Phase 3 3 ~ 4주
UI 화면 만들기 (Compose) • 홈 화면 · CS 카드 화면 · 퀴즈 화면 • 화면 이동(Navigation) 구현 • 다크모드 · 폰트 · 테마 설정
Phase 4 2 ~ 3주
완전 오프라인 데이터 구축 • CS 콘텐츠 JSON 파일로 작성 (assets 폴더) • Room DB 설계 · 첫 실행 시 DB 이식 • 학습 진도 · 즐겨찾기 · 퀴즈 기록 저장
Phase 5 2주
수익화 & 출시 • Freemium 잠금 로직 구현 (클라우드 없이) • Google Play Console 등록 · 베타 출시 • 정식 출시 & 콘텐츠 업데이트 운영 방식
완전 내장형 구조란?
Firebase·서버 없이 앱 하나만으로 모든 게 동작하는 방식입니다.
CS 데이터는 앱 설치 파일 안에 처음부터 포함되어 있고, 사용자 데이터는 기기 내부 DB에만 저장됩니다.
데이터 흐름 한눈에 보기
앱 설치 시 (딱 한 번)
① APK 안의 assets/cs_data.json 파일 읽기
② Room DB(기기 내부 저장소)에 CS 개념 전체 이식
③ 이후 인터넷 연결 없이도 모든 데이터 접근 가능
앱 사용 중 (매번)
CS 개념 카드 읽기 → Room DB에서 즉시 조회
퀴즈 풀기 → 결과 Room DB에 저장
즐겨찾기 추가 → Room DB에 저장
학습 진도 → Room DB에 저장
→ 인터넷 0% 필요
콘텐츠 업데이트 시
cs_data.json 파일에 새 개념 추가
Play Store에 새 버전 앱 배포
사용자가 업데이트하면 자동으로 새 데이터 적용
→ 서버 없이 앱 업데이트 = 콘텐츠 업데이트
Firebase vs 완전 내장형 비교
기능
Firebase 방식
완전 내장형 (우리 방식)
CS 데이터 저장
Firestore (클라우드)
assets/JSON → Room DB (기기 내)
사용자 진도 저장
Firestore (클라우드)
Room DB (기기 내)
콘텐츠 업데이트
실시간 반영
앱 업데이트로 반영
인터넷 필요 여부
항상 필요
설치 후 불필요
월 비용
$0~수십 달러
$0 (영구 무료)
로그인 필요
필요 (Firebase Auth)
불필요
복잡도
높음 (SDK 설정 복잡)
낮음 (Room만 배우면 됨)
Phase 0 · Kotlin 맛보기 (입문자 전용)
Kotlin을 전혀 모른다면 여기서 시작하세요. Android Studio 설치 전에 웹에서 바로 연습합니다.
지금 당장 시작하는 법 (설치 없음)
1. 브라우저에서 play.kotlinlang.org 접속
2. 왼쪽 예제 코드 지우고 직접 타이핑
3. Run 버튼 클릭 → 결과 확인
→ 이것만으로 Kotlin 기초 완전히 익힐 수 있음
Phase 0 학습 순서 (딱 이것만)
STEP 1 · 변수 (val / var)
val = 한번 정하면 못 바꿈 / var = 나중에 바꿀 수 있음
→ CS 개념 제목처럼 바뀌지 않는 건 val, 학습 점수처럼 바뀌는 건 var
STEP 2 · 조건문 (if / when)
→ when은 Java의 switch와 같은데, Kotlin에서 훨씬 간결하게 씁니다
→ 퀴즈 정답 판단, 카테고리 분류 등에 바로 쓰임
STEP 3 · 반복문 (for / forEach)
→ CS 개념 목록 전체를 화면에 뿌릴 때 사용
STEP 4 · 함수 (fun)
→ 반복되는 코드를 묶어서 이름 붙이기
→ 앱의 모든 기능이 함수 단위로 구성됨
STEP 5 · 널 안전성 (? 와 ?:)
→ Kotlin에서 가장 중요한 개념 중 하나
→ 앱이 갑자기 꺼지는 오류(NullPointerException)를 언어 차원에서 막아줌
Phase 0 목표 시간
STEP 1~3 : 하루 30분씩 3일 → 완료
STEP 4~5 : 하루 30분씩 3일 → 완료
Kotlin Koans (play.kotlinlang.org) 1~20번 풀기 → 1주 완성
→ 이 정도면 Android Studio에서 코드 읽고 이해하는 데 충분
Phase 1 · Android Studio 세팅
설치 절차 (M2 Mac 기준)
1.
developer.android.com/studio 접속
2.
Mac with Apple chip (.dmg) 다운로드 — 반드시 Apple Silicon 버전 선택
3.
.dmg 열기 → Android Studio를 Applications 폴더로 드래그
4.
첫 실행 → Setup Wizard → Standard 설치 → SDK 자동 다운로드 (약 10~20분)
5.
설치 완료 후 New Project → Empty Activity 선택
첫 프로젝트 설정값
항목
입력값
이유
Name
CSStudyApp
프로젝트 이름
Package name
com.yourname.csstudyapp
앱 고유 식별자
Language
Kotlin
필수
Minimum SDK
API 26 (Android 8.0)
국내 기기 95% 이상 커버
Build configuration
Kotlin DSL
최신 표준 방식
실제 기기 연결 추천 (에뮬레이터보다 빠름)
1. 안드로이드 폰 → 설정 → 휴대폰 정보 → 빌드 번호 7번 탭
2. 개발자 옵션 활성화 → USB 디버깅 ON
3. USB로 Mac에 연결 → Android Studio 상단에 기기 이름 표시
4. Run 버튼 → 폰에 앱 설치 · 실행 확인
Phase 2 · Kotlin 핵심만 빠르게
입문자 기준으로 앱 개발에 꼭 필요한 것만 골랐습니다. 전부 다 알 필요 없어요.
꼭 알아야 하는 것 vs 나중에 봐도 되는 것
주제
중요도
이유
val / var · 기본 타입
필수
모든 코드의 기본
if · when · for
필수
로직 흐름 제어
fun (함수)
필수
기능 단위 구성
data class
필수
CS 개념 데이터 모델
List · Map · filter
필수
데이터 다루기
널 안전성 (? · ?:)
필수
앱 안정성
Coroutine (launch · suspend)
중요
DB 저장 시 필요
sealed class · enum
중요
상태 관리
generics · 고급 타입
나중에
처음엔 몰라도 됨
Java 상호운용
나중에
지금 당장 불필요
주차별 학습 계획
1주차 — 언어 기초 (Phase 0 복습 + 심화)
val · var 완벽 이해, String 템플릿 ($변수명) 활용
when 표현식으로 퀴즈 정답 판단 로직 직접 짜보기
for문으로 CS 개념 리스트 출력해보기
2주차 — 데이터 모델 설계
data class로 CS 개념 모델 직접 만들기
예시: data class CsConcept(val id: Int, val title: String, val description: String, val category: String)
List<CsConcept>로 데이터 묶기 · filter로 카테고리별 검색
nullable(?) 처리해서 안전한 코드 작성 연습
3주차 — Coroutine 기초 (Room DB 사용 전 필수)
왜 필요한가: DB 읽기/쓰기는 시간이 걸리므로 백그라운드에서 처리해야 함
launch { } 블록 안에서 DB 작업하는 패턴 이해
suspend fun 이 붙은 함수는 기다려줘야 한다는 것만 알면 충분
Kotlin 입문자를 위한 학습 팁
문법 암기보다 '직접 쳐보기'가 10배 효율적 — play.kotlinlang.org에서 바로 실험
오류 메시지를 무서워하지 마세요 — 오류가 나야 배웁니다
구글 검색할 때 'Kotlin [모르는 것] example'로 검색하면 예제 코드 바로 나옴
ChatGPT/Claude에게 '이 코드 한국어로 설명해줘'라고 물어보는 것도 매우 효과적
Phase 3 · UI 화면 만들기 (Jetpack Compose)
Compose는 XML 없이 Kotlin 코드만으로 화면을 만드는 최신 방식입니다. 입문자에게 더 직관적이에요.
만들어야 할 화면 목록 (우선순위순)
화면
주요 기능
난이도
우선순위
홈 화면
카테고리 목록 · 학습 진도 요약
1순위
CS 카드 학습
개념 카드 넘기기 · 앞/뒷면 뒤집기
1순위
퀴즈 화면
객관식 4지선다 · 결과 표시
2순위
즐겨찾기
북마크 목록 모아보기
2순위
검색
키워드 검색 · 실시간 필터
3순위
설정
다크모드 · 알림 설정
3순위
폴더 구조 (처음부터 이대로 만드세요)
CSStudyApp 프로젝트 폴더 구조
app/src/main/
├── assets/
│ └── cs_data.json ← CS 개념 데이터 파일 (핵심!)
└── java/com.yourname.csstudyapp/
├── data/
│ ├── CsConceptEntity.kt ← Room DB 테이블 정의
│ ├── CsConceptDao.kt ← DB 조회·저장 쿼리
│ ├── CsDatabase.kt ← DB 인스턴스
│ └── CsRepository.kt ← UI ︎ DB 중간 관리
├── ui/
│ ├── home/HomeScreen.kt
│ ├── card/CardScreen.kt
│ ├── quiz/QuizScreen.kt
│ └── theme/Theme.kt
├── viewmodel/
│ └── CsViewModel.kt ← 화면 상태 관리
└── MainActivity.kt
Phase 4 · 완전 오프라인 데이터 구축
이 파트가 이 앱의 핵심입니다. 인터넷 없이 CS 데이터를 기기에 내장하는 방법을 단계별로 설명합니다.
STEP 1 · CS 데이터를 JSON으로 작성
assets/cs_data.json 파일에 모든 CS 개념을 아래 형식으로 작성합니다.
cs_data.json 구조 예시
[
{
"id": 1,
"title": "스택 (Stack)",
"description": "LIFO(Last In First Out) 구조. 마지막에 들어온 데이터가 먼저 나간다.",
"category": "자료구조",
"difficulty": "기초",
"keywords": ["스택", "LIFO", "push", "pop"]
},
...
]
STEP 2 · Room DB 테이블 설계
테이블
주요 컬럼
역할
cs_concepts
id · title · description · category · difficulty
CS 개념 원문 저장
user_progress
concept_id · is_learned · last_studied_at
학습 진도 추적
bookmarks
concept_id · created_at
즐겨찾기
quiz_history
concept_id · is_correct · answered_at
퀴즈 기록
STEP 3 · 앱 첫 실행 시 DB 이식 로직
앱을 처음 설치하면 자동으로 JSON → Room DB 변환이 한 번만 실행됩니다.
첫 실행 로직 흐름
앱 실행
Room DB가 비어있는가? (첫 설치 여부 확인)
↓ YES
assets/cs_data.json 파일 읽기
JSON → CsConceptEntity 객체로 변환
Room DB에 전체 삽입 (insert)
이후 모든 데이터 접근은 Room DB에서만 → 오프라인 완성
STEP 4 · 콘텐츠 업데이트 운영 방식
상황
처리 방법
사용자 경험
새 CS 개념 추가
cs_data.json에 추가 → 앱 새 버전 배포
Play Store 업데이트 알림
오타/오류 수정
JSON 수정 → 앱 새 버전 배포
업데이트 후 자동 반영
카테고리 추가
JSON에 새 카테고리 항목 추가
업데이트 후 즉시 노출
사용자 진도 초기화
설정 화면에서 직접 초기화 기능 제공
데이터 유실 없이 선택적 초기화
Phase 5 · 수익화 & 출시
Freemium 구조 (클라우드 없이 구현)
서버 없이도 Freemium을 구현할 수 있습니다. 구독 여부를 기기 내부에 저장하면 됩니다.
유저 유형
접근 가능 콘텐츠
수익
무료 유저
자료구조 + 알고리즘 카테고리 (전체의 40%)
광고 노출 (AdMob)
프리미엄 유저
전 카테고리 + 광고 제거 + 오프라인 저장
월 구독 결제
추천 구독 가격 (국내 기준)
월간 구독: 2,900원/월
연간 구독: 19,900원/년 (약 43% 할인)
첫 달 무료 체험 → 유료 전환 유도
→ Google Play Billing으로 결제 처리 (Kotlin 코드 몇 줄로 연동 가능)
Play Store 출시 7단계
1.
play.google.com/console 접속 → 개발자 등록 ($25 일회성)
2.
앱 서명 키스토어 생성 (Android Studio에서 Generate Signed Bundle)
3.
내부 테스트 버전 업로드 → 본인 기기에서 최종 확인
4.
스토어 리스팅 작성: 앱 이름 · 설명(한국어) · 스크린샷 5장 · 아이콘
5.
개인정보처리방침 URL 등록 (GitHub Pages 무료 활용)
6.
콘텐츠 등급 설문 완료
7.
정식 출시 제출 → 검토 1~3일 → 스토어 공개
주차별 실행 체크리스트
주차
이번 주 목표
완료
0주차 (지금)
play.kotlinlang.org 접속 · Kotlin Koans 1~10번 풀기
1주차
Android Studio 설치 · Hello World 실행 · 기기 연결
2주차
Kotlin 변수·조건문·함수·널 안전성 학습
3주차
data class · List · filter · 간단한 데이터 모델 직접 설계
4주차
Coroutine 기초 · ViewModel 개념 이해
5주차
Compose 기초 · 홈 화면 레이아웃 프로토타입 제작
6주차
CS 카드 학습 화면 구현 · Navigation 연결
7주차
cs_data.json 작성 · Room DB 설계 · 첫 실행 이식 로직
8주차
퀴즈 화면 · 즐겨찾기 · 학습 진도 저장 기능
9주차
Freemium 잠금 로직 · Google Play Billing 연동
10주차
UI 다듬기 · 버그 수정 · 베타 출시
11주차
피드백 반영 · 스토어 리스팅 작성 · 정식 출시
지금 당장 시작하기 (오늘 할 일)
① play.kotlinlang.org 접속 → 왼쪽 예제 지우고 val name = '내 이름' 타이핑해보기
② developer.android.com/studio 북마크 해두기
③ 공부하고 싶은 CS 카테고리 5개 적어보기 (자료구조? OS? 네트워크?)
④ 이 문서 1주차 체크박스 완료 목표일 적기
Kotlin 몰라도 괜찮아요. 순서대로만 하면 앱이 나옵니다.