SmartStudy: The Cross-Platform Rule-Based AI Coach for Students (Built with Uno Platform)
Source: Dev.to

💡 The Inspiration
As a software engineering student, exam weeks are chaotic. I have a calendar full of dates, but a simple date doesn’t tell me how much I should panic. Is Linear Algebra in 3 days more urgent than History in 2 days? Usually, yes.
I realized I didn’t need another To‑Do list; I needed a Coach—something that tells me, “Hey, stop relaxing, this exam is hard and it’s tomorrow!” or “You’re doing fine, take a break.”
That’s why I built SmartStudy using .NET and Uno Platform.
🚀 What is SmartStudy?
SmartStudy is a cross‑platform app that runs natively on Windows, Web, and Mobile. It helps students track their exams and adds a layer of Logic‑Based AI on top.
Core Features
- Dynamic Urgency System – The interface changes color (Red/Yellow/Green) not just based on dates, but also on difficulty. A Hard exam triggers a Red alarm much earlier than an Easy one.
- AI Coach – A smart algorithm analyzes the schedule and gives context‑aware advice like “Urgent! Focus on notes” or “Weekly workload is high, pace yourself.”
- Clean UI – Custom Dark Mode interface designed for developers who love Dark Mode.
🎥 Demo
The app in action on Windows Desktop:
https://www.youtube.com/watch?v=yyi6MFiQLmM
🔧 How I Built It
- Framework: .NET 8
- Platform: Uno Platform (WinUI 3 XAML)
- Architecture: MVVM (Model‑View‑ViewModel)
- IDE: Visual Studio 2022
🧠 The “AI” Logic
Instead of calling an external API, I implemented a robust decision tree in the ViewModel so the app feels “smart” and responsive instantly, without needing an internet connection.
// 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!";
This logic makes the app feel alive. It doesn’t just display data; it interprets it for the user.
🏆 Challenges I Faced
- UI Polish – Getting the UI to look professional was harder than the backend logic.
- The “Squaring” Issue – A standard
ListViewadded a default gray rectangle on hover over rounded cards. Swapping it for anItemsControlinside aScrollViewergave full control over rendering. - Cross‑Platform Dates – My PC is set to Turkish, but I wanted global date formatting. I forced
CultureInfosettings at startup so dates always appear as “Dec 06” instead of “Ara 06”, regardless of the system language.
🔮 What’s Next?
I plan to connect the app to a real LLM (e.g., OpenAI) to scan PDF syllabi and automatically suggest topics to study for each exam day.
🔗 Code & Resources
Full source code is available on GitHub. Feel free to star the repository!