Skip to content

Latest commit

 

History

History
196 lines (131 loc) · 7.61 KB

README.md

File metadata and controls

196 lines (131 loc) · 7.61 KB

동기 부여 교육 앱 : Candy

image

개요

[비대면 교육으로 인한 아이들 교육의 어려움]

코로나로 인해 많은 교육 기관에서 비대면 교육을 실시하고 있습니다. 이로 인해 아이들의 교육 여건은 나빠지고 있습니다. 학부모들은 교육에 있어 자녀를 통제하고 동기 부여하는데 더 많은 어려움을 겪고 있는 실정입니다. 많은 교육 플랫폼과 툴이 등장하였지만 학습 편의를 위한 것일 뿐, 이를 통해 아이들의 학습 의욕을 고취하는 것은 역부족이었습니다.

[비대면으로도 아이들에게 직접적으로 동기 부여할 방법이 있지 않을까?]

이에 저희 팀에서는 아이들에게 직접적인 동기부여를 제공하는 교육 플랫폼 '캔디(Candy)'를 제안합니다. '캔디'는 플랫폼의 화폐 단위를 뜻합니다. 플랫폼에서는 실시간으로 교육과 이에 해당하는 챌린지를 제공합니다. 학부모는 '캔디'를 충전한 뒤 이를 챌린지에 배정합니다. 아이가 이 챌린지를 완수할 경우 배정된 캔디 만큼의 보상을 받습니다. 아이들은 직접적인 보상이 존재하므로 더욱 열심히 교육에 참여할 것이고 학부모들은 목표 의식이 아직 부족한 아이들을 위해 필요한 교육을 선정하여 학습 방향을 설정할 수 있을 것입니다. '캔디' 플랫폼은 교육 기관, 강사, 일반 튜터 등과의 협업을 통해 무궁무진한 형태로 발전할 수 있을 것입니다.

개발 환경

서버

  • IDE : IntelliJ IDEA
  • Gradle
  • Java 11
  • Spring 2.5.2
  • H2 Database
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation("com.google.guava:guava:30.1.1-jre")
    implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2'
    implementation group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
    implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.6.2'
    implementation 'com.auth0:java-jwt:3.18.1'
    implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
    implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
    annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
    implementation 'javax.validation:validation-api:2.0.1.Final'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.json:json:20190722'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    annotationProcessor(
            "javax.persistence:javax.persistence-api",
            "javax.annotation:javax.annotation-api",
            "com.querydsl:querydsl-apt:${queryDslVersion}:jpa")
}

안드로이드

  • IDE : Android Studio
  • Gradle
  • Kotlin
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.5.0'
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

    def nav_version = "2.3.5"
    implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation "androidx.fragment:fragment-ktx:1.3.5"

    implementation "com.sun.mail:android-mail:1.6.6"
    implementation "com.sun.mail:android-activation:1.6.6"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1"

    def retrofit_ver = "2.9.0"
    implementation "com.squareup.retrofit2:retrofit:$retrofit_ver"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit_ver"
    implementation "com.squareup.okhttp3:logging-interceptor:4.9.1"

    def lifecycle_version = "2.3.1"
    def arch_version = "2.1.0"

    // ViewModel
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    // LiveData
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    // Glide
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    kapt 'com.github.bumptech.glide:compiler:4.12.0'
    // exoplayer
    implementation 'com.google.android.exoplayer:exoplayer:2.15.0'
    // rx
    implementation 'android.arch.lifecycle:extensions:1.1.1'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
    implementation "io.reactivex.rxjava2:rxjava:2.2.0"
    implementation "io.reactivex.rxjava2:rxandroid:2.0.2"
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
}

시작하기

  • 코드 내려받기
git clone "https://github.com/LateNightSeoul/Candy"

서버

Candy-Server\build\libs 의 jar 파일 실행 후 8080포트로 접근 가능

  • DB 접속

    서버 실행 후 localhost:8080/h2-console

  • Api 문서 보기

    서버 실행 후 localhost:8080/swagger-ui.html

안드로이드

  1. Android Studio 실행 후 File > New > Import Project 메뉴 선택
  2. Candy-Android 폴더 선택 후 OK 선택
  3. Build > Build Bundle(s) / APK(s) > Build APK(s) 메뉴 선택
  4. 빌드된 APK를 안드로이드 기기에 설치 후 실행

안드로이드 버전

  • minSdkVersion 26
  • targetSdkVersion 30

시연 영상

https://www.youtube.com/watch?v=tUKArhwD6yM

실행 화면

시작 화면

image

로그인

image

캔디 충전

충전한 캔디로 챌린지에 배정할 수 있습니다.

image

캔디 배정

image

진행 중인 챌린지 리스트

캔디가 배정 된 챌린지로써 자녀가 도전 가능합니다.

image

강의 듣기

image

문제 풀기

커트라인 이상 획득 시 캔디를 획득합니다.

image

문제 풀기 후

챌린지 도전에 성공하여 진행 중인 챌린지에서 완료된 챌린지로 상태 변경 및 캔디 20개를 획득한 모습

image