<?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: Ahmad Nurfadilah</title>
    <description>The latest articles on DEV Community by Ahmad Nurfadilah (@ahmadnurfadilah).</description>
    <link>https://dev.to/ahmadnurfadilah</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%2F1106534%2F66d18cc6-4ef7-47b8-9bdd-e644a4a7e87b.png</url>
      <title>DEV Community: Ahmad Nurfadilah</title>
      <link>https://dev.to/ahmadnurfadilah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ahmadnurfadilah"/>
    <language>en</language>
    <item>
      <title>Ezpense: An AI Receipt Scanner + Expense Dashboard with KendoReact and Supabase</title>
      <dc:creator>Ahmad Nurfadilah</dc:creator>
      <pubDate>Mon, 29 Sep 2025 06:59:27 +0000</pubDate>
      <link>https://dev.to/ahmadnurfadilah/ezpense-an-ai-receipt-scanner-expense-dashboard-with-kendoreact-and-supabase-2ik8</link>
      <guid>https://dev.to/ahmadnurfadilah/ezpense-an-ai-receipt-scanner-expense-dashboard-with-kendoreact-and-supabase-2ik8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kendoreact-2025-09-10"&gt;KendoReact Free Components Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Ezpense is an AI‑powered expense manager with receipt scanning that turns messy receipt workflows into fast, reliable, and anonymous expense tracking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Background and Motivation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Manual expense entry is slow, error‑prone, and easy to avoid—especially when you’re juggling multiple receipts each week.&lt;/li&gt;
&lt;li&gt;Freelancers and small business owners often need evidence (receipts) plus structured data (amount, vendor, date, category) for tax prep and reporting.&lt;/li&gt;
&lt;li&gt;The goal: cut the time from “receipt in hand” to “tracked expense with analytics” from minutes to seconds—without forcing users to sign up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Drag‑and‑drop receipts (JPG/PNG/PDF), simulate OCR extraction, and attach confidence scores.&lt;/li&gt;
&lt;li&gt;Review and edit extracted fields before saving to the database.&lt;/li&gt;
&lt;li&gt;Visual dashboard showcasing spending insights, budget progress, and category breakdowns.&lt;/li&gt;
&lt;li&gt;Anonymous authentication so users can start using the app instantly—no sign‑up wall. Built following Supabase’s Anonymous Sign‑Ins guidance: &lt;a href="https://supabase.com/docs/guides/auth/auth-anonymous" rel="noopener noreferrer"&gt;Supabase Anonymous Sign‑Ins docs&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who It’s For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Small business owners and freelancers who need to keep receipts organized and prepare for taxes.&lt;/li&gt;
&lt;li&gt;Anyone looking for a modern, private, low‑friction expense tracker.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Live demo: &lt;a href="https://ezpense.vercel.app" rel="noopener noreferrer"&gt;https://ezpense.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/ahmadnurfadilah/ezpense" rel="noopener noreferrer"&gt;https://github.com/ahmadnurfadilah/ezpense&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How It Works (Architecture)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;UI: Next.js + KendoReact components for speed, accessibility, and consistent visuals.&lt;/li&gt;
&lt;li&gt;Auth: Supabase anonymous sign‑ins so users can start immediately, then optionally convert to a permanent account later. See: &lt;a href="https://supabase.com/docs/guides/auth/auth-anonymous" rel="noopener noreferrer"&gt;Supabase Anonymous Sign‑Ins&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Data: Supabase Postgres with Row Level Security (RLS) to ensure each user (anonymous or permanent) only reads/writes their own data.&lt;/li&gt;
&lt;li&gt;Storage: Private Supabase Storage bucket for receipt images. Users can only access their own files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Model (Key Tables)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;categories&lt;/code&gt;: name, color, optional budget&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;expenses&lt;/code&gt;: vendor, amount, date, status, category_id, AI &lt;code&gt;extracted_data&lt;/code&gt;, &lt;code&gt;user_edits&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;receipts&lt;/code&gt;: original file metadata, storage path, processing status, extracted payload&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;user_preferences&lt;/code&gt;: currency, date format, theme, notification settings&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  KendoReact Components Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Card&lt;/li&gt;
&lt;li&gt;Button&lt;/li&gt;
&lt;li&gt;Grid&lt;/li&gt;
&lt;li&gt;TextBox, NumericTextBox&lt;/li&gt;
&lt;li&gt;DropDownList&lt;/li&gt;
&lt;li&gt;DatePicker&lt;/li&gt;
&lt;li&gt;ProgressBar&lt;/li&gt;
&lt;li&gt;Badge&lt;/li&gt;
&lt;li&gt;Notification&lt;/li&gt;
&lt;li&gt;Dialog&lt;/li&gt;
&lt;li&gt;Switch&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Implementation Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Anonymous sign‑in is triggered automatically in the navigation on first visit; status indicators show “Anonymous” until the user upgrades to a permanent account.&lt;/li&gt;
&lt;li&gt;UI is responsive, keyboard‑friendly, and uses accessible components.&lt;/li&gt;
&lt;li&gt;All features are wired for real data with Supabase services; OCR is stubbed for demo with realistic object shapes and confidence scores.&lt;/li&gt;
&lt;li&gt;Recommended to use dynamic rendering for user‑specific content to avoid caching cross‑user metadata as noted in Supabase docs: &lt;a href="https://supabase.com/docs/guides/auth/auth-anonymous" rel="noopener noreferrer"&gt;Supabase Anonymous Sign‑Ins&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why KendoReact?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ship quickly with polished, accessible building blocks that feel consistent across pages.&lt;/li&gt;
&lt;li&gt;Production‑ready grid, inputs, dialogs, and feedback components reduce custom code.&lt;/li&gt;
&lt;li&gt;Strong theming and UX conventions keep the app cohesive as it grows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Supabase (Anonymous‑first)?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Removes sign‑up friction—users try the product immediately.&lt;/li&gt;
&lt;li&gt;Clear path for account conversion without losing data.&lt;/li&gt;
&lt;li&gt;Secure by default with RLS and JWT claims that distinguish anonymous vs permanent users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading! If you want to try Ezpense or contribute, check out the demo and repo above.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>kendoreactchallenge</category>
      <category>react</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
