<?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: Meer Hashaam Khan</title>
    <description>The latest articles on DEV Community by Meer Hashaam Khan (@hashaam011).</description>
    <link>https://dev.to/hashaam011</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%2F3047963%2Ff3a59fd8-5afa-4556-9de8-01168ae6c0d7.jpeg</url>
      <title>DEV Community: Meer Hashaam Khan</title>
      <link>https://dev.to/hashaam011</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hashaam011"/>
    <language>en</language>
    <item>
      <title>Finishing the e-commerce app I abandoned in 2023</title>
      <dc:creator>Meer Hashaam Khan</dc:creator>
      <pubDate>Fri, 29 May 2026 21:40:53 +0000</pubDate>
      <link>https://dev.to/hashaam011/finishing-the-e-commerce-app-i-abandoned-in-2023-5dha</link>
      <guid>https://dev.to/hashaam011/finishing-the-e-commerce-app-i-abandoned-in-2023-5dha</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GlowStore&lt;/strong&gt; — a full-stack MERN e-commerce store (React + Redux + Express + MongoDB).&lt;/p&gt;

&lt;p&gt;Back in 2023 I built this as my university &lt;em&gt;Web Engineering&lt;/em&gt; final project. I ran&lt;br&gt;
out of time, handed in what I had, and never touched it again. When I reopened&lt;br&gt;
it for this challenge I found something funny: the &lt;strong&gt;backend was basically&lt;br&gt;
finished&lt;/strong&gt; — JWT auth, products, orders, reviews, search — but the &lt;strong&gt;React&lt;br&gt;
frontend never actually talked to it.&lt;/strong&gt; It was a good-looking shell with fake&lt;br&gt;
logic bolted on. So "finishing it" meant connecting the two halves and making it&lt;br&gt;
a real store you can actually shop in.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/hashaam-011/Web-Engineering" rel="noopener noreferrer"&gt;https://github.com/hashaam-011/Web-Engineering&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before&lt;/strong&gt; — the entire app was just a fake login screen. Typing anything (or&lt;br&gt;
nothing) and clicking "Log in" flipped a boolean and "logged you in":&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw522rvw4rs76i42zw5y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw522rvw4rs76i42zw5y.png" alt=" " width="800" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After&lt;/strong&gt; — a working storefront with products from the database:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3uhog0lcw787ggs1ik16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3uhog0lcw787ggs1ik16.png" alt=" " width="800" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A real product detail page (was literally &lt;code&gt;&amp;lt;h1&amp;gt;DetailsPages&amp;lt;/h1&amp;gt;&lt;/code&gt; before):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6bdelrnwmbww4pi1fli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6bdelrnwmbww4pi1fli.png" alt=" " width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6167z0y0kxi4uvieeols.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6167z0y0kxi4uvieeols.png" alt=" " width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can run it yourself in two terminals (no database setup needed — it boots an&lt;br&gt;
in-memory MongoDB and seeds itself):&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="nb"&gt;cd &lt;/span&gt;backend &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm start   &lt;span class="c"&gt;# http://localhost:4000&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm start                 &lt;span class="c"&gt;# http://localhost:3000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Demo login: &lt;code&gt;user@example.com&lt;/code&gt; / &lt;code&gt;123456&lt;/code&gt; — or register a new account.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;p&gt;Here's what the project looked like &lt;strong&gt;before&lt;/strong&gt;, and what I changed:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Login dispatched a boolean and ignored your credentials&lt;/td&gt;
&lt;td&gt;Real login/register against the API with JWT + bcrypt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend never called the backend (no axios anywhere)&lt;/td&gt;
&lt;td&gt;Axios client with token injection; products load from MongoDB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product details page was &lt;code&gt;&amp;lt;h1&amp;gt;DetailsPages&amp;lt;/h1&amp;gt;&lt;/code&gt; and wasn't routed&lt;/td&gt;
&lt;td&gt;Full details page (image, price, stock, rating) routed by slug&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cart was local-only; "checkout" button did nothing&lt;/td&gt;
&lt;td&gt;Persistent cart → checkout → real order placed and saved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend had a reviews endpoint the UI never used&lt;/td&gt;
&lt;td&gt;Product reviews: read them and post your own with a star rating&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Only 3 routes; most of the app was unreachable&lt;/td&gt;
&lt;td&gt;Home, login, register, details, account, checkout, orders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typos baked in (&lt;code&gt;Regsiter&lt;/code&gt;, &lt;code&gt;isLoggIn&lt;/code&gt;), &lt;code&gt;console.log&lt;/code&gt; in render, logo linked to a random site&lt;/td&gt;
&lt;td&gt;Cleaned up, renamed, fixed scroll/header bugs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A live MongoDB password was committed in &lt;code&gt;.env&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Removed from tracking, &lt;code&gt;.env.example&lt;/code&gt; added&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I tracked the whole revival in &lt;strong&gt;30 small commits&lt;/strong&gt; so the before → after journey&lt;br&gt;
is visible in the history, from "stop tracking node_modules" to "add the orders&lt;br&gt;
page."&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with AI-Assisted Development
&lt;/h2&gt;

&lt;p&gt;I leaned on AI assistance heavily to finish this. The most useful parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mapping the gap fast.&lt;/strong&gt; The first win was having the codebase read end-to-end
and getting a precise list of what worked vs. what was fake — that turned a
vague "it's unfinished" into a concrete checklist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wiring the integration layer.&lt;/strong&gt; Generating the axios client, the Redux
thunks for login/register, and the product/cart/order slices was where it saved
the most time — lots of boilerplate that's easy to get subtly wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filling the missing pages.&lt;/strong&gt; The checkout form, order summary math (items +
shipping + tax), and the orders history page came together quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unblocking the environment.&lt;/strong&gt; Docker wouldn't start on my machine, so instead
of stalling I switched the backend to an in-memory MongoDB with auto-seeding —
now anyone can clone and run it with zero setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The thing I'd tell other people reviving an old project: don't start by writing&lt;br&gt;
code. Start by getting an honest map of what's actually there. Half of "finishing"&lt;br&gt;
turned out to be deleting fake logic, not adding new features.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
  </channel>
</rss>
