<?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>Forem: Statement Extract</title>
    <description>The latest articles on Forem by Statement Extract (@statementextract).</description>
    <link>https://forem.com/statementextract</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%2F3678260%2Fa42d94c2-779a-406b-a132-9258f9f762fe.png</url>
      <title>Forem: Statement Extract</title>
      <link>https://forem.com/statementextract</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/statementextract"/>
    <language>en</language>
    <item>
      <title>I Built a Financial Tools Platform with Next.js — Here's What I Learned</title>
      <dc:creator>Statement Extract</dc:creator>
      <pubDate>Thu, 25 Dec 2025 12:17:29 +0000</pubDate>
      <link>https://forem.com/statementextract/i-built-a-financial-tools-platform-with-nextjs-heres-what-i-learned-178j</link>
      <guid>https://forem.com/statementextract/i-built-a-financial-tools-platform-with-nextjs-heres-what-i-learned-178j</guid>
      <description>&lt;p&gt;I got frustrated with hunting across 10 different websites for simple financial tools. So I decided to build one platform with everything.&lt;br&gt;
This is the story of building &lt;a href="https://statementextract.com" rel="noopener noreferrer"&gt;StatementExtract&lt;/a&gt; — a suite of financial tools for small businesses and freelancers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every time I needed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Convert a bank statement to Excel&lt;/li&gt;
&lt;li&gt;Calculate profit margins&lt;/li&gt;
&lt;li&gt;Generate an invoice&lt;/li&gt;
&lt;li&gt;Convert files between formats
...I had to find a different website. Most were covered in ads, required signups, or had hidden limits.
I thought: "Why isn't there one place for all of this?"
So I started building.
## The Tech Stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js 14 (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Components:&lt;/strong&gt; shadcn/ui&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Cloudflare Pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python/FastAPI (for document processing)
### Why Next.js?
Static export capability was key. Most tools process data client-side (calculators, file converters), so I wanted fast static pages with no server overhead.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// next.config.ts&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;export&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;trailingSlash&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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;p&gt;Client-Side Processing&lt;br&gt;
For tools like the invoice generator and calculators, everything runs in the browser. No data is sent to any server.&lt;/p&gt;

&lt;p&gt;tsx&lt;br&gt;
// Invoice data stays in localStorage&lt;br&gt;
const [invoiceData, setInvoiceData] = useState(() =&amp;gt; {&lt;br&gt;
  if (typeof window !== 'undefined') {&lt;br&gt;
    return JSON.parse(localStorage.getItem('invoice') || '{}');&lt;br&gt;
  }&lt;br&gt;
  return {};&lt;br&gt;
});&lt;br&gt;
This is a privacy feature I'm proud of — your data never leaves your device.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Bank Statement Converter
Upload PDF → Extract transactions → Download Excel/CSV&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The most technically challenging part. PDF parsing is notoriously difficult because PDFs are designed for display, not data extraction.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;File Format Converters&lt;br&gt;
CSV → QuickBooks (QBO)&lt;br&gt;
CSV → OFX&lt;br&gt;
QBO → CSV&lt;br&gt;
These help people import transactions into accounting software when bank feeds aren't available.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Financial Calculators&lt;br&gt;
Profit margin calculator&lt;br&gt;
Markup calculator&lt;br&gt;
GST/VAT calculator&lt;br&gt;
Simple tools, but surprisingly hard to find good free versions online.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Invoice Generator&lt;br&gt;
Create professional invoices with:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Multiple currencies&lt;br&gt;
Tax fields&lt;br&gt;
Digital signature&lt;br&gt;
PDF export&lt;br&gt;
100% client-side — your invoice data is never uploaded.&lt;/p&gt;

&lt;p&gt;Lessons Learned&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;SEO Takes Time&lt;br&gt;
I've been live for a few months. Getting organic traffic is slow. Consistently publishing content and building backlinks matters more than perfect on-page SEO.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Free" Is Complicated&lt;br&gt;
When you say "free," people expect completely free. If you have limits, be upfront about it. Trust is everything.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solve Your Own Problems&lt;br&gt;
I built tools I actually needed. That made it easy to know what features mattered and what was just noise.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ship Fast, Iterate&lt;br&gt;
My first version was rough. But shipping early got me real feedback from real users. Much better than building in isolation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What's Next&lt;br&gt;
Still building in public. Current focus:&lt;/p&gt;

&lt;p&gt;More export formats&lt;br&gt;
Better accuracy on bank statement extraction&lt;br&gt;
Mobile optimization&lt;br&gt;
Check It Out&lt;br&gt;
Live: statementextract.com&lt;/p&gt;

&lt;p&gt;I'd love feedback from the dev community:&lt;/p&gt;

&lt;p&gt;What tools would you add?&lt;br&gt;
Any technical suggestions?&lt;br&gt;
Drop a comment below or find me on Twitter.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>programming</category>
      <category>python</category>
    </item>
  </channel>
</rss>
