{"id":50438240,"url":"https://github.com/developeracademy-postech/2025-c6-a15-a-iscreem","last_synced_at":"2026-05-31T18:02:09.028Z","repository":{"id":323037734,"uuid":"1079647075","full_name":"DeveloperAcademy-POSTECH/2025-C6-A15-A-Iscreem","owner":"DeveloperAcademy-POSTECH","description":"아이패드로 유튜브 강의를 들으며 공부하는 공대생의 몰입이 깨지지 않도록 AI가 요약하고 핵심 키워드를 보여주면서 바로 질문할 수 있는 앱","archived":false,"fork":false,"pushed_at":"2025-11-22T05:38:22.000Z","size":4014,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"dev","last_synced_at":"2025-11-22T06:18:50.134Z","etag":null,"topics":["ai","apple","applefoundationalmodels","learning","llm","machine-learning","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DeveloperAcademy-POSTECH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-20T06:56:45.000Z","updated_at":"2025-11-22T05:38:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DeveloperAcademy-POSTECH/2025-C6-A15-A-Iscreem","commit_stats":null,"previous_names":["developeracademy-postech/2025-c6-a15-a-iscreem"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/DeveloperAcademy-POSTECH/2025-C6-A15-A-Iscreem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloperAcademy-POSTECH%2F2025-C6-A15-A-Iscreem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloperAcademy-POSTECH%2F2025-C6-A15-A-Iscreem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloperAcademy-POSTECH%2F2025-C6-A15-A-Iscreem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloperAcademy-POSTECH%2F2025-C6-A15-A-Iscreem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DeveloperAcademy-POSTECH","download_url":"https://codeload.github.com/DeveloperAcademy-POSTECH/2025-C6-A15-A-Iscreem/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloperAcademy-POSTECH%2F2025-C6-A15-A-Iscreem/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33742187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","apple","applefoundationalmodels","learning","llm","machine-learning","swiftui"],"created_at":"2026-05-31T18:02:06.381Z","updated_at":"2026-05-31T18:02:09.016Z","avatar_url":"https://github.com/DeveloperAcademy-POSTECH.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"### ℹ️📋 [learningTool/AINO]\n\n## 📲 Download\n\n| 플랫폼 | 링크 |\n|--------|------|\n| iOS / iPadOS | [![Download on the App Store](https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/ko-kr?size=200x66)](https://apps.apple.com/kr/app/aino-%EC%95%84%EC%9D%B4%EB%85%B8-ai-%ED%95%99%EC%8A%B5%EB%85%B8%ED%8A%B8/id6754547683) |\n\n## [Logo/Cover Image]\n![Main](https://github.com/user-attachments/assets/1ec39b2d-e1db-4db9-9c27-77a1559c7cf5)\n\n[Dark-teal]\n\u003cimg width=\"128\" height=\"128\" alt=\"tinted_teal\" src=\"https://github.com/user-attachments/assets/5452a8e8-dd1e-4ca6-8fbe-5b58bd3d9a4e\" /\u003e\n[Dark-purple]\n\u003cimg width=\"128\" height=\"128\" alt=\"tinted_purple\" src=\"https://github.com/user-attachments/assets/3fba02bb-2151-445d-9862-53f1268f1daa\" /\u003e\n[Dark-amber]\n\u003cimg width=\"128\" height=\"128\" alt=\"tinted_amber\" src=\"https://github.com/user-attachments/assets/4f640957-db60-423d-95b8-a9756e85c43f\" /\u003e\n\n\n## [App statement]\n\n아이패드로 유튜브 강의를 들으며 공부하는 대학생의 몰입이 깨지지 않도록 AI가 요약하고 핵심 키워드를 보여주면서 바로 질문할 수 있는 앱\n\n## [App statement][Eng]\n\nAn app designed for university students studying with YouTube lectures on iPad — it helps maintain focus by using AI to summarize content, highlight key concepts, and enable instant questions without breaking immersion.\n\n\n\n### 📞 Apple Intelligence (On-Device) Requirements\nThis app’s AI summarization uses Apple’s on-device foundation model (Apple Intelligence).\n\n- **iPhone:** iPhone 16 lineup, iPhone 15 Pro/Pro Max  \n- **iPad:** iPad mini (A17 Pro), iPad models with **M1 or later**  \n- **Mac:** **M1 or later**  \n- Make sure **Apple Intelligence is enabled** and **Siri + device language** are set to a supported language (e.g., Korean).\n\n\u003e On devices that don’t meet these requirements, the app may fall back to server summarization (if configured) or disable summarization.\n\nRefs: Apple Newsroom availability notes.  [oai_citation:5‡Apple](https://www.apple.com/newsroom/2025/06/apple-elevates-the-iphone-experience-with-ios-26/)\n\n\n## 📘 AINO - 아이노, AI 학습노트\n\n유튜브 강의로 공부하는 대학생을 위한 **AI 학습노트 앱**입니다.  \nApple Intelligence 기반 자동 요약 + 키워드 추출 + 질문/채팅까지 한 번에 지원합니다.\n\n\n\n## 👨🏻‍💻👩🏻‍💻\n\n---\n\n|  |\n|:---:|\n| ![iPad 01](\u003ciPad/iPad Pro 11_ - 1.png\u003e) |\n| ![iPad 02](\u003ciPad/iPad Pro 11_ - 2.png\u003e) |\n| ![iPad 03](\u003ciPad/iPad Pro 11_ - 3.png\u003e) |\n| ![iPad 04](\u003ciPad/iPad Pro 11_ - 4.png\u003e) |\n| ![iPad 05](\u003ciPad/iPad Pro 11_ - 5.png\u003e) |\n\n---\n\n|   |   |\n|:---:|:---:|\n| ![iPhone 01](iPhone/iPhone%2016%20-%201.png) | ![iPhone 02](iPhone/iPhone%2016%20-%202.png) |\n| ![iPhone 03](iPhone/iPhone%2016%20-%203.png) | ![iPhone 04](iPhone/iPhone%2016%20-%204.png) |\n| ![iPhone 05](iPhone/iPhone%2016%20-%205.png) |  |\n\n---\n\n## :pushpin: Features\n\n- 영상 강의(유튜브 한정) 노트 저장\n- 폴더별 노트 관리\n- 강의 내용 구간별 요약\n- 구간 요약시 맥락에 맞게 도출되는 주요 키워드\n- 제미나이(이용자 api key 설정 후)AI를 통한 채팅 질문\n- 키워드에 호버하여 빠른 채팅 입력\n- 키워드 입력시 적당한 질문을 생성해주는 질문 생성 기능\n\n\n\n## 🌿 Tree\n```\n.\n├── AINO\n│   ├── Assets.xcassets\n│   │   ├── AccentColor.colorset\n│   │   │   └── Contents.json\n│   │   ├── AppIcon.appiconset\n│   │   │   ├── Contents.json\n│   │   │   ├── Main_1024.jpg\n│   │   │   ├── tinted_amber.png\n│   │   │   └── tinted_teal.png\n│   │   ├── Contents.json\n│   │   └── GlassBackdrop.imageset\n│   ├── Components\n│   │   ├── HeaderComponents.swift\n│   │   ├── HelpView.swift\n│   │   ├── KeywordViewComponent.swift\n│   │   ├── NoteComponent.swift\n│   │   └── QuestionBubbleComponent.swift\n│   ├── Extensions\n│   │   ├── Color+Extension.swift\n│   │   ├── Font+Extension.swift\n│   │   ├── View+Corners.swift\n│   │   └── View+Keyboard.swift\n│   ├── LearningToolApp.swift\n│   ├── Models\n│   │   ├── ChatMessage.swift\n│   │   ├── Folder.swift\n│   │   ├── LearningLogStore.swift\n│   │   └── Note.swift\n│   ├── Services\n│   │   └── GeminiAPIService.swift\n│   ├── ViewModels\n│   │   ├── CaptionAnalyzer\n│   │   │   ├── AppleFMSummarizer.swift\n│   │   │   ├── CaptionAnalyzerViewModel.swift\n│   │   │   ├── HTTPSummarizer.swift\n│   │   │   ├── KeywordExtractor.swift\n│   │   │   ├── SummaizerEngine.swift\n│   │   │   ├── Summarizer.swift\n│   │   │   └── VTTParser.swift\n│   │   ├── HomeViewModel.swift\n│   │   ├── QuestionViewModel.swift\n│   │   ├── SidebarViewModel.swift\n│   │   └── StudyViewModel.swift\n│   ├── Views\n│   │   ├── HomeView\n│   │   │   ├── BaseLayoutScaler.swift\n│   │   │   ├── CreateNoteView.swift\n│   │   │   ├── DestructiveConfirmAlertView.swift\n│   │   │   ├── FolderDeleteView.swift\n│   │   │   ├── GridMode.swift\n│   │   │   ├── Helpers.swift\n│   │   │   ├── HomeView.swift\n│   │   │   ├── ListMode.swift\n│   │   │   ├── Overlay.swift\n│   │   │   ├── SettingView.swift\n│   │   │   ├── SidebarView.swift\n│   │   │   ├── TrashService.swift\n│   │   │   ├── TrashView.swift\n│   │   │   ├── Utils\n│   │   │   │   ├── KoreanSearchUtils.swift\n│   │   │   │   └── NoteFormattingUtils.swift\n│   │   │   └── ViewModelToggle.swift\n│   │   ├── StudyHistoryView\n│   │   │   └── StudyHistoryView.swift\n│   │   └── StudyView\n│   │       ├── ChatAreaView.swift\n│   │       ├── ChatBubble.swift\n│   │       ├── ChatBubbleView.swift\n│   │       ├── KeywordView.swift\n│   │       ├── MediaView.swift\n│   │       ├── QuestionHeaderBar.swift\n│   │       ├── QuestionInputBar.swift\n│   │       ├── QuestionView.swift\n│   │       ├── StudyView.swift\n│   │       ├── SuggestionsSheetView.swift\n│   │       ├── SummaryView.swift\n│   │       └── UIEffects.swift\n│   └── Web\n│       ├── YouTubeThumbnail.swift\n│       ├── YouTubeWebViewHost.swift\n│       └── YouTubeWebViewRepresentable..swift\n├── AINO.xcodeproj\n│   ├── project.pbxproj\n│   ├── project.xcworkspace\n│   │   ├── contents.xcworkspacedata\n│   │   ├── xcshareddata\n│   │   │   └── swiftpm\n│   │   │       └── configuration\n│   │   └── xcuserdata\n│   │       ├── coulson.xcuserdatad\n│   │       │   └── UserInterfaceState.xcuserstate\n│   │       └── mumin.xcuserdatad\n│   │           └── UserInterfaceState.xcuserstate\n│   └── xcuserdata\n│       ├── coulson.xcuserdatad\n│       │   ├── xcdebugger\n│       │   │   └── Breakpoints_v2.xcbkptlist\n│       │   └── xcschemes\n│       │       └── xcschememanagement.plist\n│       └── mumin.xcuserdatad\n│           └── xcschemes\n│               └── xcschememanagement.plist\n├── architecture.svg\n├── data-model.svg\n├── flowchart-home-note-study-history-return.svg\n├── iPad\n│   ├── iPad Pro 11_ - 1.png\n│   ├── iPad Pro 11_ - 2.png\n│   ├── iPad Pro 11_ - 3.png\n│   ├── iPad Pro 11_ - 4.png\n│   └── iPad Pro 11_ - 5.png\n├── iPhone\n│   ├── iPhone 16 - 1.png\n│   ├── iPhone 16 - 2.png\n│   ├── iPhone 16 - 3.png\n│   ├── iPhone 16 - 4.png\n│   └── iPhone 16 - 5.png\n├── LICENSE\n├── README.md\n├── sequenceDiagram.svg\n└── StudyView-flowchart.svg\n\n\n\n\n```\n\n# 📊 Diagrams\n\n빠르게 훑어보기:\n- [Architecture](#architecture)\n- [Data Model](#data-model)\n- [App Flow (Home→Note→Study→History→Return)](#app-flow-homenotenotestudyhistoryreturn)\n- [Sequence Diagram](#sequence-diagram)\n- [StudyView Flow](#studyview-flow)\n\n---\n\n## Architecture\n### 아키텍처(클래스/뷰/서비스) 다이어그램 소스\n![Architecture Diagram](./architecture.svg \"Architecture\")\n\n## Data Model\n### 데이터/모델 다이어그램 소스\n![Data Model Diagram](./data-model.svg \"Data Model\")\n\n## App Flow (Home→Note→Study→History→Return)\n### 홈 → 노트 선택 → 스터디(미디어/요약/키워드/질문) → 학습기록/복귀 흐름\n![App Flow Diagram](./flowchart-home-note-study-history-return.svg \"App Flow\")\n\n## StudyView Flow\n### 자막 확보부터 요약·키워드·학습기록 저장까지\n![StudyView Flowchart](./StudyView-flowchart.svg \"StudyView Flow\")\n\n## Sequence Diagram\n### 홈 → 노트 선택 → 스터디(미디어/요약/키워드/질문) → 학습기록/복귀\n![Sequence Diagram](./sequenceDiagram.svg \"Sequence Diagram\")\n\n\n## :framed_picture: Demo\n\nAttach videos if you are available\n\u003cimg width=\"1472\" height=\"1183\" alt=\"스크린샷 2025-10-20 오후 6 41 10\" src=\"https://github.com/user-attachments/assets/7c78688e-6fa6-46d1-aa60-d2966a4be2e8\" /\u003e\n\u003cimg width=\"964\" height=\"714\" alt=\"스크린샷 2025-10-22 오후 6 42 02\" src=\"https://github.com/user-attachments/assets/f1964cf2-90f7-489a-ad17-66748b5a1bb9\" /\u003e\n\n\n\u003cvideo src=\"https://raw.githubusercontent.com/\u003cUSER\u003e/\u003cREPO\u003e/\u003cBRANCH\u003e/assets/KakaoTalk_Video_2025-10-28-17-52-00.mp4\"\n       width=\"920\" autoplay loop muted playsinline\u003e\u003c/video\u003e\n\n\nhttps://github.com/user-attachments/assets/e98da29a-7157-47d5-a971-de8b2e455354\n\n\nhttps://github.com/user-attachments/assets/dd83c9b4-400e-451e-8281-f5bc6a1d1a1e\n\n\n\nhttps://github.com/user-attachments/assets/8d3b2d55-5ce6-4507-8468-94ee9e7dae59\n\n\n## :sparkles: Skills \u0026 Tech Stack\n\n\t•\t언어/런타임: Swift 5.x, Swift Concurrency(async/await, Task, @MainActor)\n\t•\tUI: SwiftUI (NavigationSplitView, UIViewRepresentable로 WKWebView 브리지)\n\t•\t데이터: SwiftData (@Model, ModelContext, 영속화/캐시)\n\t•\t웹: WebKit (WKWebView, WKUserScript, WKScriptMessageHandler로 JS ↔︎ 네이티브 브릿지)\n\t•\t요약/지능(옵션): Foundation Models 기반 요약(SystemLanguageModel 사용 가능 환경에서), 증분 요약 + 최종 병합\n\t•\t기반 프레임워크: Foundation(네트워킹 등), OSLog(로깅)\n\t•\t패키징: Swift Package Manager\n\n![Platform](https://img.shields.io/badge/Platform-iOS%20%7C%20iPadOS-000000?logo=apple\u0026logoColor=white)\n![Target](https://img.shields.io/badge/Target-iOS%2018%2B-000000)\n![Swift](https://img.shields.io/badge/Swift-5.x-F05138?logo=swift\u0026logoColor=white)\n![SwiftUI](https://img.shields.io/badge/SwiftUI-UI-0C7BDC)\n![SwiftData](https://img.shields.io/badge/SwiftData-Persistence-0C7BDC)\n![WebKit](https://img.shields.io/badge/WebKit-WKWebView-1F8A70)\n\n\n\n## 📲 Download\n\n| 플랫폼 | 링크 |\n|--------|------|\n| iOS / iPadOS | [![Download on the App Store](https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/ko-kr?size=200x66)](https://apps.apple.com/kr/app/aino-%EC%95%84%EC%9D%B4%EB%85%B8-ai-%ED%95%99%EC%8A%B5%EB%85%B8%ED%8A%B8/id6754547683) |\n\n\n## 👥 Team\n\n| Member | GitHub |\n|---|---|\n| Skyler | [![yulimmmm](https://img.shields.io/badge/GitHub-yulimmmm-181717?logo=github\u0026logoColor=white)](https://github.com/yulimmmm) |\n| Coulson | [![kimminung](https://img.shields.io/badge/GitHub-kimminung-181717?logo=github\u0026logoColor=white)](https://github.com/kimminung) |\n| Romak | [![Zunhokim](https://img.shields.io/badge/GitHub-Zunhokim-181717?logo=github\u0026logoColor=white)](https://github.com/Zunhokim) |\n| Emma | [![hbeen0129](https://img.shields.io/badge/GitHub-hbeen0129-181717?logo=github\u0026logoColor=white)](https://github.com/hbeen0129) |\n| Eifer | [![seungjaeyuu](https://img.shields.io/badge/GitHub-seungjaeyuu-181717?logo=github\u0026logoColor=white)](https://github.com/seungjaeyuu) |\n| Moomin | [![namoomin](https://img.shields.io/badge/GitHub-namoomin-181717?logo=github\u0026logoColor=white)](https://github.com/namoomin) |\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeveloperacademy-postech%2F2025-c6-a15-a-iscreem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeveloperacademy-postech%2F2025-c6-a15-a-iscreem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeveloperacademy-postech%2F2025-c6-a15-a-iscreem/lists"}