<?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: Hassan</title>
    <description>The latest articles on DEV Community by Hassan (@mrhassan).</description>
    <link>https://dev.to/mrhassan</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4022105%2F31a791db-5807-4ba9-b9dd-d6264f074d31.png</url>
      <title>DEV Community: Hassan</title>
      <link>https://dev.to/mrhassan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrhassan"/>
    <language>en</language>
    <item>
      <title>I Built PROOF for a Friend Who Was Studying, But Not Actually Understanding</title>
      <dc:creator>Hassan</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:35:41 +0000</pubDate>
      <link>https://dev.to/mrhassan/i-built-proof-for-a-friend-who-was-studying-but-not-actually-understanding-280g</link>
      <guid>https://dev.to/mrhassan/i-built-proof-for-a-friend-who-was-studying-but-not-actually-understanding-280g</guid>
      <description>&lt;p&gt;This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend&lt;/p&gt;

&lt;p&gt;What I Built&lt;br&gt;
I built PROOF for a friend who was studying Operating Systems.&lt;br&gt;
He was doing something I think a lot of students do. He could read the notes, recognize the terms, and sometimes answer questions correctly. But when he had to explain the idea without looking at the notes, things became much harder.&lt;br&gt;
That made me think about a simple question:&lt;br&gt;
How do you know that you actually understand something?&lt;br&gt;
That is why I built PROOF.&lt;br&gt;
The idea is simple:&lt;br&gt;
Don't tell me you understand it. Prove it.&lt;br&gt;
PROOF doesn't just give another explanation or another quiz.&lt;br&gt;
It asks the student to explain something from memory, looks for a weak part in the explanation, challenges that part, helps the student fix it, and then asks them to try again.&lt;br&gt;
The main flow is:&lt;br&gt;
Explain → Challenge → Repair → Verify&lt;br&gt;
The Problem I Built It For&lt;br&gt;
My friend was studying virtual memory and page faults.&lt;br&gt;
He had a simple idea in his head: a page fault happens when RAM is full.&lt;br&gt;
It sounds reasonable at first.&lt;br&gt;
The problem was that it wasn't the complete explanation.&lt;br&gt;
So I made PROOF hide the notes and asked him to explain the concept himself.&lt;br&gt;
After looking at the explanation, PROOF found the assumption and asked:&lt;br&gt;
“Suppose a program with 32GB of empty RAM reads its first variable. Why does the CPU still trigger a Page Fault?”&lt;br&gt;
That question changed the conversation.&lt;br&gt;
It showed that knowing the words wasn't enough. There was a missing part in the reasoning.&lt;br&gt;
After trying PROOF, my friend said:&lt;br&gt;
“It didn't let me get away with just saying 'it swaps to disk'. It caught the exact detail I was hand-waving.”&lt;br&gt;
That was the main reason I decided to keep building the project.&lt;br&gt;
I wasn't trying to make another big study platform.&lt;br&gt;
I was trying to solve one problem I had actually seen.&lt;br&gt;
How PROOF Works&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Explain from memory
The student doesn't see the reference notes.
They explain the concept in their own words.&lt;/li&gt;
&lt;li&gt;Find the weak part
PROOF checks the explanation for things like:
unsupported assumptions
missing reasoning
contradictions
vague explanations
hand-waving
There is also a “What the Local AI Extracted” section so the student can see what was picked up from their explanation.&lt;/li&gt;
&lt;li&gt;Challenge it
Instead of simply saying that something is wrong, PROOF tries to challenge the weak point.
For example, if the explanation depends on a certain assumption, the next question can change that situation and see if the explanation still works.&lt;/li&gt;
&lt;li&gt;Repair it
If the explanation breaks, the student can go back to the relevant study material and work on that specific gap.
The goal is not to give them a huge answer.
It is to help them fix the part they didn't understand.&lt;/li&gt;
&lt;li&gt;Try again
The student explains it again.
If the reasoning holds up, the concept can become VERIFIED.
So PROOF tries to separate two things:
“I remember seeing this.”
from
“I can explain why this works.”
Why I Made It This Way
There are already many study tools that can explain topics, generate questions, make flashcards, and summarize notes.
I didn't want to build another one of those.
The problem I saw was different.
Sometimes a student can get through a normal quiz because the question looks familiar.
But change the situation slightly, and the misunderstanding becomes obvious.
So PROOF focuses on that moment.
It doesn't just ask:
“Do you know the answer?”
It asks:
“Does your explanation still make sense when I challenge it?”
The student also doesn't need to write a complicated prompt.
The process is already built into PROOF.
How I Built It
I wanted PROOF to work locally as much as possible.
The project has a common IAIProvider interface, which lets different evaluation and AI options work with the same application.
The basic structure looks like this:
Student Explanation
    ↓
PROOF Evaluation
    ↓
 IAIProvider
  /   |   \
 /    |    \
Local  WebLLM  Ollama
Local evaluator
PROOF has a deterministic local evaluator.
It isn't an LLM.
It provides a basic evaluation path without needing a model download, GPU, or cloud API.
WebLLM
PROOF can also use WebLLM to run an open-weight model in the browser.
The model needs to be downloaded initially. After it has been cached, it can run locally.
Ollama
PROOF also supports Ollama, which lets a computer run supported open-weight models locally.
Because these options use the same provider interface, I can change the model or provider without rebuilding the whole application.
Keeping Study Data Local
This part was important to me.
A student might upload lecture notes or write explanations that they don't want sitting on some remote server.
PROOF stores its main study data in the browser using IndexedDB.
That includes things like:
study material
concepts
explanations
proof sessions
The local AI options can also keep the model processing on the user's device.
The deterministic evaluator can work without a network connection.
For WebLLM, the first model download requires internet, but after the model is cached, it can run locally.
I wanted to be clear about that instead of just saying “everything is offline.”
Why Open Innovation Matters
The open/local part of PROOF is useful because it gives me more control over how the project works.
If I used only a closed cloud API, the simple approach would be to send every explanation to that service.
With local inference, PROOF can process the student's material on their own device.
It also means I can try different open-weight models without changing the whole application.
For example, the project can use WebLLM or Ollama while keeping the main PROOF workflow the same.
Another useful part is cost.
When the model is running locally, there is no per-request cloud API cost.
For a study tool that may be used frequently, that matters.
What I Learned
The biggest lesson from this project wasn't really about AI.
It was about starting with a real person instead of starting with a feature.
At first, I was thinking about making an AI study assistant.
After talking to my friend, I realized that wasn't the actual problem.
He didn't necessarily need another tool to explain Operating Systems to him.
He needed a way to find out where his own explanation was wrong.
That changed the project.
The page-fault example also taught me something else:
Sometimes one good question can reveal a misunderstanding much faster than a long explanation.
That became the idea behind PROOF.
Don't just explain the answer. Test the reasoning.
Demo
Live Demo:&lt;a href="https://proof-phi-ten.vercel.app/" rel="noopener noreferrer"&gt;https://proof-phi-ten.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>DASTAN The Taste of Home Every culture has a taste of home.</title>
      <dc:creator>Hassan</dc:creator>
      <pubDate>Wed, 12 Aug 2026 06:48:35 +0000</pubDate>
      <link>https://dev.to/mrhassan/dastanthe-taste-of-homeevery-culture-has-a-taste-of-home-33ho</link>
      <guid>https://dev.to/mrhassan/dastanthe-taste-of-homeevery-culture-has-a-taste-of-home-33ho</guid>
      <description>&lt;h1&gt;
  
  
  DASTAN — The Taste of Home 🍲
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is my submission for the Frontend Challenge – Comfort Food Edition, Perfect Landing.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;For this challenge, I wanted to create something that felt more like a story than a typical food website.&lt;/p&gt;

&lt;p&gt;That idea became &lt;strong&gt;DASTAN — The Taste of Home&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;“Dastan” means a story, and the concept behind the project is simple: food is rarely just food. A dish can remind us of a person, a place, a family gathering, or a moment we haven't thought about in years.&lt;/p&gt;

&lt;p&gt;DASTAN is a visual, editorial-style landing page that explores comfort food from different parts of the world through photography, cultural stories, ingredients, and the people behind the memories.&lt;/p&gt;

&lt;p&gt;The goal was to make the experience feel warm, premium, and personal from the moment someone opens the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;The line that shaped the whole design was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Every culture has a taste of home.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted the website to communicate that feeling without relying on a traditional recipe-blog layout.&lt;/p&gt;

&lt;p&gt;Instead, I treated each dish almost like a magazine story.&lt;/p&gt;

&lt;p&gt;You can discover dishes from different regions, read the story behind them, and explore how food connects people across cultures.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Design
&lt;/h2&gt;

&lt;p&gt;I went for an editorial-inspired visual direction rather than a conventional modern dashboard.&lt;/p&gt;

&lt;p&gt;The design uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Warm cream backgrounds&lt;/li&gt;
&lt;li&gt;Deep charcoal sections&lt;/li&gt;
&lt;li&gt;Muted gold accents&lt;/li&gt;
&lt;li&gt;Large serif typography&lt;/li&gt;
&lt;li&gt;Editorial-style food photography&lt;/li&gt;
&lt;li&gt;Rounded cards&lt;/li&gt;
&lt;li&gt;Generous spacing&lt;/li&gt;
&lt;li&gt;Strong visual hierarchy&lt;/li&gt;
&lt;li&gt;Story-focused content&lt;/li&gt;
&lt;li&gt;Subtle borders and details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted the interface to feel like opening a beautifully designed food magazine.&lt;/p&gt;

&lt;p&gt;At the same time, I made sure the experience remains comfortable to use on smaller screens.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Find
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌍 Global Comfort Food
&lt;/h3&gt;

&lt;p&gt;DASTAN brings together dishes and stories from different parts of the world.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tonkotsu Ramen — Japan&lt;/li&gt;
&lt;li&gt;Hyderabadi Dum Biryani — India&lt;/li&gt;
&lt;li&gt;Kimchi Jjigae — Korea&lt;/li&gt;
&lt;li&gt;Lasagna alla Bolognese — Italy&lt;/li&gt;
&lt;li&gt;Lahori Chicken Karahi — Pakistan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one is presented as more than a dish. It has a place, a story, and a cultural connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  📖 The Human Story
&lt;/h3&gt;

&lt;p&gt;One of my favorite parts of the project is the storytelling.&lt;/p&gt;

&lt;p&gt;Instead of only showing ingredients and cooking times, the experience introduces a small human story around the food.&lt;/p&gt;

&lt;p&gt;For example, a dish can be connected to a grandmother, a family table, a winter evening, or a Sunday meal.&lt;/p&gt;

&lt;p&gt;That helped me keep the project connected to the comfort-food theme instead of making it feel like another recipe website.&lt;/p&gt;

&lt;h3&gt;
  
  
  🍜 Cultural Stories
&lt;/h3&gt;

&lt;p&gt;The individual food pages go deeper into the origins and traditions behind each dish.&lt;/p&gt;

&lt;p&gt;The goal isn't simply to say what the food is, but to give visitors a reason to care about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧂 Global Kitchen Milestones
&lt;/h3&gt;

&lt;p&gt;I also created a section focused on cooking techniques and ingredients.&lt;/p&gt;

&lt;p&gt;Things like toasting spices, blooming aromatics, slow cooking, and building layers of flavor become part of the story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsive Design
&lt;/h2&gt;

&lt;p&gt;I designed DASTAN with a mobile-first mindset.&lt;/p&gt;

&lt;p&gt;The screenshots above show the experience on a mobile device, where the content remains readable and the cards, typography, images, buttons, and navigation adapt to the available space.&lt;/p&gt;

&lt;p&gt;I paid particular attention to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mobile spacing&lt;/li&gt;
&lt;li&gt;Typography scaling&lt;/li&gt;
&lt;li&gt;Image proportions&lt;/li&gt;
&lt;li&gt;Touch-friendly buttons&lt;/li&gt;
&lt;li&gt;Long-form content&lt;/li&gt;
&lt;li&gt;Card layouts&lt;/li&gt;
&lt;li&gt;Navigation&lt;/li&gt;
&lt;li&gt;Avoiding horizontal overflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The experience should feel intentional on a phone rather than simply being a desktop website squeezed into a smaller screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Journey
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges was balancing visual design with readability.&lt;/p&gt;

&lt;p&gt;It is easy to make a food website look attractive when you have large images and beautiful typography. The harder part is making sure the design still works when there is a lot of content.&lt;/p&gt;

&lt;p&gt;I spent a lot of time thinking about hierarchy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should the visitor see first?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where should their eyes go next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much text is enough?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can a food image tell part of the story without overwhelming the page?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That process pushed me to think less like someone simply building a webpage and more like someone designing an editorial experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;This project taught me that a strong landing page isn't only about adding more features.&lt;/p&gt;

&lt;p&gt;Sometimes the strongest designs come from having a clear idea and building everything around it.&lt;/p&gt;

&lt;p&gt;I also learned more about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating visual hierarchy&lt;/li&gt;
&lt;li&gt;Editorial-style layouts&lt;/li&gt;
&lt;li&gt;Responsive design&lt;/li&gt;
&lt;li&gt;Typography pairing&lt;/li&gt;
&lt;li&gt;Designing around photography&lt;/li&gt;
&lt;li&gt;Storytelling through UI&lt;/li&gt;
&lt;li&gt;Mobile-first layouts&lt;/li&gt;
&lt;li&gt;Creating consistency across multiple sections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, I learned that the small details matter.&lt;/p&gt;

&lt;p&gt;Spacing, typography, borders, image cropping, button placement, and even the amount of text on a screen can completely change how a website feels.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Chose Food
&lt;/h2&gt;

&lt;p&gt;I chose comfort food because almost everyone has a food that feels like home.&lt;/p&gt;

&lt;p&gt;It might be something cooked by a parent.&lt;/p&gt;

&lt;p&gt;Something a grandmother used to make.&lt;/p&gt;

&lt;p&gt;A meal shared with friends.&lt;/p&gt;

&lt;p&gt;Or even a simple dish eaten during a difficult day.&lt;/p&gt;

&lt;p&gt;Those experiences are different for everyone, but the feeling is surprisingly universal.&lt;/p&gt;

&lt;p&gt;That's what I wanted DASTAN to capture.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;This challenge started as a landing-page concept, but I can see DASTAN becoming something much bigger.&lt;/p&gt;

&lt;p&gt;Some ideas I'd like to explore next include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Community-submitted food stories&lt;/li&gt;
&lt;li&gt;Personal family recipes&lt;/li&gt;
&lt;li&gt;Interactive world exploration&lt;/li&gt;
&lt;li&gt;More countries and regional dishes&lt;/li&gt;
&lt;li&gt;Food-story profiles&lt;/li&gt;
&lt;li&gt;Save and bookmark functionality&lt;/li&gt;
&lt;li&gt;Search and discovery&lt;/li&gt;
&lt;li&gt;More immersive storytelling&lt;/li&gt;
&lt;li&gt;Audio stories from contributors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For now, I'm happy with DASTAN as a visual exploration of the idea that food can carry memories across generations and borders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Building DASTAN reminded me why I enjoy frontend development.&lt;/p&gt;

&lt;p&gt;A website doesn't always have to solve a complicated technical problem.&lt;/p&gt;

&lt;p&gt;Sometimes it can simply make someone stop scrolling for a moment and feel something.&lt;/p&gt;

&lt;p&gt;For me, that feeling is home.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Every culture has a taste of home.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks for taking the time to look at my project. ❤️&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Demo link&lt;br&gt;
&lt;a href="https://dastan-pro.vercel.app/" rel="noopener noreferrer"&gt;https://dastan-pro.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code&lt;br&gt;
&lt;a href="https://github.com/Hassan-1209/dastan" rel="noopener noreferrer"&gt;https://github.com/Hassan-1209/dastan&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  showdev #frontend #webdev #css #javascript
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>frontendchallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
