<?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: Naresh Kumawat</title>
    <description>The latest articles on DEV Community by Naresh Kumawat (@nareshkumawatstar).</description>
    <link>https://dev.to/nareshkumawatstar</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%2F4146364%2F2549664c-3f27-44b9-a06f-0f8dfde681a8.png</url>
      <title>DEV Community: Naresh Kumawat</title>
      <link>https://dev.to/nareshkumawatstar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nareshkumawatstar"/>
    <language>en</language>
    <item>
      <title>Hacktoberfest Weekend Challenge: Build for a Friend (devmemory)</title>
      <dc:creator>Naresh Kumawat</dc:creator>
      <pubDate>Sun, 04 Oct 2026 08:08:32 +0000</pubDate>
      <link>https://dev.to/nareshkumawatstar/hacktoberfest-weekend-challenge-build-for-a-friend-devmemory-2l83</link>
      <guid>https://dev.to/nareshkumawatstar/hacktoberfest-weekend-challenge-build-for-a-friend-devmemory-2l83</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;DevMemory&lt;/strong&gt; is a personal coding-memory app. You log the bugs you actually hit — the snippet, the error, and what you learned — and it turns that pile of mistakes into an AI that answers &lt;em&gt;you&lt;/em&gt;, grounded in &lt;em&gt;your&lt;/em&gt; history.&lt;/p&gt;

&lt;p&gt;I built it for my friend Rahul, who is learning to code. His problem was never "I can't find an answer." It was that he kept making &lt;em&gt;the same class of mistake&lt;/em&gt; over and over — an off-by-one here, a missing null check there, a Python ternary precedence bug he'd already fixed two weeks earlier. He'd fix it, forget it, and then hit a near-identical variant in a different project. Existing tools (Stack Overflow, ChatGPT) give generic answers because they don't know what &lt;em&gt;he&lt;/em&gt; already got wrong.&lt;/p&gt;

&lt;p&gt;DevMemory is the thing that remembers for him. Every mistake he saves makes the next answer sharper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Six capabilities:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI root-cause analysis — paste a snippet + stack trace, and Gemma extracts the real root cause, severity, and the lesson (not just the symptom).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Semantic search over his own memories — MongoDB Atlas Vector Search matches by &lt;em&gt;logic pattern&lt;/em&gt;, not keywords, so "list index out of range" finds his old off-by-one fix.
Grounded Q&amp;amp;A — ask "why does my recursion blow the stack?" and get an answer built only from bugs he has personally hit.
Recurring-bug detection — every error is tagged and categorized so anti-patterns surface automatically.
Progress analytics — mistake frequency, severity trends, and a topic-weakness radar over days, weeks, and months.
Personalized practice — generates a fresh coding problem aimed at the exact concepts he struggles with most.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The pipeline, end to end:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;01 Save Memory      → log snippet + problem description + thrown error&lt;br&gt;
02 AI Analysis      → Gemma extracts root cause, difficulty, key takeaways&lt;br&gt;
03 Vector Embed     → chunks + embeddings stored in MongoDB Atlas&lt;br&gt;
04 Semantic Retrieval → Atlas Vector Search pulls relevant past memories&lt;br&gt;
05 Grounded Answer  → Gemma answers, strictly grounded in his own history&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Deployed link:&lt;a href="https://devmemory-sdsp.onrender.com/" rel="noopener noreferrer"&gt;https://devmemory-sdsp.onrender.com/&lt;/a&gt;&lt;br&gt;
Video walkthrough:&lt;a href="https://screenapp.io/app/files/6ac208e300322e29fc6a6f0a" rel="noopener noreferrer"&gt;https://screenapp.io/app/files/6ac208e300322e29fc6a6f0a&lt;/a&gt;&lt;br&gt;
Code&lt;br&gt;
GitHub: &lt;a href="https://github.com/Nareshkumawat-star/devmemory" rel="noopener noreferrer"&gt;Nareshkumawat-star/devmemory&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;evMemory is built around &lt;strong&gt;Gemma&lt;/strong&gt;, an open-weight model from Google. Gemma does the thinking: root-cause analysis of a stack trace, recurring-mistake detection, the personalized explanations, the practice-problem generation, and the grounded Q&amp;amp;A. It talks to my app over a &lt;strong&gt;plain OpenAI-compatible &lt;code&gt;/chat/completions&lt;/code&gt;&lt;/strong&gt; interface, which turned out to be the most important design decision in the whole project.&lt;/p&gt;

&lt;p&gt;For retrieval, I use an &lt;strong&gt;OpenAI-compatible embedding endpoint&lt;/strong&gt; to chunk and embed each memory, store the vectors in &lt;strong&gt;MongoDB Atlas&lt;/strong&gt;, and retrieve them with &lt;strong&gt;Atlas Vector Search&lt;/strong&gt;. Gemma then answers strictly from what retrieval returned — so it can't hallucinate advice about code my friend never wrote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next.js (UI + route handlers)&lt;br&gt;
      │&lt;br&gt;
      ├── MongoDB Atlas ──────────── Vector Search&lt;br&gt;
      │        ▲                          │&lt;br&gt;
      │        │  embeddings              │ retrieved memories&lt;br&gt;
      │   embedding API                   ▼&lt;br&gt;
      └──────────────► Gemma ──────► grounded answer&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it was actually built (and where the AI agent came in)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built this with &lt;strong&gt;Codebuff&lt;/strong&gt; as my agent, working through it in small, verifiable steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scaffolded the Next.js 16 App Router app, Zod schemas, and MongoDB connection layer.&lt;/li&gt;
&lt;li&gt;Built the memory CRUD + Monaco editor, then the analyze endpoint (Gemma analysis → embed → vector upsert).&lt;/li&gt;
&lt;li&gt;Added the RAG pipeline and wired &lt;code&gt;/api/ai/ask&lt;/code&gt; and &lt;code&gt;/api/ai/practice&lt;/code&gt; on top of it.&lt;/li&gt;
&lt;li&gt;Built the analytics dashboard with Recharts and the improvement timeline.&lt;/li&gt;
&lt;li&gt;Hardened it: 68 unit tests, Playwright E2E, &lt;code&gt;tsc --noEmit&lt;/code&gt;, ESLint.&lt;/li&gt;
&lt;li&gt;Deployed to Render on the free plan with a &lt;code&gt;render.yaml&lt;/code&gt; blueprint + a multi-stage Dockerfile, and pointed Mongo at Atlas.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Deployment lessons I hit along the way&lt;/strong&gt; (in case they help someone else):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js 16 warns that &lt;code&gt;next start&lt;/code&gt; is unsupported when &lt;code&gt;output: "standalone"&lt;/code&gt; is set at build time — so I gate it behind an env flag and only enable it for Docker.&lt;/li&gt;
&lt;li&gt;On Render, setting &lt;code&gt;NODE_ENV=production&lt;/code&gt; makes &lt;code&gt;npm ci&lt;/code&gt; skip devDependencies, which breaks the build (Tailwind's PostCSS plugin lives in devDeps). The fix is &lt;code&gt;npm ci --include=dev &amp;amp;&amp;amp; npm run build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@types/node&lt;/code&gt; had to move to &lt;code&gt;^24&lt;/code&gt; to satisfy a Vitest 5 peer requirement, and the lockfile had to be regenerated with the same npm major as the build container.&lt;/li&gt;
&lt;/ul&gt;




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

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

&lt;p&gt;This project &lt;strong&gt;only works because the model is open&lt;/strong&gt;. Three concrete reasons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The inference host is swappable, with zero code changes.&lt;/strong&gt; Because DevMemory speaks the plain OpenAI-compatible shape, the exact same code runs against a local Ollama instance, a self-hosted vLLM server, or any hosted provider. That's not a nice-to-have — it's the difference between the app working and not working. During development my friend runs Gemma locally for free and offline; in production it points at a hosted endpoint. One environment variable changes, and the feature set is identical. A closed API locks you to one company's servers, one company's price, and one company's uptime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Privacy is a feature, not a footnote.&lt;/strong&gt; The whole premise is my friend logging &lt;em&gt;his real mistakes&lt;/em&gt; — the code he's embarrassed about, the bugs from his actual projects. With open weights he can run the entire thing on his own machine and nothing ever leaves it. With a closed API, every personal coding mistake is posted to someone else's server. For a "personal memory" app, that's a fundamental difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Open weights let the app stay free.&lt;/strong&gt; A hobby project for one friend can't subsidise per-token API costs. Being able to run the open model locally, or point at a free hosted endpoint, is what makes DevMemory viable as a gift rather than a subscription.&lt;/p&gt;

&lt;p&gt;More broadly, open innovation is what makes the RAG pattern accessible at all. The embedding pipeline, the vector store, and the model are three independent choices, each replaceable. That composability — being able to hold the whole stack in your head and swap any piece — is exactly what closed, vertically-integrated AI platforms take away.&lt;/p&gt;

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

&lt;p&gt;I built DevMemory with &lt;strong&gt;&lt;a href="https://codebuff.com" rel="noopener noreferrer"&gt;Codebuff&lt;/a&gt; / &lt;a href="https://freebuff.com" rel="noopener noreferrer"&gt;Freebuff&lt;/a&gt;&lt;/strong&gt; as my coding agent.&lt;/p&gt;

&lt;p&gt;The agent handled the full loop with me: scaffolding the App Router structure, writing the Zod schemas and the MongoDB RAG layer, implementing the Gemma client, building the analytics UI, writing the Vitest + Playwright tests, and debugging the Render deploy (the devDependencies/Tailwind build failure and the &lt;code&gt;@types/node&lt;/code&gt; peer conflict both surfaced through the agent's test-and-verify cycle).&lt;/p&gt;

&lt;p&gt;team leader (username):nareshkumawatstar&lt;/p&gt;

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