├── .github
├── ISSUE_TEMPLATE
│ ├── backlog-request.md
│ ├── bug_report.md
│ ├── discussion.md
│ └── feature-request.md
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── .metadata
├── .vscode
├── keybindings.json
└── launch.json
├── README.md
├── README_ko.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── dev
│ │ ├── google-services.json
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-mdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night-hdpi
│ │ │ └── android12splash.png
│ │ │ ├── drawable-night-mdpi
│ │ │ └── android12splash.png
│ │ │ ├── drawable-night-xhdpi
│ │ │ └── android12splash.png
│ │ │ ├── drawable-night-xxhdpi
│ │ │ └── android12splash.png
│ │ │ ├── drawable-night-xxxhdpi
│ │ │ └── android12splash.png
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── values-night-v31
│ │ │ └── styles.xml
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values-v31
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ └── styles.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── techtalk
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-night-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-night
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-en
│ │ │ └── strings.xml
│ │ │ ├── values-ko
│ │ │ └── strings.xml
│ │ │ ├── values-night-v31
│ │ │ └── styles.xml
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values-v31
│ │ │ └── styles.xml
│ │ │ ├── values
│ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ ├── locales_config.xml
│ │ │ └── provider_paths.xml
│ │ ├── prod
│ │ ├── google-services.json
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── values-night-v31
│ │ │ └── styles.xml
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values-v31
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── character
│ ├── blue_01.svg
│ ├── blue_02.svg
│ ├── blue_03.svg
│ ├── blue_04.svg
│ ├── blue_05.svg
│ ├── blue_06.svg
│ ├── blue_07.svg
│ ├── green_01.svg
│ ├── green_02.svg
│ ├── green_03.svg
│ ├── green_04.svg
│ ├── green_05.svg
│ ├── green_06.svg
│ ├── green_07.svg
│ ├── purple_01.svg
│ ├── purple_02.svg
│ ├── purple_03.svg
│ ├── purple_04.svg
│ ├── purple_05.svg
│ ├── purple_06.svg
│ ├── purple_07.svg
│ ├── red_01.svg
│ ├── red_02.svg
│ ├── red_03.svg
│ ├── red_04.svg
│ ├── red_05.svg
│ ├── red_06.svg
│ └── red_07.svg
├── fonts
│ └── pretendard
│ │ ├── Pretendard-Bold.otf
│ │ ├── Pretendard-Medium.otf
│ │ ├── Pretendard-Regular.otf
│ │ └── Pretendard-SemiBold.otf
├── icons
│ ├── advanced_illust.svg
│ ├── ai_interview_logo.svg
│ ├── alarm.svg
│ ├── ar_up_down.svg
│ ├── arrow_down.svg
│ ├── arrow_down_thick.svg
│ ├── arrow_left.svg
│ ├── arrow_left_thick.svg
│ ├── arrow_right.svg
│ ├── arrow_right_thick.svg
│ ├── arrow_up.svg
│ ├── arrow_up_thick.svg
│ ├── avatar_1.svg
│ ├── beginner_illust.svg
│ ├── blog.svg
│ ├── boomark.svg
│ ├── bullet.svg
│ ├── camera.svg
│ ├── chat_bubble_tale.svg
│ ├── check.svg
│ ├── check_note.svg
│ ├── check_thick.svg
│ ├── circle_small_close.svg
│ ├── close.svg
│ ├── close_thick.svg
│ ├── common_interview_logo.svg
│ ├── common_practical_type_illust.svg
│ ├── common_single_type_illust.svg
│ ├── core_circle.svg
│ ├── correct.svg
│ ├── correct_indicator.svg
│ ├── dark_check_box.svg
│ ├── data_structure.svg
│ ├── delete_or_wrong.svg
│ ├── dice.svg
│ ├── error_indicator.svg
│ ├── expansion_arrow_indicator.svg
│ ├── fail_result.svg
│ ├── follow_up_question.svg
│ ├── google_logo.svg
│ ├── home.svg
│ ├── icon_app_bar_left.svg
│ ├── icon_mic.svg
│ ├── incorrect.svg
│ ├── intermediate_illust.svg
│ ├── listed_note.svg
│ ├── menu_thick.svg
│ ├── mistake_note_illust.svg
│ ├── more_circle.svg
│ ├── new_camera.svg
│ ├── new_right_arrow.svg
│ ├── note.svg
│ ├── pass_result.svg
│ ├── pencil.svg
│ ├── play.svg
│ ├── plus.svg
│ ├── plus_thick.svg
│ ├── pondering_illusration.svg
│ ├── red_alert.svg
│ ├── red_warnning_big.svg
│ ├── reset.svg
│ ├── resume_interview_logo.svg
│ ├── right_aligned_right_arrow.svg
│ ├── round_blue_circle.svg
│ ├── rounded_blue_exclamation.svg
│ ├── rounded_camera.svg
│ ├── rounded_check.svg
│ ├── rounded_check_small_blue.svg
│ ├── rounded_check_thick.svg
│ ├── rounded_close.svg
│ ├── rounded_close_blue.svg
│ ├── rounded_close_small_red.svg
│ ├── rounded_close_thick.svg
│ ├── rounded_exclamation.svg
│ ├── rounded_more.svg
│ ├── rounded_os.svg
│ ├── rounded_plus.svg
│ ├── rounded_plus_big.svg
│ ├── rounded_send.svg
│ ├── rounded_send_inactive.svg
│ ├── rounded_top.svg
│ ├── rounded_warnning_small_red.svg
│ ├── search.svg
│ ├── search_thick.svg
│ ├── send.svg
│ ├── send_activate.svg
│ ├── send_up.svg
│ ├── sparkle.svg
│ ├── star_deco.svg
│ ├── study.svg
│ ├── summary_note.svg
│ ├── talker.svg
│ ├── tech_talk_logo.svg
│ ├── text_field_mic.svg
│ ├── typing_mode_aa.svg
│ ├── typing_mode_tooltip.svg
│ ├── user.svg
│ ├── video_study.svg
│ ├── video_upload.svg
│ ├── warning.svg
│ ├── wemo_check.svg
│ ├── wrong_indicator.svg
│ ├── youtube_interview_logo.svg
│ ├── youtube_logo.svg
│ └── youtube_promotion_illust.svg
├── images
│ ├── app_icon.png
│ ├── avatar_1.png
│ ├── blank_profile.png
│ ├── induction_practical.png
│ ├── induction_resume.png
│ ├── induction_single.png
│ ├── sparkle.svg
│ ├── splash_image.png
│ ├── topic_android.png
│ ├── topic_data_structure.png
│ ├── topic_database.png
│ ├── topic_flutter.png
│ ├── topic_ios.png
│ ├── topic_java.png
│ ├── topic_javascript.png
│ ├── topic_nest_js.png
│ ├── topic_network.png
│ ├── topic_operating_system.png
│ ├── topic_react.png
│ ├── topic_spring.png
│ ├── topic_swift.png
│ ├── topic_webFrontend.png
│ └── welcome_techtalk.svg
├── json
│ └── skills.json
├── lottie
│ ├── document_loading.json
│ ├── done.json
│ └── video_uploading.json
└── translations
│ ├── en.json
│ └── ko.json
├── devtools_options.yaml
├── flutter_native_splash-dev.yaml
├── flutter_native_splash-prod.yaml
├── icons_launcher.yaml
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Localization
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ └── ko.lproj
│ │ └── InfoPlist.strings
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── Runner.xcscheme
│ │ ├── dev.xcscheme
│ │ └── prod.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ ├── LaunchBackground.imageset
│ │ │ ├── Contents.json
│ │ │ ├── background.png
│ │ │ └── darkbackground.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── GoogleService-Info.plist
│ ├── Info.plist
│ ├── Runner-Bridging-Header.h
│ ├── Runner.entitlements
│ ├── en.lproj
│ │ ├── LaunchScreen.strings
│ │ └── Main.strings
│ └── ko.lproj
│ │ └── Main.strings
├── config
│ ├── dev
│ │ └── GoogleService-Info.plist
│ └── prod
│ │ └── GoogleService-Info.plist
├── firebase_app_id_file.json
└── firebase_app_id_file_dev.json
├── lib
├── app
│ ├── di
│ │ ├── app_binding.dart
│ │ ├── feature_di_interface.dart
│ │ ├── index.dart
│ │ └── modules
│ │ │ ├── auth_di.dart
│ │ │ ├── blog_di.dart
│ │ │ ├── chat_di.dart
│ │ │ ├── interview_di.dart
│ │ │ ├── system_di.dart
│ │ │ ├── tech_set_di.dart
│ │ │ ├── topic_di.dart
│ │ │ ├── user_di.dart
│ │ │ └── youtube_di.dart
│ ├── entrypoints
│ │ ├── main_dev.dart
│ │ └── main_prod.dart
│ ├── environment
│ │ ├── app_version.dart
│ │ ├── environment.enum.dart
│ │ ├── firebase
│ │ │ ├── firebase_options.dart
│ │ │ └── firebase_options_dev.dart
│ │ └── flavor.dart
│ ├── localization
│ │ ├── app_locale.dart
│ │ ├── locale_keys.g.dart
│ │ ├── localization_enum.dart
│ │ └── localization_utils.dart
│ ├── network
│ │ ├── app_dio.dart
│ │ └── app_youtube_explode.dart
│ ├── notification
│ │ ├── app_local_notification.dart
│ │ └── app_notification.dart
│ ├── router
│ │ ├── deeplink
│ │ │ ├── deep_link_define.enum.dart
│ │ │ ├── deeplink_handler.dart
│ │ │ └── deeplink_handler_intent.p.dart
│ │ ├── navigation_context.dart
│ │ ├── route_extension.dart
│ │ ├── router.dart
│ │ └── router.g.dart
│ ├── style
│ │ ├── app_color.dart
│ │ ├── app_text_style.dart
│ │ ├── app_theme.dart
│ │ ├── index.dart
│ │ └── themes
│ │ │ ├── app_bar_theme.dart
│ │ │ ├── filled_button_theme.dart
│ │ │ ├── input_decoration_theme.dart
│ │ │ └── outlined_button_theme.dart
│ └── util
│ │ ├── app_format_handler.dart
│ │ ├── app_formatter.dart
│ │ └── app_logger.dart
├── core
│ ├── constants
│ │ ├── assets.dart
│ │ ├── content_filter_category_type.enum.dart
│ │ ├── interview_greetings.dart
│ │ ├── job_group.enum.dart
│ │ ├── profile_setting_type.enum.dart
│ │ ├── slack_notification_type.enum.dart
│ │ └── stored_topic.dart
│ ├── firebase_pagination_result.dart
│ ├── firebase_query_constraints.dart
│ ├── helper
│ │ ├── bool_extension.dart
│ │ ├── cached_image_size_extension.dart
│ │ ├── date_time_extension.dart
│ │ ├── debouncer.dart
│ │ ├── duration_extension.dart
│ │ ├── global_event_key.dart
│ │ ├── hook_helper.dart
│ │ ├── int_extension.dart
│ │ ├── list_extension.dart
│ │ ├── riverpod_extension.dart
│ │ ├── string_extension.dart
│ │ ├── string_generator.dart
│ │ └── validation_extension.dart
│ ├── index.dart
│ ├── modules
│ │ ├── base_use_case
│ │ │ ├── base_no_future_use_case.dart
│ │ │ ├── base_no_networking_use_case.dart
│ │ │ ├── base_no_param_stream_use_case.dart
│ │ │ ├── base_no_param_use_case.dart
│ │ │ ├── base_stream_use_case.dart
│ │ │ └── base_use_case.dart
│ │ ├── converter
│ │ │ ├── duration_converter.dart
│ │ │ ├── string_to_duration_conveter.dart
│ │ │ └── time_stamp_converter.dart
│ │ ├── device
│ │ │ └── app_device.dart
│ │ ├── error_handling
│ │ │ └── result.dart
│ │ ├── exceptions
│ │ │ ├── custom_exception.dart
│ │ │ └── network_exception.dart
│ │ ├── local
│ │ │ └── app_local.dart
│ │ └── regex
│ │ │ └── app_validator.dart
│ ├── query_constraints_applier.dart
│ └── services
│ │ ├── app_size.dart
│ │ ├── dialog_service.dart
│ │ ├── slack_notification_service.dart
│ │ └── snack_bar_service.dart
├── features
│ ├── auth
│ │ ├── auth.dart
│ │ ├── data_source
│ │ │ └── remote
│ │ │ │ ├── auth_remote_data_source.dart
│ │ │ │ └── auth_remote_data_source_impl.dart
│ │ ├── repositories
│ │ │ ├── auth_repository.dart
│ │ │ ├── auth_repository_impl.dart
│ │ │ └── entities
│ │ │ │ └── user_account_provider.enum.dart
│ │ └── usecases
│ │ │ ├── sign_in_oauth_use_case.dart
│ │ │ └── sign_out_use_case.dart
│ ├── blog
│ │ ├── data_sources
│ │ │ └── remote
│ │ │ │ ├── blog_ref.dart
│ │ │ │ ├── blog_remote_data_source.dart
│ │ │ │ ├── blog_remote_data_source_impl.dart
│ │ │ │ └── models
│ │ │ │ ├── blog_main_model.dart
│ │ │ │ ├── blog_main_model.g.dart
│ │ │ │ ├── company_model.dart
│ │ │ │ └── company_model.g.dart
│ │ ├── index.dart
│ │ ├── repository
│ │ │ ├── blog_repository.dart
│ │ │ ├── blog_repository_impl.dart
│ │ │ ├── entity
│ │ │ │ ├── blog_base_entity.dart
│ │ │ │ ├── blog_shell_entity.dart
│ │ │ │ └── company_set.dart
│ │ │ └── enum
│ │ │ │ └── blog_platform_type.enum.dart
│ │ └── use_case
│ │ │ ├── get_blog_contents_use_case.dart
│ │ │ └── param
│ │ │ └── get_blog_contents_params.dart
│ ├── chat
│ │ ├── chat.dart
│ │ ├── data_source
│ │ │ └── remote
│ │ │ │ ├── chat_ref.dart
│ │ │ │ ├── chat_remote_data_source.dart
│ │ │ │ ├── chat_remote_data_source_impl.dart
│ │ │ │ └── models
│ │ │ │ ├── chat_model.dart
│ │ │ │ ├── chat_model.g.dart
│ │ │ │ ├── chat_qna_model.dart
│ │ │ │ ├── chat_qna_model.g.dart
│ │ │ │ ├── chat_room_model.dart
│ │ │ │ ├── chat_room_model.g.dart
│ │ │ │ ├── follow_up_qna_model.dart
│ │ │ │ ├── follow_up_qna_model.g.dart
│ │ │ │ ├── resume_field_model.dart
│ │ │ │ └── resume_field_model.g.dart
│ │ ├── repositories
│ │ │ ├── chat_repository.dart
│ │ │ ├── chat_repository_impl.dart
│ │ │ ├── entities
│ │ │ │ ├── answer_chat_entity.dart
│ │ │ │ ├── base_qna_entity.dart
│ │ │ │ ├── chat_history_collection_entity.dart
│ │ │ │ ├── chat_message_entity.dart
│ │ │ │ ├── chat_progress_info_entity.dart
│ │ │ │ ├── chat_qna_entity.dart
│ │ │ │ ├── chat_room_entity.dart
│ │ │ │ ├── feedback_chat_entity.dart
│ │ │ │ ├── feedback_response_entity.dart
│ │ │ │ ├── follow_up_qna_entity.dart
│ │ │ │ ├── guide_chat_entity.dart
│ │ │ │ ├── proficiency_qna_entity.dart
│ │ │ │ ├── question_chat_entity.dart
│ │ │ │ ├── resume_qna_entity.dart
│ │ │ │ ├── selectable_qna_entity.dart
│ │ │ │ ├── youtube_interview_room_entity.dart
│ │ │ │ └── youtube_qna_entity.dart
│ │ │ └── enums
│ │ │ │ ├── ai_answer_progress.enum.dart
│ │ │ │ ├── answer_state.enum.dart
│ │ │ │ ├── chat_room_progress.enum.dart
│ │ │ │ ├── chat_type.enum.dart
│ │ │ │ ├── follow_up_status.enum.dart
│ │ │ │ ├── interview_level.enum.dart
│ │ │ │ ├── interview_progress.enum.dart
│ │ │ │ ├── interview_result.dart
│ │ │ │ ├── interview_type.enum.dart
│ │ │ │ ├── interviewer_type.enum.dart
│ │ │ │ ├── qna_type.enum.dart
│ │ │ │ └── resume_question_type.enum.dart
│ │ └── use_cases
│ │ │ ├── create_chat_messages_use_case.dart
│ │ │ ├── create_chat_room_use_case.dart
│ │ │ ├── create_resume_question_use_case.dart
│ │ │ ├── get_chat_message_history_use_case.dart
│ │ │ ├── get_chat_qnas_use_case.dart
│ │ │ ├── get_chat_rooms_use_case.dart
│ │ │ ├── get_one_line_interview_feedback_use_case.dart
│ │ │ ├── get_random_qnas_use_case.dart
│ │ │ ├── recrod_to_text_use_case.dart
│ │ │ ├── report_chat_use_case.dart
│ │ │ ├── set_ai_feedback_use_case.dart
│ │ │ ├── set_ai_follow_up_question_use_case.dart
│ │ │ └── set_gemini_ai_feedback_use_case.dart
│ ├── interview
│ │ ├── data_source
│ │ │ └── local
│ │ │ │ ├── boxes
│ │ │ │ ├── proficiency_question_history_box.dart
│ │ │ │ └── proficiency_question_history_box.g.dart
│ │ │ │ ├── interview_local_data_source.dart
│ │ │ │ └── interview_local_data_source_impl.dart
│ │ ├── index.dart
│ │ ├── repository
│ │ │ ├── interview_repository.dart
│ │ │ └── interview_repository_impl.dart
│ │ └── use_case
│ │ │ ├── create_proficiency_interview_qna_use_case.dart
│ │ │ ├── exception
│ │ │ └── ai_creation_failed_exception.dart
│ │ │ ├── param
│ │ │ └── start_interview_flow_use_case_param.dart
│ │ │ └── start_interview_flow_use_case.dart
│ ├── system
│ │ ├── data_source
│ │ │ ├── local
│ │ │ │ ├── boxes
│ │ │ │ │ ├── system_box.dart
│ │ │ │ │ ├── system_box.g.dart
│ │ │ │ │ └── system_local_data_source_impl.dart
│ │ │ │ └── system_local_data_source.dart
│ │ │ └── remote
│ │ │ │ ├── models
│ │ │ │ ├── version_model.dart
│ │ │ │ └── version_model.g.dart
│ │ │ │ ├── system_ref.dart
│ │ │ │ ├── system_remote_data_source.dart
│ │ │ │ └── system_remote_data_source_impl.dart
│ │ ├── repositories
│ │ │ ├── entities
│ │ │ │ ├── version_entity.dart
│ │ │ │ └── youtube_gpt_model_type.enum.dart
│ │ │ ├── system_repository.dart
│ │ │ └── system_repository_impl.dart
│ │ ├── system.dart
│ │ └── use_cases
│ │ │ ├── get_version_info_use_case.dart
│ │ │ └── set_entry_flow_use_case.dart
│ ├── tech_set
│ │ ├── data_source
│ │ │ ├── local
│ │ │ │ ├── boxes
│ │ │ │ │ ├── tech_set_box.dart
│ │ │ │ │ └── tech_set_box.g.dart
│ │ │ │ ├── tech_set_data_source_impl.dart
│ │ │ │ └── tech_set_local_data_source.dart
│ │ │ └── remote
│ │ │ │ ├── job_group_ref.dart
│ │ │ │ ├── model
│ │ │ │ ├── job_group_model.dart
│ │ │ │ ├── job_group_model.g.dart
│ │ │ │ ├── skill_model.dart
│ │ │ │ ├── skill_model.g.dart
│ │ │ │ ├── tech_set_keys_model.dart
│ │ │ │ └── tech_set_keys_model.g.dart
│ │ │ │ ├── skill_ref.dart
│ │ │ │ ├── tech_set_remote_data_source.dart
│ │ │ │ └── tech_set_remote_data_source_impl.dart
│ │ ├── repositories
│ │ │ ├── entities
│ │ │ │ └── tech_set_entity.dart
│ │ │ ├── enums
│ │ │ │ ├── skill_category.enum.dart
│ │ │ │ └── tech_set_type.enum.dart
│ │ │ ├── tech_set_repository.dart
│ │ │ └── tech_set_repository_impl.dart
│ │ ├── tech_set.dart
│ │ └── usecases
│ │ │ ├── get_jobs_use_case.dart
│ │ │ └── get_searched_skills_use_case.dart
│ ├── topic
│ │ ├── data_source
│ │ │ ├── local
│ │ │ │ ├── boxes
│ │ │ │ │ ├── qna_box.dart
│ │ │ │ │ ├── qna_box.g.dart
│ │ │ │ │ ├── qna_list_box.dart
│ │ │ │ │ └── qna_list_box.g.dart
│ │ │ │ ├── topic_local_data_source.dart
│ │ │ │ └── topic_local_data_source_impl.dart
│ │ │ └── remote
│ │ │ │ ├── models
│ │ │ │ ├── topic_category_model.dart
│ │ │ │ ├── topic_category_model.g.dart
│ │ │ │ ├── topic_model.dart
│ │ │ │ ├── topic_model.g.dart
│ │ │ │ ├── topic_qna_model.dart
│ │ │ │ ├── topic_qna_model.g.dart
│ │ │ │ ├── wrong_answer_model.dart
│ │ │ │ └── wrong_answer_model.g.dart
│ │ │ │ ├── topic_remote_data_source.dart
│ │ │ │ ├── topic_remote_data_source_impl.dart
│ │ │ │ └── topics_ref.dart
│ │ ├── repositories
│ │ │ ├── entities
│ │ │ │ ├── common_qna_entity.dart
│ │ │ │ ├── topic_category_entity.dart
│ │ │ │ ├── topic_entity.dart
│ │ │ │ └── wrong_answer_entity.dart
│ │ │ ├── topic_repository.dart
│ │ │ └── topic_repository_impl.dart
│ │ ├── topic.dart
│ │ └── usecases
│ │ │ ├── get_cached_skills_use_case.dart
│ │ │ ├── get_topic_qnas_use_case.dart
│ │ │ ├── get_wrong_answers_use_case.dart
│ │ │ └── update_wrong_answer_use_case.dart
│ ├── user
│ │ ├── data_source
│ │ │ ├── local
│ │ │ │ ├── boxes
│ │ │ │ │ ├── user_box.dart
│ │ │ │ │ └── user_box.g.dart
│ │ │ │ ├── user_local_data_source.dart
│ │ │ │ └── user_local_data_source_impl.dart
│ │ │ └── remote
│ │ │ │ ├── fire_storage_user_ref.dart
│ │ │ │ ├── models
│ │ │ │ ├── bookmarked_youtube_content_model.dart
│ │ │ │ ├── bookmarked_youtube_content_model.g.dart
│ │ │ │ ├── marked_common_question_model.dart
│ │ │ │ ├── marked_common_question_model.g.dart
│ │ │ │ ├── uploaded_youtube_content_model.dart
│ │ │ │ ├── uploaded_youtube_content_model.g.dart
│ │ │ │ ├── user_model.dart
│ │ │ │ ├── user_model.g.dart
│ │ │ │ ├── watched_youtube_content_model.dart
│ │ │ │ └── watched_youtube_content_model.g.dart
│ │ │ │ ├── user_remote_data_source.dart
│ │ │ │ ├── user_remote_data_source_impl.dart
│ │ │ │ └── users_ref.dart
│ │ ├── repositories
│ │ │ ├── entities
│ │ │ │ └── user_entity.dart
│ │ │ ├── user_repository.dart
│ │ │ └── user_repository_impl.dart
│ │ ├── usecases
│ │ │ ├── check_nickname_duplication.dart
│ │ │ ├── create_user_use_case.dart
│ │ │ ├── disable_review_available_state_use_case.dart
│ │ │ ├── edit_user_profile_use_case.dart
│ │ │ ├── get_user_use_case.dart
│ │ │ ├── increase_completed_interview_count_use_case.dart
│ │ │ ├── resign_user_info_use_case.dart
│ │ │ ├── sotre_user_local_info_use_case.dart
│ │ │ ├── update_last_login_date_use_cae.dart
│ │ │ └── update_user_use_case.dart
│ │ └── user.dart
│ └── youtube
│ │ ├── data_source
│ │ └── remote
│ │ │ ├── models
│ │ │ ├── channel_model.dart
│ │ │ ├── channel_model.g.dart
│ │ │ ├── paragraph_model.dart
│ │ │ ├── paragraph_model.g.dart
│ │ │ ├── summary_model.dart
│ │ │ ├── summary_model.g.dart
│ │ │ ├── youtube_detail_model.dart
│ │ │ ├── youtube_detail_model.g.dart
│ │ │ ├── youtube_main_entity.dart
│ │ │ ├── youtube_main_model.dart
│ │ │ ├── youtube_main_model.g.dart
│ │ │ ├── youtube_qna_model.dart
│ │ │ └── youtube_qna_model.g.dart
│ │ │ ├── youtube_ref.dart
│ │ │ ├── youtube_remote_data_source.dart
│ │ │ └── youtube_remote_data_source_impl.dart
│ │ ├── index.dart
│ │ ├── repositories
│ │ ├── entities
│ │ │ ├── caption_entity.dart
│ │ │ ├── channel_detail_entity.dart
│ │ │ ├── channel_entity.dart
│ │ │ ├── paragraph_entity.dart
│ │ │ ├── paragraph_entity.g.dart
│ │ │ ├── summary_entity.dart
│ │ │ ├── summary_entity.g.dart
│ │ │ ├── video_overview_entity.dart
│ │ │ ├── youtube_ai_main_theme_response.dart
│ │ │ ├── youtube_ai_qna_response.dart
│ │ │ ├── youtube_ai_summary_response_entity.dart
│ │ │ ├── youtube_core_video_entity.dart
│ │ │ └── youtube_video_entity.dart
│ │ ├── enums
│ │ │ └── youtube_content_analyzed_type.dart
│ │ ├── youtube_repository.dart
│ │ ├── youtube_repository_impl.dart
│ │ └── youtube_repository_impl_internal.p.dart
│ │ └── usecases
│ │ ├── analyze_youtube_use_case.dart
│ │ ├── enums
│ │ └── youtube_upload_failed_type.dart
│ │ ├── exception
│ │ └── youtube_upload_exception.dart
│ │ ├── get_main_summary_theme_use_case.dart
│ │ ├── get_qnas_from_youtube_content_use_case.dart
│ │ ├── get_remain_summary_form_youtube_content_use_case.dart
│ │ ├── get_skill_ids_from_youtube_content_use_case.dart
│ │ ├── get_summary_from_youtube_content_use_case.dart
│ │ ├── get_youtube_overview_list_use_case.dart
│ │ ├── get_youtube_video_data_use_case.dart
│ │ └── qnas.json
└── presentation
│ ├── app.dart
│ ├── pages
│ ├── blog
│ │ ├── blog_main
│ │ │ ├── blog_main_event.dart
│ │ │ ├── blog_main_page.dart
│ │ │ ├── blog_main_state.dart
│ │ │ ├── provider
│ │ │ │ ├── blog_category_provider.dart
│ │ │ │ ├── blog_content_pagination_provider.dart
│ │ │ │ └── blog_content_pagination_provider.g.dart
│ │ │ └── widgets
│ │ │ │ ├── category_slider_bar.p.dart
│ │ │ │ ├── content_list_view.p.dart
│ │ │ │ └── scaffold.p.dart
│ │ └── blog_origin_page.dart
│ │ │ └── blog_origin_page.dart
│ ├── home
│ │ ├── home_event.dart
│ │ ├── home_page.dart
│ │ ├── internal_home_event.p.dart
│ │ └── widgets
│ │ │ ├── cheer_up_message_card.dart
│ │ │ ├── common_interview_card.dart
│ │ │ ├── home_state.dart
│ │ │ ├── interview_indicator_card.dart
│ │ │ ├── new_feature_card.p.dart
│ │ │ ├── proficiency_interview_card.dart
│ │ │ ├── resume_interview_card.dart
│ │ │ ├── youtube_content_feature_card.p.dart
│ │ │ └── youtube_interview_card.p.dart
│ ├── interview
│ │ ├── chat
│ │ │ ├── chat_event.dart
│ │ │ ├── chat_page.dart
│ │ │ ├── chat_state.dart
│ │ │ ├── constant
│ │ │ │ └── recrod_progress_state.dart
│ │ │ ├── providers
│ │ │ │ ├── chat_async_adapter_provider.dart
│ │ │ │ ├── chat_async_adapter_provider.g.dart
│ │ │ │ ├── chat_message_history_internal_event.p.dart
│ │ │ │ ├── chat_message_history_provider.dart
│ │ │ │ ├── chat_message_history_provider.g.dart
│ │ │ │ ├── chat_qnas_provider.dart
│ │ │ │ ├── chat_qnas_provider.g.dart
│ │ │ │ ├── chat_scroll_controller.dart
│ │ │ │ ├── chat_scroll_controller.g.dart
│ │ │ │ ├── common_type_chat_message_history_internal_event.p.dart
│ │ │ │ ├── interview_progress_state_provider.dart
│ │ │ │ ├── interview_progress_state_provider.g.dart
│ │ │ │ ├── interview_result_page_view_controller_provider.dart
│ │ │ │ ├── interview_result_page_view_controller_provider.g.dart
│ │ │ │ ├── is_follow_up_process_active_provider.dart
│ │ │ │ ├── is_follow_up_process_active_provider.g.dart
│ │ │ │ ├── main_input_controller_provider.dart
│ │ │ │ ├── main_input_controller_provider.g.dart
│ │ │ │ ├── one_line_feedback_provider.dart
│ │ │ │ ├── one_line_feedback_provider.g.dart
│ │ │ │ ├── proficiency_type_chat_message_history_internal_event.p.dart
│ │ │ │ ├── recognized_text_provider.dart
│ │ │ │ ├── recognized_text_provider.g.dart
│ │ │ │ ├── recommended_youtube_video_provider.dart
│ │ │ │ ├── recommended_youtube_video_provider.g.dart
│ │ │ │ ├── resume_type_chat_message_history_internal_event.p.dart
│ │ │ │ ├── selected_chat_room_provider.dart
│ │ │ │ ├── selected_chat_room_provider.g.dart
│ │ │ │ ├── speech_mode_provider.dart
│ │ │ │ ├── speech_mode_provider.g.dart
│ │ │ │ ├── speech_to_text_provider.dart
│ │ │ │ └── youtube_type_chat_message_history_internal_event.p.dart
│ │ │ └── widgets
│ │ │ │ ├── bubble.dart
│ │ │ │ ├── chat_page_app_bar.p.dart
│ │ │ │ ├── chat_page_scaffold.dart
│ │ │ │ ├── chat_page_watch_view.p.dart
│ │ │ │ ├── gradient_shine_effect_view.dart
│ │ │ │ ├── interview_result
│ │ │ │ ├── interview_induction_view.p.dart
│ │ │ │ ├── interview_result_dialog.dart
│ │ │ │ ├── one_line_review_view.p.dart
│ │ │ │ └── pass_or_fail_view.p.dart
│ │ │ │ ├── interview_tab_view
│ │ │ │ ├── bottom_input_field.dart
│ │ │ │ ├── bottom_speech_to_text_field.dart
│ │ │ │ ├── bubble_indicator.dart
│ │ │ │ ├── horizon_roating_dots.dart
│ │ │ │ ├── interview_tab_view.dart
│ │ │ │ ├── rounded_mic_motion_view.dart
│ │ │ │ └── staggered_dot_wave.dart
│ │ │ │ ├── qna_detail_box.dart
│ │ │ │ ├── qna_expansion_tile.dart
│ │ │ │ └── qna_tab_view.dart
│ │ ├── chat_list
│ │ │ ├── chat_list_event.dart
│ │ │ ├── chat_list_page.dart
│ │ │ ├── chat_list_state.dart
│ │ │ ├── local_widgets
│ │ │ │ └── chat_room_item_view.dart
│ │ │ └── providers
│ │ │ │ ├── chat_list_route_arg.dart
│ │ │ │ ├── chat_list_route_arg.g.dart
│ │ │ │ ├── interview_rooms_provider.dart
│ │ │ │ ├── interview_rooms_provider.g.dart
│ │ │ │ ├── practical_chat_room_list_provider.dart
│ │ │ │ └── practical_chat_room_list_provider.g.dart
│ │ ├── created_question_list
│ │ │ ├── constant
│ │ │ │ └── created_question_list_route_arg.dart
│ │ │ ├── created_question_list_event.dart
│ │ │ ├── created_question_list_page.dart
│ │ │ ├── created_question_list_state.dart
│ │ │ └── provider
│ │ │ │ ├── created_question_list_rout_arg_provider.dart
│ │ │ │ ├── created_question_list_rout_arg_provider.g.dart
│ │ │ │ ├── listed_selectable_qnas_provider.dart
│ │ │ │ └── listed_selectable_qnas_provider.g.dart
│ │ ├── interview_level_selection
│ │ │ ├── constant
│ │ │ │ └── interview_level_selection_route_arg.dart
│ │ │ ├── interview_level_selection_event.dart
│ │ │ ├── interview_level_selection_page.dart
│ │ │ ├── interview_level_selection_state.dart
│ │ │ ├── provider
│ │ │ │ ├── interview_level_selection_route_arg_provider.dart
│ │ │ │ ├── interview_level_selection_route_arg_provider.g.dart
│ │ │ │ ├── level_selection_page_view_controller.dart
│ │ │ │ └── level_selection_page_view_controller.g.dart
│ │ │ └── widgets
│ │ │ │ ├── leading_view.p.dart
│ │ │ │ ├── level_indicator_page_view.p.dart
│ │ │ │ ├── level_selection_btns.p.dart
│ │ │ │ └── scaffold.p.dart
│ │ ├── proficiency_interview_topic_selection
│ │ │ ├── constant
│ │ │ │ └── proficiency_interview_topic_selection_route_arg.dart
│ │ │ ├── proficiency_interview_topic_selection_event.dart
│ │ │ ├── proficiency_interview_topic_selection_page.dart
│ │ │ ├── proficiency_interview_topic_selection_state.dart
│ │ │ ├── provider
│ │ │ │ ├── proficiency_interview_topic_selection_route_arg_provide.dart
│ │ │ │ ├── proficiency_interview_topic_selection_route_arg_provide.g.dart
│ │ │ │ ├── selected_tech_sets_provider.dart
│ │ │ │ └── selected_tech_sets_provider.g.dart
│ │ │ └── widgets
│ │ │ │ ├── leading_view.p.dart
│ │ │ │ ├── recommended_tech_set_view.p.dart
│ │ │ │ ├── scaffold.p.dart
│ │ │ │ ├── search_bar.p.dart
│ │ │ │ └── selected_tech_set_list_view.p.dart
│ │ ├── question_count_select
│ │ │ ├── constant
│ │ │ │ └── select_question_count_route_argument.dart
│ │ │ ├── providers
│ │ │ │ ├── select_question_count_route_arg.dart
│ │ │ │ ├── select_question_count_route_arg.g.dart
│ │ │ │ ├── selected_question_count_provider.dart
│ │ │ │ └── selected_question_count_provider.g.dart
│ │ │ ├── question_count_select_event.dart
│ │ │ ├── question_count_select_page.dart
│ │ │ └── question_count_select_state.dart
│ │ ├── question_creation
│ │ │ ├── constant
│ │ │ │ └── question_creation_route_arg.dart
│ │ │ ├── provider
│ │ │ │ ├── created_proficiency_qnas_provider.dart
│ │ │ │ ├── created_proficiency_qnas_provider.g.dart
│ │ │ │ ├── question_creation_route_arg_provider.dart
│ │ │ │ └── question_creation_route_arg_provider.g.dart
│ │ │ ├── question_creation_event.dart
│ │ │ ├── question_creation_page.dart
│ │ │ ├── question_creation_state.dart
│ │ │ └── widgets
│ │ │ │ ├── app_bar.p.dart
│ │ │ │ ├── bottom_fixed_button.p.dart
│ │ │ │ ├── illust_view.p.dart
│ │ │ │ ├── leading_view.p.dart
│ │ │ │ └── scaffold.p.dart
│ │ ├── select_common_question
│ │ │ ├── constant
│ │ │ │ └── select_common_question_route_arg.dart
│ │ │ ├── provider
│ │ │ │ ├── select_common_question_route_arg_provider.dart
│ │ │ │ ├── select_common_question_route_arg_provider.g.dart
│ │ │ │ ├── selectable_common_qnas_provider.dart
│ │ │ │ ├── selectable_common_qnas_provider.g.dart
│ │ │ │ ├── selected_interview_topic_provider.dart
│ │ │ │ └── selected_interview_topic_provider.g.dart
│ │ │ ├── select_common_question_event.dart
│ │ │ ├── select_common_question_page.dart
│ │ │ ├── select_common_question_state.dart
│ │ │ └── widgets
│ │ │ │ ├── tech_set_header.dart
│ │ │ │ └── tech_set_page.dart
│ │ ├── select_commotion_interview_type
│ │ │ ├── selected_common_interview_type_event.dart
│ │ │ └── selected_common_interview_type_page.dart
│ │ └── topic_select
│ │ │ ├── interview_topic_select_event.dart
│ │ │ ├── interview_topic_select_page.dart
│ │ │ ├── interview_topic_select_state.dart
│ │ │ └── providers
│ │ │ ├── interview_topic_select_route_arg.dart
│ │ │ ├── interview_topic_select_route_arg.g.dart
│ │ │ ├── interview_topic_select_scroll_controller_provider.dart
│ │ │ ├── interview_topic_select_scroll_controller_provider.g.dart
│ │ │ ├── selected_interview_topics_provider.dart
│ │ │ └── selected_interview_topics_provider.g.dart
│ ├── main
│ │ ├── main_event.dart
│ │ ├── main_page.dart
│ │ ├── main_state.dart
│ │ └── provider
│ │ │ ├── show_new_feature_indicator_provider.dart
│ │ │ └── show_new_feature_indicator_provider.g.dart
│ ├── my_info
│ │ ├── job_group_setting
│ │ │ ├── job_group_setting_event.dart
│ │ │ ├── job_group_setting_page.dart
│ │ │ ├── job_group_setting_state.dart
│ │ │ └── provider
│ │ │ │ ├── selected_job_groups_provider.dart
│ │ │ │ └── selected_job_groups_provider.g.dart
│ │ ├── my_page
│ │ │ ├── my_page.dart
│ │ │ ├── my_page_event.dart
│ │ │ ├── my_page_state.dart
│ │ │ └── widgets
│ │ │ │ ├── additional_info_card.dart
│ │ │ │ ├── card_list_tile_button.dart
│ │ │ │ ├── expandable_skill_wrapped_list_view.dart
│ │ │ │ ├── expandable_wrapped_list_view.dart
│ │ │ │ ├── intro_view.dart
│ │ │ │ ├── my_activity_card.p.dart
│ │ │ │ ├── my_info_page_scaffold.dart
│ │ │ │ ├── setting_card.dart
│ │ │ │ └── user_info_card.dart
│ │ ├── my_youtube_board
│ │ │ ├── constant
│ │ │ │ └── youtube_board_tab_type.enum.dart
│ │ │ ├── my_youtube_board_event.dart
│ │ │ ├── my_youtube_board_page.dart
│ │ │ ├── my_youtube_board_state.dart
│ │ │ ├── provider
│ │ │ │ ├── bookmarked_paging_controller_provider.dart
│ │ │ │ ├── bookmarked_paging_controller_provider.g.dart
│ │ │ │ ├── show_upload_floating_button_provider.dart
│ │ │ │ ├── show_upload_floating_button_provider.g.dart
│ │ │ │ ├── uploaded_history_paging_controller_provider.dart
│ │ │ │ ├── uploaded_history_paging_controller_provider.g.dart
│ │ │ │ ├── watched_history_paging_controller_provider.dart
│ │ │ │ └── watched_history_paging_controller_provider.g.dart
│ │ │ └── widgets
│ │ │ │ ├── bookmark_animated_deletable_list_item.p.dart
│ │ │ │ ├── bookmarked_tab_view.p.dart
│ │ │ │ ├── scaffold.p.dart
│ │ │ │ ├── tab_bar.p.dart
│ │ │ │ ├── uploaded_content_tab_view.p.dart
│ │ │ │ └── watched_history_tab_view.p.dart
│ │ ├── profile_setting
│ │ │ ├── profile_setting_event.dart
│ │ │ ├── profile_setting_page.dart
│ │ │ ├── profile_setting_state.dart
│ │ │ ├── providers
│ │ │ │ ├── picked_profile_img.dart
│ │ │ │ ├── picked_profile_img.g.dart
│ │ │ │ ├── profile_setting_route_arg_provider.dart
│ │ │ │ └── profile_setting_route_arg_provider.g.dart
│ │ │ └── widgets
│ │ │ │ ├── nickname_input_field.dart
│ │ │ │ ├── profile_img_button.dart
│ │ │ │ └── save_button.dart
│ │ └── skill_setting
│ │ │ ├── providers
│ │ │ ├── searched_skills_provider.dart
│ │ │ ├── searched_skills_provider.g.dart
│ │ │ ├── selected_skills_provider.dart
│ │ │ ├── selected_skills_provider.g.dart
│ │ │ └── skill_setting_state.dart
│ │ │ ├── skill_setting_event.dart
│ │ │ └── skill_setting_page.dart
│ ├── sign_in
│ │ ├── sign_in_event.dart
│ │ ├── sign_in_page.dart
│ │ └── widgets
│ │ │ ├── apple_sign_in_button.dart
│ │ │ └── google_sign_in_button.dart
│ ├── sign_up
│ │ ├── events
│ │ │ ├── job_group_step_event.p.dart
│ │ │ ├── nickname_step_event.p.dart
│ │ │ ├── sign_up_event.dart
│ │ │ └── skill_step_event.p.dart
│ │ ├── providers
│ │ │ ├── sign_up_jobs_provider.dart
│ │ │ ├── sign_up_jobs_provider.g.dart
│ │ │ ├── sign_up_step_controller.dart
│ │ │ ├── sign_up_step_controller.g.dart
│ │ │ ├── sign_up_topics_provider.dart
│ │ │ └── sign_up_topics_provider.g.dart
│ │ ├── sign_up_page.dart
│ │ ├── sign_up_state.dart
│ │ ├── steps
│ │ │ ├── job_group_select_step.dart
│ │ │ ├── nickname_input_step.dart
│ │ │ └── skill_select_step.dart
│ │ └── widgets
│ │ │ ├── select_result_chip_list_view.dart
│ │ │ ├── sign_up_app_bar.dart
│ │ │ └── sign_up_step_intro_message.dart
│ ├── splash
│ │ ├── splash_event.dart
│ │ └── splash_page.dart
│ ├── study
│ │ ├── learning
│ │ │ ├── learning_detail_event.dart
│ │ │ ├── learning_detail_page.dart
│ │ │ ├── providers
│ │ │ │ ├── current_study_qna_index_provider.dart
│ │ │ │ ├── current_study_qna_index_provider.g.dart
│ │ │ │ ├── study_answer_blur_provider.dart
│ │ │ │ ├── study_answer_blur_provider.g.dart
│ │ │ │ ├── study_bookmark_filter_provider.dart
│ │ │ │ ├── study_bookmark_filter_provider.g.dart
│ │ │ │ └── study_qna_controller.dart
│ │ │ └── widgets
│ │ │ │ ├── entire_question_list_view.dart
│ │ │ │ ├── learning_detail_bottom_controller_bar.dart
│ │ │ │ ├── learning_detail_page_app_bar.dart
│ │ │ │ ├── learning_detail_state.dart
│ │ │ │ ├── study_progress_indicator.dart
│ │ │ │ └── study_qna_view.dart
│ │ └── topic_selection
│ │ │ ├── providers
│ │ │ ├── selected_study_topic_provider.dart
│ │ │ ├── selected_study_topic_provider.g.dart
│ │ │ ├── study_topic_selection_scroll_controller.dart
│ │ │ ├── study_topic_selection_scroll_controller.g.dart
│ │ │ └── study_topic_selection_state.dart
│ │ │ ├── study_topic_selection_event.dart
│ │ │ ├── study_topic_selection_page.dart
│ │ │ └── widgets
│ │ │ ├── scaffold.p.dart
│ │ │ ├── study_topic_grid_view.p.dart
│ │ │ └── wrong_answer_card.p.dart
│ ├── wrong_answer_note
│ │ ├── local_widgets
│ │ │ ├── review_note_detail_app_bar.dart
│ │ │ ├── review_note_detail_bottom_controller_bar.dart
│ │ │ ├── review_note_qna_list_tile.dart
│ │ │ ├── wrong_answer_empty_list_placeholder.dart
│ │ │ ├── wrong_answer_floating_action_btn.dart
│ │ │ └── wrong_answer_header.dart
│ │ ├── providers
│ │ │ ├── review_note_detail_page_controller.dart
│ │ │ ├── review_note_detail_page_controller.g.dart
│ │ │ ├── selected_wrong_answer_topic_provider.dart
│ │ │ ├── selected_wrong_answer_topic_provider.g.dart
│ │ │ ├── wrong_answer_blur_provider.dart
│ │ │ ├── wrong_answer_blur_provider.g.dart
│ │ │ ├── wrong_answer_note_scroll_controller.dart
│ │ │ ├── wrong_answer_note_scroll_controller.g.dart
│ │ │ ├── wrong_answers_provider.dart
│ │ │ └── wrong_answers_provider.g.dart
│ │ ├── wrong_answer_detail_page.dart
│ │ ├── wrong_answer_note_event.dart
│ │ ├── wrong_answer_note_page.dart
│ │ └── wrong_answer_note_state.dart
│ └── youtube
│ │ ├── channel_detail
│ │ ├── channel_detail_event.dart
│ │ ├── channel_detail_page.dart
│ │ ├── channel_detail_state.dart
│ │ ├── provider
│ │ │ ├── channel_contents_pagination_provider.dart
│ │ │ ├── channel_contents_pagination_provider.g.dart
│ │ │ ├── channel_detail_provider.dart
│ │ │ ├── channel_detail_provider.g.dart
│ │ │ ├── channel_detail_route_arg_provider.dart
│ │ │ └── channel_detail_route_arg_provider.g.dart
│ │ └── widgets
│ │ │ ├── channel_info_view.p.dart
│ │ │ ├── content_grid_view.p.dart
│ │ │ └── scaffold.p.dart
│ │ ├── detail
│ │ ├── constant
│ │ │ └── youtube_play_state.enum.dart
│ │ ├── providers
│ │ │ ├── fab_scroll_expose_provider.dart
│ │ │ ├── is_bookmark_checked_provider.dart
│ │ │ ├── is_bookmark_checked_provider.g.dart
│ │ │ ├── is_interview_progress_ready_provider.dart
│ │ │ ├── is_interview_progress_ready_provider.g.dart
│ │ │ ├── related_youtube_videos_provider.dart
│ │ │ ├── related_youtube_videos_provider.g.dart
│ │ │ ├── selected_youtube_qnas_provider.dart
│ │ │ ├── youtube_content_qna_provider.dart
│ │ │ ├── youtube_content_qna_provider.g.dart
│ │ │ ├── youtube_detail_route_arg_provider.dart
│ │ │ ├── youtube_detail_route_arg_provider.g.dart
│ │ │ ├── youtube_main_info_provider.dart
│ │ │ ├── youtube_main_info_provider.g.dart
│ │ │ ├── youtube_player_provider.dart
│ │ │ ├── youtube_summary_provider.dart
│ │ │ ├── youtube_summary_provider.g.dart
│ │ │ ├── youtube_video_data_provider.dart
│ │ │ └── youtube_video_data_provider.g.dart
│ │ ├── widgets
│ │ │ ├── app_bar.p.dart
│ │ │ ├── bottom_floating_View.p.dart
│ │ │ ├── constants
│ │ │ │ └── contents_detail_tab_type.enum.dart
│ │ │ ├── content_info_view.p.dart
│ │ │ ├── interview_tab_view.p.dart
│ │ │ ├── scaffold.p.dart
│ │ │ ├── section_title.dart
│ │ │ ├── selectable_qna_box.dart
│ │ │ ├── summary_note_foldable_item.dart
│ │ │ ├── summary_tab_view.p.dart
│ │ │ ├── tab_bar.p.dart
│ │ │ └── youtube_player_place_holder.p.dart
│ │ ├── youtube_detail_event.dart
│ │ ├── youtube_detail_page.dart
│ │ └── youtube_detail_state.dart
│ │ ├── main
│ │ ├── provider
│ │ │ ├── selected_filter_category_provider.dart
│ │ │ ├── youtube_content_pagination_provider.dart
│ │ │ └── youtube_content_pagination_provider.g.dart
│ │ ├── widgets
│ │ │ ├── category_slider_bar.p.dart
│ │ │ ├── content_list_view.p.dart
│ │ │ ├── scaffold.p.dart
│ │ │ └── youtube_pagination_indicator_view.dart
│ │ ├── youtube_main_event.dart
│ │ ├── youtube_main_page.dart
│ │ └── youtube_main_state.dart
│ │ ├── upload
│ │ ├── analyze_youtube
│ │ │ ├── analyze_youtube_page.dart
│ │ │ ├── analyze_youtube_progerss_state.dart
│ │ │ └── analyze_youtube_progress_event.dart
│ │ ├── submitted_youtube_confirm
│ │ │ ├── provider
│ │ │ │ ├── submitted_youtube_confirm_arg_provider.dart
│ │ │ │ ├── submitted_youtube_confirm_arg_provider.g.dart
│ │ │ │ ├── submitted_youtube_info_provider.dart
│ │ │ │ └── submitted_youtube_info_provider.g.dart
│ │ │ ├── submitted_youtube_confirm_event.dart
│ │ │ ├── submitted_youtube_confirm_page.dart
│ │ │ └── submitted_youtube_confirm_state.dart
│ │ └── youtube_link_submit
│ │ │ ├── provider
│ │ │ ├── youtube_link_input_controller_provider.dart
│ │ │ ├── youtube_link_input_controller_provider.g.dart
│ │ │ └── youtube_link_submit_state.dart
│ │ │ ├── youtube_link_submit_event.dart
│ │ │ └── youtube_link_submit_page.dart
│ │ └── upload_failed
│ │ ├── provider
│ │ ├── youtube_upload_failed_route_arg_provider.dart
│ │ └── youtube_upload_failed_route_arg_provider.g.dart
│ │ ├── youtube_upload_fail_page.dart
│ │ └── youtube_upload_failed_event.dart
│ ├── providers
│ ├── input
│ │ ├── nickname_input_provider.dart
│ │ ├── nickname_input_provider.g.dart
│ │ ├── skill_text_field_controller_provider.dart
│ │ └── skill_text_field_controller_provider.g.dart
│ ├── main_bottom_navigation_provider.dart
│ ├── main_bottom_navigation_provider.g.dart
│ ├── scroll
│ │ ├── selected_job_group_scroll_controller.dart
│ │ ├── selected_job_group_scroll_controller.g.dart
│ │ ├── selected_skill_scroll_controller.dart
│ │ └── selected_skill_scroll_controller.g.dart
│ ├── system
│ │ ├── app_version_provider.dart
│ │ ├── app_version_provider.g.dart
│ │ ├── detect_network_connectivity_provider.dart
│ │ ├── detect_network_connectivity_provider.g.dart
│ │ ├── notification_status_provider.dart
│ │ └── notification_status_provider.g.dart
│ ├── topic
│ │ ├── selectable_common_qnas_provider.dart
│ │ ├── selectable_common_qnas_provider.g.dart
│ │ ├── selectable_qnas_provider.dart
│ │ ├── selectable_qnas_provider.g.dart
│ │ ├── sorted_topics_provider.dart
│ │ ├── sorted_topics_provider.g.dart
│ │ └── study_qna_controller.g.dart
│ └── user
│ │ ├── user_auth_provider.dart
│ │ ├── user_auth_provider.g.dart
│ │ ├── user_info_provider.dart
│ │ ├── user_info_provider.g.dart
│ │ ├── user_topics_provider.dart
│ │ └── user_topics_provider.g.dart
│ └── widgets
│ ├── base
│ ├── base_new_page.dart
│ ├── base_page.dart
│ ├── base_statless_page.dart
│ ├── base_view.dart
│ ├── controller_holder.dart
│ └── index.dart
│ ├── common
│ ├── animated
│ │ ├── animated_appear_view.dart
│ │ └── animated_size_and_fade.dart
│ ├── app_bar
│ │ ├── animated_app_bar.dart
│ │ ├── back_button_app_bar.dart
│ │ ├── foldable_app_bar.dart
│ │ └── techtalk_app_bar.dart
│ ├── avatar
│ │ └── clip_oval_circle_avatar.dart
│ ├── bottom_sheet
│ │ ├── bottom_sheet_intent.dart
│ │ └── option_list_bottom_sheet.dart
│ ├── box
│ │ ├── async_skeleton_widget_builder.dart
│ │ ├── empty_box.dart
│ │ ├── filled_text_box.dart
│ │ ├── scroll_cameleon_box.dart
│ │ └── skeleton_box.dart
│ ├── button
│ │ ├── all_button.dart
│ │ ├── app_back_button.dart
│ │ ├── book_mark_button.dart
│ │ ├── icon_flash_area_button.dart
│ │ ├── reset_button.dart
│ │ ├── rounded_outlined_button.dart
│ │ ├── see_all_question_button.dart
│ │ └── under_label_icon_button.dart
│ ├── checkbox
│ │ └── techtalk_checkbox.dart
│ ├── chip
│ │ ├── closable_rect_filled_chip.dart
│ │ ├── closable_skill_filled_chip.dart
│ │ ├── dark_tranparent_chip.dart
│ │ ├── label_chip.dart
│ │ ├── normal_rounded_chip.dart
│ │ ├── outlined_chip.dart
│ │ ├── resume_question_type_chip.dart
│ │ ├── rounded_filled_chip.dart
│ │ ├── rounded_outlined_chip.dart
│ │ ├── rounded_skill_filled_chip.dart
│ │ ├── selectable_category_chip.dart
│ │ ├── selectable_chip.dart
│ │ └── tech_set_filled_chip.dart
│ ├── common.dart
│ ├── constant
│ │ └── content_filter_category.dart
│ ├── delegate
│ │ └── sticky_container.dart
│ ├── dialog
│ │ └── app_dialog.dart
│ ├── divider
│ │ └── list_view_divider.dart
│ ├── grid_view
│ │ └── expandable_youtube_content_grid_view.dart
│ ├── image
│ │ ├── round_profile_image.dart
│ │ ├── rounded_skill_image.dart
│ │ └── thumbnail_image_view.dart
│ ├── indicator
│ │ ├── exception_indicator.dart
│ │ ├── frequently_wrong_answer_indicator.dart
│ │ ├── interview_count_result_indicator.dart
│ │ ├── new_badge.dart
│ │ ├── response_indicator.dart
│ │ └── tecktalk_refresh_indicator.dart
│ ├── input
│ │ ├── flat_switch.dart
│ │ ├── techtalk_text_field.dart
│ │ └── under_validate_text_field.dart
│ ├── item
│ │ ├── blog_content_item_view.dart
│ │ ├── youtube_content_item_view.dart
│ │ └── youtube_content_small_item_view.dart
│ ├── layout
│ │ └── mobie_layout_constraint_layout.dart
│ ├── list_view
│ │ └── tech_set_list_view.dart
│ ├── state
│ │ └── keep_alive_view.dart
│ ├── tab_bar
│ │ └── techtalk_tab_bar.dart
│ ├── text
│ │ └── bullet_text.dart
│ ├── tile
│ │ ├── flexible_expansion_tile.dart
│ │ └── job_group_list_tile.dart
│ └── toast
│ │ └── app_toast.dart
│ └── section
│ ├── interview_topic_card.dart
│ ├── job_group_selection_scaffold.dart
│ ├── job_group_sliver_list_view.dart
│ ├── searched_skill_list_view.dart
│ ├── selected_job_group_list_view_delegate.dart
│ ├── skill_selection_scaffold.dart
│ ├── study_topic_card.dart
│ └── tech_selection_bottom_sheet
│ ├── provider
│ ├── tech_selection_bottom_sheet_resource_provider.dart
│ ├── tech_set_selection_bottom_sheet_route_arg_provider.dart
│ └── tech_set_selection_bottom_sheet_route_arg_provider.g.dart
│ ├── tech_selection_bottom_sheet_event.dart
│ ├── tech_selection_bottom_sheet_state.dart
│ ├── tech_set_selection_bottom_sheet.dart
│ └── widgets
│ ├── header_selection_view.p.dart
│ ├── job_group_page_view.p.dart
│ ├── scaffold.p.dart
│ ├── searched_skill_list_view.p.dart
│ ├── selected_tech_set_list_view.p.dart
│ └── skill_page_view.p.dart
├── pubspec.lock
├── pubspec.yaml
└── test
└── widget_test.dart
/.github/ISSUE_TEMPLATE/backlog-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Backlog request
3 | about: manage backlog
4 | title: "[섹션] 내용"
5 | labels: "backlog \U0001F51C"
6 | assignees: ''
7 |
8 | ---
9 |
10 | # 🏷️ 요약
11 |
12 |
13 |
14 |
15 | ## 📄 명세
16 |
17 | - [ ] somthing
18 |
19 |
20 |
21 |
22 |
23 | ## 👷 작업자
24 |
25 |
26 |
27 |
28 |
29 | ## 💬 기타
30 |
31 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/discussion.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Discussion
3 | about: Have a discussion about programming agreements
4 | title: "[섹션] 논의에 대한 설명"
5 | labels: ''
6 | assignees: Xim-ya
7 |
8 | ---
9 |
10 | # 🤝 논의사항
11 |
12 |
13 |
14 |
15 | ## 📝 상세 내용
16 |
17 |
18 |
19 |
20 | ## 🚀 기대 효과
21 |
22 |
23 |
24 |
25 | ## 👷 참가자
26 |
27 |
28 |
29 |
30 | ## 💬 기타
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: 'Suggest an idea for this project '
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | # 🚀 기능
11 |
12 |
13 | ## 📸 재현 이미지 또는 코드 샘플
14 |
15 |
16 |
17 | ## 📄 기능 명세
18 |
19 |
20 | ## 👷 작업자
21 |
22 |
23 | ## 💬 기타
24 |
25 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
2 | ## 📝 변경 내용
3 | *
4 |
5 |
6 |
7 | ## 🔍 변경 이유
8 | *
9 |
10 |
11 |
12 | ## 🌍 영향
13 | *
14 |
15 |
16 |
17 | ## 🧪 테스트 계획
18 | *
19 |
20 |
21 |
22 | ## 👥 리뷰어
23 | *
24 |
25 |
26 |
27 | ## 📌 기타 사항
28 | *
29 |
30 |
31 |
--------------------------------------------------------------------------------
/.vscode/keybindings.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | // Command + D를 눌렀을 때 현재 커서 위치의 코드를 드래그 선택
4 | "key": "cmd+d",
5 | "command": "editor.action.duplicateSelection",
6 | "when": "editorTextFocus && !editorHasSelection"
7 | }
8 | ]
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-hdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-hdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-mdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-mdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-night-hdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-night-hdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-night-mdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-night-mdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-night-xhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-night-xhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-night-xxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-night-xxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-night-xxxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-night-xxxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-xhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-xxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xxxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-xxxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/dev/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/techtalk/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.techtalk.ai
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/drawable-night-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/drawable-night/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-en/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TechTalk
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-ko/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 테크톡
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/locales_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
--------------------------------------------------------------------------------
/android/app/src/prod/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/prod/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/prod/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/prod/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/android/app/src/prod/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/prod/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/assets/character/blue_04.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/character/green_04.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/fonts/pretendard/Pretendard-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/fonts/pretendard/Pretendard-Bold.otf
--------------------------------------------------------------------------------
/assets/fonts/pretendard/Pretendard-Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/fonts/pretendard/Pretendard-Medium.otf
--------------------------------------------------------------------------------
/assets/fonts/pretendard/Pretendard-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/fonts/pretendard/Pretendard-Regular.otf
--------------------------------------------------------------------------------
/assets/fonts/pretendard/Pretendard-SemiBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/fonts/pretendard/Pretendard-SemiBold.otf
--------------------------------------------------------------------------------
/assets/icons/alarm.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/ar_up_down.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_down.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_down_thick.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_left.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_left_thick.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_right.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_right_thick.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_up_thick.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/boomark.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/bullet.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/chat_bubble_tale.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/check_thick.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/circle_small_close.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/close.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/close_thick.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/common_interview_logo.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/core_circle.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/correct.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/dark_check_box.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/delete_or_wrong.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/expansion_arrow_indicator.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/home.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/icon_app_bar_left.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/incorrect.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/menu_thick.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/more_circle.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/new_right_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/note.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/pencil.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/play.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/plus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/plus_thick.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/red_alert.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/red_warnning_big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/reset.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/right_aligned_right_arrow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/round_blue_circle.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_blue_exclamation.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/assets/icons/rounded_check.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/rounded_check_small_blue.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/rounded_check_thick.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/rounded_close.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_close_blue.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_close_small_red.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_close_thick.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_exclamation.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/rounded_more.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/rounded_plus.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/rounded_plus_big.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_send.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_send_inactive.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/rounded_top.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/rounded_warnning_small_red.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/search.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/search_thick.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/send.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/assets/icons/send_activate.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/assets/icons/send_up.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/study.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/talker.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/user.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/video_upload.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/warning.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/wemo_check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/youtube_interview_logo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/youtube_logo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/images/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/app_icon.png
--------------------------------------------------------------------------------
/assets/images/avatar_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/avatar_1.png
--------------------------------------------------------------------------------
/assets/images/blank_profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/blank_profile.png
--------------------------------------------------------------------------------
/assets/images/induction_practical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/induction_practical.png
--------------------------------------------------------------------------------
/assets/images/induction_resume.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/induction_resume.png
--------------------------------------------------------------------------------
/assets/images/induction_single.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/induction_single.png
--------------------------------------------------------------------------------
/assets/images/splash_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/splash_image.png
--------------------------------------------------------------------------------
/assets/images/topic_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_android.png
--------------------------------------------------------------------------------
/assets/images/topic_data_structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_data_structure.png
--------------------------------------------------------------------------------
/assets/images/topic_database.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_database.png
--------------------------------------------------------------------------------
/assets/images/topic_flutter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_flutter.png
--------------------------------------------------------------------------------
/assets/images/topic_ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_ios.png
--------------------------------------------------------------------------------
/assets/images/topic_java.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_java.png
--------------------------------------------------------------------------------
/assets/images/topic_javascript.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_javascript.png
--------------------------------------------------------------------------------
/assets/images/topic_nest_js.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_nest_js.png
--------------------------------------------------------------------------------
/assets/images/topic_network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_network.png
--------------------------------------------------------------------------------
/assets/images/topic_operating_system.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_operating_system.png
--------------------------------------------------------------------------------
/assets/images/topic_react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_react.png
--------------------------------------------------------------------------------
/assets/images/topic_spring.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_spring.png
--------------------------------------------------------------------------------
/assets/images/topic_swift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_swift.png
--------------------------------------------------------------------------------
/assets/images/topic_webFrontend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/assets/images/topic_webFrontend.png
--------------------------------------------------------------------------------
/devtools_options.yaml:
--------------------------------------------------------------------------------
1 | description: This file stores settings for Dart & Flutter DevTools.
2 | documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
3 | extensions:
4 | - provider: true
--------------------------------------------------------------------------------
/icons_launcher.yaml:
--------------------------------------------------------------------------------
1 | icons_launcher:
2 | adaptive_icon_background : '#FFFFFF'
3 | image_path: "assets/images/app_icon.png"
4 | platforms:
5 | android:
6 | enable: true
7 | ios:
8 | enable: true
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Localization/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /*
2 | InfoPlist.strings
3 | Runner
4 |
5 | Created by 심야 on 8/1/24.
6 |
7 | */
8 | "CFBundleDisplayName" = "TechTalk";
9 | "NSPhotoLibraryUsageDescription" = "The app needs access to the photo library to change your profile image.";
10 | "NSMicrophoneUsageDescription" = "Please allow the app to access the microphone for voice recognition.";
11 | "NSSpeechRecognitionUsageDescription" = "Please allow the app to analyze speech for voice recognition.";
12 |
13 |
--------------------------------------------------------------------------------
/ios/Localization/ko.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /*
2 | InfoPlist.strings
3 | Runner
4 |
5 | Created by 심야 on 8/1/24.
6 |
7 | */
8 | "CFBundleDisplayName" = "테크톡";
9 | "NSPhotoLibraryUsageDescription" = "프로필 이미지를 변경하려면 앱에서 사진 라이브러리에 액세스 할 수 있어야 합니다.";
10 | "NSMicrophoneUsageDescription" = "앱이 음성 인식을 위해 마이크에 접근할 수 있도록 허용해주세요.";
11 | "NSSpeechRecognitionUsageDescription" = "앱이 음성 인식을 위해 음성을 분석할 수 있도록 허용해주세요.";
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "background.png",
5 | "idiom" : "universal"
6 | },
7 | {
8 | "appearances" : [
9 | {
10 | "appearance" : "luminosity",
11 | "value" : "dark"
12 | }
13 | ],
14 | "filename" : "darkbackground.png",
15 | "idiom" : "universal"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "LaunchImage@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "LaunchImage@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MakeFrog/TechTalk/f055c8d4dde005cb898a74a035395d9518e9176b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 | com.apple.developer.applesignin
8 |
9 | Default
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/ios/Runner/en.lproj/LaunchScreen.strings:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ios/Runner/en.lproj/Main.strings:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ios/Runner/ko.lproj/Main.strings:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ios/firebase_app_id_file.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:680296657690:ios:7aea3588a2b3c4a083b2a3",
5 | "FIREBASE_PROJECT_ID": "techtalk-prod-32",
6 | "GCM_SENDER_ID": "680296657690"
7 | }
--------------------------------------------------------------------------------
/ios/firebase_app_id_file_dev.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:481445661271:ios:debd85030f995e31a27112",
5 | "FIREBASE_PROJECT_ID": "techtalk-dev-33",
6 | "GCM_SENDER_ID": "481445661271"
7 | }
--------------------------------------------------------------------------------
/lib/app/di/feature_di_interface.dart:
--------------------------------------------------------------------------------
1 | abstract base class FeatureDependencyInjection {
2 | void init() {
3 | dataSources();
4 | repositories();
5 | useCases();
6 | }
7 |
8 | void dataSources();
9 | void repositories();
10 | void useCases() {}
11 | }
12 |
--------------------------------------------------------------------------------
/lib/app/di/index.dart:
--------------------------------------------------------------------------------
1 | export 'feature_di_interface.dart';
2 | export 'modules/topic_di.dart';
3 | export 'modules/system_di.dart';
4 | export 'modules/chat_di.dart';
5 | export 'modules/user_di.dart';
6 | export 'modules/auth_di.dart';
7 | export 'modules/tech_set_di.dart';
8 | export 'app_binding.dart';
--------------------------------------------------------------------------------
/lib/app/entrypoints/main_dev.dart:
--------------------------------------------------------------------------------
1 | import 'package:techtalk/app/environment/environment.enum.dart';
2 | import 'package:techtalk/app/environment/flavor.dart';
3 | import 'package:techtalk/presentation/app.dart';
4 |
5 | void main() async {
6 | Flavor.initialize(Environment.dev);
7 |
8 | return runFlavoredApp();
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/entrypoints/main_prod.dart:
--------------------------------------------------------------------------------
1 | import 'package:techtalk/app/environment/environment.enum.dart';
2 | import 'package:techtalk/app/environment/flavor.dart';
3 | import 'package:techtalk/presentation/app.dart';
4 |
5 | Future main() async {
6 | Flavor.initialize(Environment.prod);
7 |
8 | return runFlavoredApp();
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/environment/app_version.dart:
--------------------------------------------------------------------------------
1 | import 'package:techtalk/features/system/repositories/entities/version_entity.dart';
2 |
3 | final class AppVersion {
4 | static final AppVersion _instance = AppVersion._internal();
5 |
6 | factory AppVersion() => _instance;
7 |
8 | AppVersion._internal();
9 |
10 | VersionEntity? to;
11 |
12 | void initialize(VersionEntity version) {
13 | to = version;
14 | }
15 |
16 | bool get isOnReview => to?.isOnReview ?? false;
17 | }
18 |
--------------------------------------------------------------------------------
/lib/app/localization/localization_enum.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | enum Localization {
4 | en(locale: Locale('en', 'US')),
5 | kr(locale: Locale('ko', 'KR'));
6 |
7 | final Locale locale;
8 |
9 | const Localization({required this.locale});
10 |
11 | ///
12 | /// language 코드오 매칭된 locale을 반환해주는 코드입니다.
13 | ///
14 | static Localization getMatchedLocalization(String languageCode) {
15 | if (languageCode == Localization.kr.locale.languageCode) {
16 | return Localization.kr;
17 | } else {
18 | return Localization.en;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/localization/localization_utils.dart:
--------------------------------------------------------------------------------
1 | import 'package:easy_localization/easy_localization.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | abstract class LocalizationUtils {
5 | // context가 없는 곳에서 Localization을 적용해야 할 경우 사용
6 | static String localizeNoContext(BuildContext context, String jsonKey) {
7 | return jsonKey.tr();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/network/app_youtube_explode.dart:
--------------------------------------------------------------------------------
1 | import 'package:youtube_explode_dart/youtube_explode_dart.dart';
2 |
3 | abstract final class AppYoutubeExplode {
4 | AppYoutubeExplode._internal();
5 |
6 | static YoutubeExplode? _instance;
7 |
8 | static YoutubeExplode getInstance() => _instance ??= YoutubeExplode();
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/notification/app_notification.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_messaging/firebase_messaging.dart';
2 |
3 | abstract class AppNotification {
4 | Future init() async {
5 | await FirebaseMessaging.instance
6 | .getInitialMessage()
7 | .then((RemoteMessage? message) {
8 | if (message != null) {
9 | if (message.notification != null) {}
10 | }
11 | });
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/app/router/route_extension.dart:
--------------------------------------------------------------------------------
1 | import 'package:go_router/go_router.dart';
2 |
3 | ///
4 | /// Gorouter extension 메소드
5 | ///
6 | extension GoRouterExtension on GoRouter {
7 | // 특정 경로까지 뒤로 이동
8 | void popUntilPath(String targetPath) {
9 | while (routerDelegate.currentConfiguration.matches.last.matchedLocation !=
10 | targetPath) {
11 | if (!canPop()) {
12 | return;
13 | }
14 | pop();
15 | }
16 | }
17 |
18 | // 여러 경로 중 하나에 도달할 때까지 뒤로 이동
19 | void popUntilMultiPath(List targetPaths) {
20 | print(
21 | '이지빵 : ${routerDelegate.currentConfiguration.matches.last.matchedLocation}');
22 | while (!targetPaths.contains(
23 | routerDelegate.currentConfiguration.matches.last.matchedLocation)) {
24 | if (!canPop()) {
25 | return;
26 | }
27 | pop();
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/app/style/index.dart:
--------------------------------------------------------------------------------
1 | export 'app_color.dart';
2 | export 'app_text_style.dart';
3 | export 'app_theme.dart';
4 |
--------------------------------------------------------------------------------
/lib/app/style/themes/app_bar_theme.dart:
--------------------------------------------------------------------------------
1 | part of '../app_theme.dart';
2 |
3 | abstract class _AppBarTheme {
4 | static final light = AppBarTheme(
5 | systemOverlayStyle: SystemUiOverlayStyle.dark,
6 | color: AppColor().white,
7 | elevation: 0,
8 | scrolledUnderElevation: 0,
9 | centerTitle: false,
10 | titleTextStyle: AppTextStyle.headline2.copyWith(
11 | color: AppColor().black,
12 | ),
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/lib/app/style/themes/filled_button_theme.dart:
--------------------------------------------------------------------------------
1 | part of '../app_theme.dart';
2 |
3 | abstract class _FilledButtonTheme {
4 | static final light = FilledButtonThemeData(
5 | style: FilledButton.styleFrom(
6 | backgroundColor: AppColor().brand3,
7 | disabledBackgroundColor: AppColor().brand1,
8 | foregroundColor: AppColor().white,
9 | disabledForegroundColor: AppColor().white,
10 | elevation: 0,
11 | padding: const EdgeInsets.symmetric(
12 | horizontal: 36,
13 | vertical: 18,
14 | ),
15 | shape: RoundedRectangleBorder(
16 | borderRadius: BorderRadius.circular(16),
17 | ),
18 | textStyle: AppTextStyle.title1,
19 | ),
20 | );
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/style/themes/input_decoration_theme.dart:
--------------------------------------------------------------------------------
1 | part of '../app_theme.dart';
2 |
3 | final _roundedBorderWithoutLine = OutlineInputBorder(
4 | borderSide: BorderSide.none,
5 | borderRadius: BorderRadius.circular(16),
6 | );
7 |
8 | abstract class _InputDecorationTheme {
9 | static final InputDecorationTheme light = InputDecorationTheme(
10 | contentPadding: const EdgeInsets.symmetric(
11 | vertical: 14,
12 | horizontal: 16,
13 | ),
14 | filled: true,
15 | fillColor: AppColor().background1,
16 | border: _roundedBorderWithoutLine,
17 | errorBorder: _roundedBorderWithoutLine,
18 | focusedBorder: _roundedBorderWithoutLine,
19 | focusedErrorBorder: _roundedBorderWithoutLine,
20 | hintStyle: AppTextStyle.body1.copyWith(
21 | color: AppColor().gray3,
22 | ),
23 | );
24 | }
25 |
--------------------------------------------------------------------------------
/lib/app/style/themes/outlined_button_theme.dart:
--------------------------------------------------------------------------------
1 | part of '../app_theme.dart';
2 |
3 | abstract class _OutlinedButtonTheme {
4 | static final light = OutlinedButtonThemeData(
5 | style: FilledButton.styleFrom(
6 | backgroundColor: AppColor().white,
7 | disabledBackgroundColor: AppColor().white,
8 | foregroundColor: AppColor().brand3,
9 | disabledForegroundColor: AppColor().blue1,
10 | elevation: 0,
11 | side: BorderSide(color: AppColor().gray2),
12 | padding: const EdgeInsets.symmetric(
13 | horizontal: 36,
14 | vertical: 18,
15 | ),
16 | shape: RoundedRectangleBorder(
17 | borderRadius: BorderRadius.circular(16),
18 | ),
19 | textStyle: AppTextStyle.title1.copyWith(
20 | color: AppColor().brand3,
21 | ),
22 | ),
23 | );
24 | }
25 |
--------------------------------------------------------------------------------
/lib/app/util/app_format_handler.dart:
--------------------------------------------------------------------------------
1 | abstract final class AppFormatHandler {
2 | ///
3 | /// 스킬 리스트 json을 변화할 떄 사용하는메소드
4 | ///
5 | static Map>> parseMapSLMaSSJson(
6 | Map jsonData) {
7 | return jsonData.map((key, value) {
8 | return MapEntry(
9 | key,
10 | List