<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: H. Emir Özcan</title>
    <description>The latest articles on DEV Community by H. Emir Özcan (@emirsphere).</description>
    <link>https://dev.to/emirsphere</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3648574%2Fb2e25a00-a736-4d50-83fb-747c936c2108.png</url>
      <title>DEV Community: H. Emir Özcan</title>
      <link>https://dev.to/emirsphere</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emirsphere"/>
    <language>en</language>
    <item>
      <title>SmartStudy: The Cross-Platform Rule-Based AI Coach for Students (Built with Uno Platform)</title>
      <dc:creator>H. Emir Özcan</dc:creator>
      <pubDate>Fri, 05 Dec 2025 22:47:47 +0000</pubDate>
      <link>https://dev.to/emirsphere/smartstudy-the-cross-platform-rule-based-ai-coach-for-students-built-with-uno-platform-7pn</link>
      <guid>https://dev.to/emirsphere/smartstudy-the-cross-platform-rule-based-ai-coach-for-students-built-with-uno-platform-7pn</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/unoplatform"&gt;AI Challenge for Cross-Platform Apps&lt;/a&gt;.&lt;br&gt;
💡 The Inspiration&lt;br&gt;
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 "Physics" in 2 days? Usually, yes.&lt;/p&gt;

&lt;p&gt;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."&lt;/p&gt;

&lt;p&gt;That's why I built SmartStudy using .NET and Uno Platform.&lt;/p&gt;

&lt;p&gt;🚀 What is SmartStudy?&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;Core Features:&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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."&lt;/p&gt;

&lt;p&gt;Clean UI: I designed a custom Dark Mode interface because... well, we developers love Dark Mode.&lt;/p&gt;

&lt;p&gt;🎥 Demo&lt;br&gt;
Here is the app in action running on Windows Desktop:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=yyi6MFiQLmM" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=yyi6MFiQLmM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔧 How I Built It&lt;br&gt;
I used the Uno Platform because I wanted to write C# code once and have it run everywhere.&lt;/p&gt;

&lt;p&gt;Framework: .NET 8&lt;/p&gt;

&lt;p&gt;Platform: Uno Platform (WinUI 3 XAML)&lt;/p&gt;

&lt;p&gt;Architecture: MVVM (Model-View-ViewModel)&lt;/p&gt;

&lt;p&gt;IDE: Visual Studio 2022&lt;/p&gt;

&lt;p&gt;The "AI" Logic 🧠&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;Here is a snippet of the logic that determines the "Coach's Advice":&lt;/p&gt;

&lt;p&gt;// Inside MainViewModel.cs&lt;/p&gt;

&lt;p&gt;// 1. Analyze Urgency&lt;br&gt;
if (daysLeft &amp;lt;= 2)&lt;br&gt;
{&lt;br&gt;
    urgencyMessage = $"🚨 URGENT: {nextExam.Title} is almost here!";&lt;br&gt;
}&lt;br&gt;
else if (daysLeft &amp;lt;= 5)&lt;br&gt;
{&lt;br&gt;
    // The "Smart" part: It knows Hard exams need more prep time!&lt;br&gt;
    if (nextExam.Difficulty == "Hard") &lt;br&gt;
        urgencyMessage = $"⚠️ WARNING: {nextExam.Title} is tough and getting close.";&lt;br&gt;
    else &lt;br&gt;
        urgencyMessage = $"💡 ADVICE: Start reviewing {nextExam.Title} soon.";&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// 2. Analyze Burnout Risk&lt;br&gt;
int weeklyCount = Exams.Count(x =&amp;gt; ...); // Logic to count exams in 7 days&lt;/p&gt;

&lt;p&gt;if (weeklyCount &amp;gt; 2) &lt;br&gt;
    AiAdvice = $"{urgencyMessage} Also, be careful: You have {weeklyCount} exams this week. Pace yourself!";&lt;br&gt;
This logic makes the app feel alive. It doesn't just display data; it interprets it for me.&lt;/p&gt;

&lt;p&gt;🏆 Challenges I Faced&lt;br&gt;
Honestly, getting the UI to look "Professional" was harder than the backend logic.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;🔮 What's Next?&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;🔗 Code &amp;amp; Resources&lt;br&gt;
You can check out the full source code on GitHub. Feel free to star it if you like it!&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/emirsphere/SmartStudyV2" rel="noopener noreferrer"&gt;https://github.com/emirsphere/SmartStudyV2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>unoplatform</category>
      <category>dotnet</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
