SmartStudy: The Cross-Platform Rule-Based AI Coach for Students (Built with Uno Platform)
💡 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. Someone (or something) to tell 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 but adds a layer of “Logic-Based AI” on top of it.
Core Features:
Dynamic Urgency System: The interface changes color (Red/Yellow/Green) not just based on dates, but based on difficulty. A “Hard” exam triggers a Red Alarm much earlier than an “Easy” one.
AI Coach: A smart algorithm analyzes my schedule and gives me context-aware advice like “Urgent! Focus on notes” or “Weekly workload is high, pace yourself.”
Clean UI: I designed a custom Dark Mode interface because… well, we developers love Dark Mode.
🎥 Demo
Here is the app in action running on Windows Desktop:
https://www.youtube.com/watch?v=yyi6MFiQLmM
🔧 How I Built It
I used the Uno Platform because I wanted to write C# code once and have it run everywhere.
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 for everything, I implemented a robust decision tree in my ViewModel. I wanted the app to feel “smart” and responsive instantly, without needing an internet connection.
Here is a snippet of the logic that determines the “Coach’s Advice”:
// Inside MainViewModel.cs
// 1. Analyze Urgency
if (daysLeft <= 2)
{
urgencyMessage = $”🚨 URGENT: {nextExam.Title} is almost here!”;
}
else if (daysLeft <= 5)
{
// The “Smart” part: It knows Hard exams need more prep time!
if (nextExam.Difficulty == “Hard”)
urgencyMessage = $”⚠️ WARNING: {nextExam.Title} is tough and getting close.”;
else
urgencyMessage = $”💡 ADVICE: Start reviewing {nextExam.Title} soon.”;
}
// 2. Analyze Burnout Risk
int weeklyCount = Exams.Count(x => …); // 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 me.
🏆 Challenges I Faced
Honestly, getting the UI to look “Professional” was harder than the backend logic.
The “Squaring” Issue: I initially used a standard ListView, but whenever I hovered over my rounded cards, a default gray rectangle appeared and ruined the design. I learned how to swap it for an ItemsControl inside a ScrollViewer to get full control over the rendering.
Cross-Platform Dates: My PC is in Turkish, but I wanted the app to look global. I learned how to force CultureInfo settings in the app startup so the dates always show up as “Dec 06” instead of “Ara 06”, regardless of the user’s system language.
🔮 What’s Next?
I’m planning to connect this to a real LLM (like OpenAI) to scan my PDF syllabus and automatically suggest what topics to study for each exam day.
🔗 Code & Resources
You can check out the full source code on GitHub. Feel free to star it if you like it!
GitHub Repo: https://github.com/emirsphere/SmartStudyV2