SmartStudy: 학생들을 위한 크로스 플랫폼 규칙 기반 AI 코치 (Uno Platform으로 구축)
Source: Dev.to

💡 영감
소프트웨어 공학 전공 학생으로서 시험 주간은 혼란스럽습니다. 캘린더에 날짜가 가득 차 있지만, 단순히 날짜만으로는 얼마나 긴장해야 할지 알 수 없습니다. 선형대수가 3일 남았고 역사가 2일 남았다면 어느 쪽이 더 급한가요? 보통은 그렇습니다.
저는 또 다른 할 일 목록이 아니라 코치가 필요하다는 것을 깨달았습니다—“이봐, 이제 쉬지 말고 이 시험은 어렵고 내일이야!” 혹은 “잘하고 있어, 잠깐 쉬어도 돼.”라고 알려주는 코치 말이죠.
그래서 저는 .NET과 Uno Platform을 사용해 SmartStudy를 만들었습니다.
🚀 SmartStudy란?
SmartStudy는 Windows, Web, Mobile에서 네이티브로 실행되는 크로스‑플랫폼 앱입니다. 학생들이 시험을 추적하도록 도와주며, 그 위에 논리 기반 AI 레이어를 추가합니다.
핵심 기능
- 동적 긴급도 시스템 – 인터페이스가 날짜뿐 아니라 난이도에 따라 색상(Red/Yellow/Green)으로 변합니다. Hard 시험은 Easy 시험보다 훨씬 일찍 빨간색 경보를 울립니다.
- AI 코치 – 스마트 알고리즘이 일정을 분석하고 “긴급! 노트에 집중하세요” 혹은 “주간 업무량이 많으니 속도를 조절하세요”와 같은 상황에 맞는 조언을 제공합니다.
- 깔끔한 UI – 다크 모드를 사랑하는 개발자를 위해 설계된 커스텀 다크 모드 인터페이스.
🎥 데모
Windows Desktop에서 동작하는 앱:
https://www.youtube.com/watch?v=yyi6MFiQLmM
🔧 제작 과정
- 프레임워크: .NET 8
- 플랫폼: Uno Platform (WinUI 3 XAML)
- 아키텍처: MVVM (Model‑View‑ViewModel)
- IDE: Visual Studio 2022
🧠 “AI” 로직
외부 API를 호출하는 대신, ViewModel에 견고한 의사결정 트리를 구현했습니다. 그래서 앱이 즉시 “스마트”하게 반응하고 인터넷 연결이 필요 없습니다.
// Inside MainViewModel.cs
// 1. Analyze Urgency
if (daysLeft /* logic to count exams in 7 days */);
if (weeklyCount > 2)
AiAdvice = $"{urgencyMessage} Also, be careful: You have {weeklyCount} exams this week. Pace yourself!";
이 로직 덕분에 앱이 살아있는 느낌을 줍니다. 단순히 데이터를 표시하는 것이 아니라 사용자를 위해 해석해 줍니다.
🏆 직면한 도전 과제
- UI 다듬기 – UI를 전문적으로 보이게 만드는 것이 백엔드 로직보다 더 어려웠습니다.
- “Squaring” 문제 – 기본
ListView는 둥근 카드 위에 마우스를 올리면 회색 사각형이 나타났습니다. 이를ScrollViewer안의ItemsControl로 교체하면 렌더링을 완전히 제어할 수 있었습니다. - 크로스‑플랫폼 날짜 – 제 PC는 터키어 설정이지만 전 세계적인 날짜 형식을 원했습니다. 시작 시
CultureInfo설정을 강제해 시스템 언어와 관계없이 날짜가 “Dec 06”처럼 표시되도록 했습니다.
🔮 앞으로의 계획
앱을 실제 LLM(예: OpenAI)과 연결해 PDF 강의 계획서를 스캔하고 각 시험일에 공부할 주제를 자동으로 제안하도록 할 예정입니다.
🔗 코드 및 리소스
전체 소스 코드는 GitHub에서 확인할 수 있습니다. 저장소에 별표를 남겨 주세요!