<?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: Aditya Pathak</title>
    <description>The latest articles on DEV Community by Aditya Pathak (@ziol_50032).</description>
    <link>https://dev.to/ziol_50032</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%2F4152983%2Ff12c7138-ce60-4c20-84d8-42ca5bcb9e5b.jpeg</url>
      <title>DEV Community: Aditya Pathak</title>
      <link>https://dev.to/ziol_50032</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ziol_50032"/>
    <language>en</language>
    <item>
      <title>LocalBiz AI</title>
      <dc:creator>Aditya Pathak</dc:creator>
      <pubDate>Wed, 14 Oct 2026 09:35:22 +0000</pubDate>
      <link>https://dev.to/ziol_50032/localbiz-ai-mnj</link>
      <guid>https://dev.to/ziol_50032/localbiz-ai-mnj</guid>
      <description>&lt;h1&gt;
  
  
  LocalBiz AI
&lt;/h1&gt;

&lt;p&gt;LocalBiz AI is a focused marketing workspace for small businesses, local shops, cafés, makers, and online sellers. It turns product details, promotions, and everyday business ideas into useful marketing content without adding a heavy content-management system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Public landing page with Product Writer, Social Studio, and Language Assistant previews&lt;/li&gt;
&lt;li&gt;Supabase email/password authentication with SSR session cookies&lt;/li&gt;
&lt;li&gt;Protected dashboard and server-authenticated &lt;code&gt;/api/generate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Groq chat completions using the configurable open-weight model &lt;code&gt;openai/gpt-oss-20b&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Product copy, social posts, and English/Hindi marketing translation&lt;/li&gt;
&lt;li&gt;Browser-only drafts and business preferences, namespaced per authenticated user&lt;/li&gt;
&lt;li&gt;Copy, regenerate, save, reopen, and delete draft actions&lt;/li&gt;
&lt;li&gt;Responsive dashboard, auth screens, loading states, validation, and error messages&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Local development
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install
cp&lt;/span&gt; .env.example .env.local
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;a href="https://www.localblizai.dev/" rel="noopener noreferrer"&gt;https://www.localblizai.dev/&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Supabase Auth
&lt;/h2&gt;

&lt;p&gt;Create a Supabase project, enable &lt;strong&gt;Authentication → Providers → Email&lt;/strong&gt;, and copy the project URL and publishable/anon key into &lt;code&gt;.env.local&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;NEXT_PUBLIC_SUPABASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://your-project.supabase.co
&lt;span class="nv"&gt;NEXT_PUBLIC_SUPABASE_ANON_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_publishable_or_anon_key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The app uses &lt;code&gt;@supabase/ssr&lt;/code&gt; with &lt;code&gt;createBrowserClient&lt;/code&gt;, &lt;code&gt;createServerClient&lt;/code&gt;, and middleware cookie refresh. It does not store passwords, session tokens, or user IDs in localStorage. If Supabase variables are missing, the public homepage still renders but auth and the private dashboard show a clear configuration message; the Groq route returns a configuration error rather than bypassing authentication.&lt;/p&gt;

&lt;p&gt;In Supabase &lt;strong&gt;Authentication → URL Configuration&lt;/strong&gt;, set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site URL (local):&lt;/strong&gt; &lt;code&gt;http://localhost:3000&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redirect URL (local):&lt;/strong&gt; &lt;code&gt;http://localhost:3000/auth/callback&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redirect URL for password reset:&lt;/strong&gt; &lt;code&gt;http://localhost:3000/auth/callback?next=/reset-password&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For production, replace these with your deployed Vercel URL, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://your-domain.vercel.app&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://your-domain.vercel.app/auth/callback&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://your-domain.vercel.app/auth/callback?next=/reset-password&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configure Groq
&lt;/h2&gt;

&lt;p&gt;Add the server-only Groq credentials:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;GROQ_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_key_here
&lt;span class="nv"&gt;GROQ_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;openai/gpt-oss-20b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;GROQ_API_KEY&lt;/code&gt; must not use the &lt;code&gt;NEXT_PUBLIC_&lt;/code&gt; prefix. The key is only read in the server route after the authenticated user is verified. Requests are validated and limited to 2,000 characters per field. Missing keys, rate limits, upstream failures, and malformed model responses return useful errors. Inference is hosted by Groq; it is not local inference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vercel deployment
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Import the repository into Vercel.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;NEXT_PUBLIC_SUPABASE_URL&lt;/code&gt;, &lt;code&gt;NEXT_PUBLIC_SUPABASE_ANON_KEY&lt;/code&gt;, &lt;code&gt;GROQ_API_KEY&lt;/code&gt;, and optionally &lt;code&gt;GROQ_MODEL&lt;/code&gt; to the Vercel project environment variables.&lt;/li&gt;
&lt;li&gt;Deploy the project.&lt;/li&gt;
&lt;li&gt;Update Supabase Site URL and Redirect URLs to the final production URL.&lt;/li&gt;
&lt;li&gt;Test signup confirmation, sign-in, sign-out, password reset, dashboard generation, and a second user’s draft isolation.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why open-weight AI
&lt;/h2&gt;

&lt;p&gt;Open-weight models give LocalBiz AI a more portable generation layer than a provider-locked workflow. Today the app uses fast hosted Groq inference; later, a compatible open-weight deployment can be introduced without changing the product’s core prompts and UI. This is useful for small businesses that need practical content creation while keeping options open around cost, hosting, and model choice.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>sidehustle</category>
    </item>
    <item>
      <title>TrailLens</title>
      <dc:creator>Aditya Pathak</dc:creator>
      <pubDate>Wed, 07 Oct 2026 16:21:11 +0000</pubDate>
      <link>https://dev.to/ziol_50032/traillens-38fh</link>
      <guid>https://dev.to/ziol_50032/traillens-38fh</guid>
      <description>&lt;h1&gt;
  
  
  🌿 TrailLens — Offline AI Nature Explorer
&lt;/h1&gt;

&lt;p&gt;TrailLens is an outdoor-first AI nature companion built for the Hacktoberfest Open-Source AI Challenge, Week 1 — &lt;strong&gt;Touch Grass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Take a photo of something you find outside. TrailLens identifies it with &lt;strong&gt;Ollama + Qwen3-VL 2B&lt;/strong&gt;, explains it in simple language, gives you three facts, and gives you an outdoor challenge.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The screen is not the destination. The screen gives you your next reason to go outside.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why open innovation matters
&lt;/h2&gt;

&lt;p&gt;The core image understanding runs locally through Ollama and the open-weight Qwen3-VL 2B vision model. The local experience can analyze photos without sending them to a closed AI provider, and the model can be swapped or changed by the developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📷 Camera-friendly photo upload&lt;/li&gt;
&lt;li&gt;🧠 Local image understanding with Ollama + Qwen3-VL 2B&lt;/li&gt;
&lt;li&gt;🌿 Beginner-friendly identification and facts&lt;/li&gt;
&lt;li&gt;🎯 Outdoor challenges designed to get people exploring&lt;/li&gt;
&lt;li&gt;⚡ XP and levels&lt;/li&gt;
&lt;li&gt;📓 SQLite discovery journal&lt;/li&gt;
&lt;li&gt;🌐 Explicit Demo Mode for hosted deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Photo
  ↓
FastAPI
  ↓
Ollama
  ↓
Qwen3-VL 2B
  ↓
Identification + Facts + Outdoor Challenge
  ↓
SQLite Journal + XP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Local setup
&lt;/h2&gt;

&lt;p&gt;Requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pull the model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen3-vl:2b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; uvicorn main:app &lt;span class="nt"&gt;--host&lt;/span&gt; 127.0.0.1 &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;strong&gt;&lt;a href="https://traillens-26.onrender.com" rel="noopener noreferrer"&gt;https://traillens-26.onrender.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local AI vs online demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Local Mode&lt;/strong&gt; is the core experience:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![ ](https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/wk60gegrwa58fbllakhs.png)
![ ](https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/6d7m5elf1w64fmn7wk03.png)
Your Mac
  ↓
FastAPI
  ↓
Ollama
  ↓
Qwen3-VL 2B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No cloud AI is required for image analysis.&lt;/p&gt;

&lt;p&gt;A hosted Render service cannot access the Ollama process running on your Mac. For that reason, the included Render configuration enables an explicitly labelled &lt;strong&gt;Demo Mode&lt;/strong&gt; instead of pretending that local Ollama is running remotely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Render deployment
&lt;/h2&gt;

&lt;p&gt;The repository includes &lt;code&gt;render.yaml&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Build command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvicorn main:app &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="nt"&gt;--port&lt;/span&gt; &lt;span class="nv"&gt;$PORT&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The hosted service uses Demo Mode. The real local open-weight AI remains available when TrailLens is run locally with Ollama.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repository structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;trail-lens/
├── main.py
├── backend/
│   ├── __init__.py
│   ├── config.py
│   ├── database.py
│   ├── demo.py
│   ├── ollama.py
│   └── xp.py
├── frontend/
│   ├── index.html
│   ├── journal.html
│   ├── app.js
│   ├── journal.js
│   └── styles.css
├── data/
├── uploads/
├── .env.example
├── .gitignore
├── .python-version
├── render.yaml
├── requirements.txt
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;MIT.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>touchgrass</category>
    </item>
    <item>
      <title>Study Buddy</title>
      <dc:creator>Aditya Pathak</dc:creator>
      <pubDate>Fri, 02 Oct 2026 16:32:58 +0000</pubDate>
      <link>https://dev.to/ziol_50032/study-buddy-5a56</link>
      <guid>https://dev.to/ziol_50032/study-buddy-5a56</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;StudyBuddy&lt;/strong&gt; for my close friend &lt;strong&gt;Rohan&lt;/strong&gt;, who is currently juggling a grueling preparation schedule for software engineering technical interviews and system design certifications while working a demanding job.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem Rohan Faced
&lt;/h3&gt;

&lt;p&gt;Whenever Rohan sat down to study in the evenings, he hit three recurring roadblocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Focus Fragmentation &amp;amp; Tab Drifting&lt;/strong&gt;: Traditional web timers drift by several seconds or stall entirely when backgrounded in another tab during coding exercises, ruining pomodoro rhythms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Illusion of Competence"&lt;/strong&gt;: Passively rereading notes or documentation gave him a false sense of mastery, only for the knowledge to evaporate days later (the classic &lt;em&gt;Ebbinghaus Forgetting Curve&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Bloat &amp;amp; Paywalls&lt;/strong&gt;: Popular flashcard and quiz apps are clunky, loaded with subscription paywalls, require mandatory account sign-ups, or bombard the user with ads right when deep focus is needed most.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Solution: StudyBuddy
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;StudyBuddy&lt;/strong&gt; is a zero-bloat, distraction-free study companion that unites the three most scientifically backed learning methods into one unified, offline-first web experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⏱️ &lt;strong&gt;Zero-Drift Pomodoro Timer&lt;/strong&gt;: Engineered with monotonic delta timing and tab visibility recalibration, paired with native Web Audio chime alerts and a soothing synthesized Lo-Fi ambient rain generator.&lt;/li&gt;
&lt;li&gt;🗂️ &lt;strong&gt;Interactive 3D Flip Flashcards&lt;/strong&gt;: Tactile 3D perspective flip cards with 4-level Leitner-inspired recall feedback (&lt;em&gt;Again&lt;/em&gt;, &lt;em&gt;Hard&lt;/em&gt;, &lt;em&gt;Good&lt;/em&gt;, &lt;em&gt;Easy&lt;/em&gt;) that dynamically calculates deck mastery.&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Smart Quiz Engine&lt;/strong&gt;: Instantly transforms any flashcard deck into an interactive 4-option multiple choice test or rapid recall drill with automated distractor generation, countdown timers, and celebration confetti.&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Deep Customization&lt;/strong&gt;: 4 curated themes (&lt;em&gt;Midnight Nebula&lt;/em&gt;, &lt;em&gt;Daylight Paper&lt;/em&gt;, &lt;em&gt;Forest Calm&lt;/em&gt;, &lt;em&gt;Sunset Glow&lt;/em&gt;), custom timer durations, and full JSON import/export so Rohan owns all his study notes with zero cloud lock-in.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;StudyBuddy runs instantly in any modern web browser with zero build steps or external dependencies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Local Demo&lt;/strong&gt;: &lt;code&gt;https://aditya50032.github.io/Study-Partner/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Installation&lt;/strong&gt;: Simply open &lt;code&gt;index.html&lt;/code&gt; in your browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Interactive Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pomodoro Dial&lt;/strong&gt;: Glowing circular SVG progress ring, session cycle tracker (e.g. 🍅 1 of 4), and quick preset chips (15m, 25m, 45m, 50m).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3D Flip Interaction&lt;/strong&gt;: Press Space or click to flip the card in 3D space with subtle ambient lighting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Quiz&lt;/strong&gt;: Instant feedback highlighting correct answers in emerald green and mistakes in ruby red with full explanations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sound Design&lt;/strong&gt;: Pure Web Audio synthesis — dual-harmonic sine bells (528Hz Solfeggio + 660Hz) and brown-noise rain generator.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Aditya50032" rel="noopener noreferrer"&gt;
        Aditya50032
      &lt;/a&gt; / &lt;a href="https://github.com/Aditya50032/StudyBuddy" rel="noopener noreferrer"&gt;
        StudyBuddy
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What I Built&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;I built &lt;strong&gt;StudyBuddy&lt;/strong&gt; for my close friend &lt;strong&gt;Rohan&lt;/strong&gt;, who is currently juggling a grueling preparation schedule for software engineering technical interviews and system design certifications while working a demanding job.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;The Problem Rohan Faced&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Whenever Rohan sat down to study in the evenings, he hit three recurring roadblocks:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Focus Fragmentation &amp;amp; Tab Drifting&lt;/strong&gt;: Traditional web timers drift by several seconds or stall entirely when backgrounded in another tab during coding exercises, ruining pomodoro rhythms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Illusion of Competence"&lt;/strong&gt;: Passively rereading notes or documentation gave him a false sense of mastery, only for the knowledge to evaporate days later (the classic &lt;em&gt;Ebbinghaus Forgetting Curve&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Bloat &amp;amp; Paywalls&lt;/strong&gt;: Popular flashcard and quiz apps are clunky, loaded with subscription paywalls, require mandatory account sign-ups, or bombard the user with ads right when deep focus is needed most.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;The Solution: StudyBuddy&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;StudyBuddy&lt;/strong&gt; is a zero-bloat…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Aditya50032/StudyBuddy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Aditya50032/MyStudyBuddy/tree/main" rel="noopener noreferrer"&gt;github.com/Aditya50032/MyStudyBuddy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The entire codebase is open-source, standalone, and built with pure HTML5, Vanilla CSS, and modern JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DEV project/
├── index.html       # Semantic layout, SVG dials, accessible modals &amp;amp; tab controls
├── styles.css       # 4 theme palettes, 3D card transforms, glassmorphic surfaces
└── app.js           # Zero-drift timer, Web Audio synthesis, Leitner rating &amp;amp; quiz engine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Core Architecture Highlights
&lt;/h3&gt;
&lt;h4&gt;
  
  
  1. High-Precision Zero-Drift Clock Math (&lt;code&gt;app.js&lt;/code&gt;)
&lt;/h4&gt;

&lt;p&gt;Standard &lt;code&gt;setInterval(counter--, 1000)&lt;/code&gt; drifts severely due to main-thread event loop lag and background tab throttling. StudyBuddy derives remaining time from monotonic wall-clock deltas and hooks into the &lt;code&gt;visibilitychange&lt;/code&gt; event:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;recalibrate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRunning&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;performance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;remainingMs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;targetEndTime&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;remainingMs&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;finishSession&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;onTick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getState&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  2. Asset-Free Native Audio Synthesis
&lt;/h4&gt;

&lt;p&gt;Rather than loading heavy MP3 files that fail or get blocked by browser autoplay policies, sounds are synthesized dynamically:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;playTimerChime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentTime&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;osc1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createOscillator&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;osc2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createOscillator&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;gain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createGain&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="nx"&gt;osc1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sine&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;osc1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frequency&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setValueAtTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;528&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Solfeggio frequency&lt;/span&gt;
  &lt;span class="nx"&gt;osc2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sine&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;osc2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frequency&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setValueAtTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;660&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setValueAtTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exponentialRampToValueAtTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nx"&gt;osc1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;osc2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;osc1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;osc2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;osc1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;osc2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  3. Automated Distractor Generation for Quizzes
&lt;/h4&gt;

&lt;p&gt;When a quiz starts, the engine extracts the correct answers and dynamically synthesizes plausible distractors from the remaining deck pool to challenge active recall.&lt;/p&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I built StudyBuddy through an interactive agentic pair-programming workflow using &lt;strong&gt;Google Antigravity&lt;/strong&gt; and &lt;strong&gt;Gemini 3.8 Flash&lt;/strong&gt;, grounding architectural decisions in proven open community patterns:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Community Research Pass&lt;/strong&gt;: Before writing a single line of code, we queried developer wisdom on &lt;a href="https://dev.to"&gt;dev.to&lt;/a&gt; to address known pitfalls with web timers. RayLabs' article, &lt;em&gt;&lt;a href="https://dev.to/raylabs/build-a-zero-drift-web-timer-3bip"&gt;Build a Zero-Drift Web Timer&lt;/a&gt;&lt;/em&gt;, provided the foundation for our monotonic clock delta math and Page Visibility recalibration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive Science Principles&lt;/strong&gt;: We pre-loaded starter decks covering the &lt;em&gt;Ebbinghaus Forgetting Curve&lt;/em&gt;, &lt;em&gt;Leitner Spaced Repetition&lt;/em&gt;, and &lt;em&gt;Active Recall&lt;/em&gt; so that users immediately experience why testing beats rereading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-First &amp;amp; Resilient&lt;/strong&gt;: We avoided heavy frontend dependencies (like React or Webpack) in favor of zero-dependency modern vanilla web standards, ensuring instantaneous 60fps load times and absolute portability.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation is what made building StudyBuddy possible in a single weekend:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Complete Privacy &amp;amp; Zero Data Harvesting&lt;/strong&gt;: Rohan's study notes, interview questions, and focus logs belong strictly to him. In an era where educational platforms monetize user data and lock essential features behind paywalls, an open-source, local-first app guarantees 100% data sovereignty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works Everywhere, Even Offline&lt;/strong&gt;: Open web standards mean this app runs without internet connectivity on a subway commute, in a quiet library corner, or on an airplane.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensibility for the Community&lt;/strong&gt;: Because the code is open and cleanly decoupled, anyone can fork it, contribute new flashcard packs, add LaTeX math formatting, or integrate local open-weight AI models (like &lt;strong&gt;Gemma 2&lt;/strong&gt; via Ollama) to automatically generate flashcards directly from lecture PDFs and raw notes.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;This entire application was designed, researched, implemented, and verified in an agentic coding session with DevRelay. You can inspect the full prompt trajectory, research calls, and implementation steps below:&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building StudyBuddy: Zero-Drift Pomodoro, 3D Flashcards &amp;amp; Quiz Engine&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;build a study buddy app with pomodoro clock and flash card and quiz where user can set it make it simple app&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I will build StudyBuddy, an all-in-one focus and active recall companion featuring a zero-drift Pomodoro timer, 3D flip flashcard decks, and an interactive quiz generator with local data persistence and custom themes. Let's research community best practices first.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-searchdevtosemantic"&gt;search_dev_to_semantic&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;query: building a pomodoro timer in javascript drift Date.now web audio&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;query: building a pomodoro timer in javascript drift Date.now web audio&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Found article: Build a Zero-Drift Web Timer by raylabs&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;TargetFile: index.html&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;TargetFile: index.html&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created index.html with Pomodoro dial, 3D flashcards, quiz layout, and deck manager&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;TargetFile: styles.css&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;TargetFile: styles.css&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created styles.css with 4 themes, 3D card perspective, and glassmorphism&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;TargetFile: app.js&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;TargetFile: app.js&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created app.js with zero-drift timer, Web Audio API synthesis, flashcard Leitner ratings, and quiz engine&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Application built, verified with node syntax check, and serving locally at &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        2 of 2 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;🔗 &lt;strong&gt;Direct Session Link&lt;/strong&gt;: &lt;a href="https://dev.to/agent_sessions/building-studybuddy-zero-drift-pomodoro-3d-flashcards-quiz-engine-6c2e3g"&gt;View Agent Session on DEV&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/strong&gt; (Primary Entry)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Use of Open Tools &amp;amp; Local AI Architecture&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ for Rohan and lifelong learners everywhere.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
