Most people learn to code by building things that don't matter — tip calculators, to-do lists, placeholder apps. I took a different approach: I built something I actually understood.
I am currently enrolled at Central Piedmont Community College, working toward an Associate's degree in Artificial Intelligence. It's a deliberate investment — three decades as a CPA have given me a clear view of where the profession is heading, and I want to be ahead of it, not behind it.
One of the early assignments in the program involved Python and a classic database called Northwind — a sample dataset Microsoft has used for years to teach SQL, full of customers, products, orders, suppliers, and employees from a fictional gourmet food company. The assignment asked students to load the data, build some query screens, and demonstrate basic CRUD operations.
I handed that in. Then I kept going.
The Question Behind the Project
The thought that drove the extra work was simple: I know what a real accounting system looks like from the inside. Could I build one from scratch?
Not a simulation. Not a toy. A system that actually follows double-entry bookkeeping rules — where every sale credits Revenue and debits Cash or Accounts Receivable, where every inventory purchase flows through the journal, where the Balance Sheet actually balances and the trial balance checks itself. The kind of system that would make an auditor comfortable, built by someone who has spent a career thinking about exactly that.
"The accounting logic didn't come from a textbook. It came from three decades of knowing what correct books look like — and what happens when they aren't."
That combination — deep domain expertise applied to a new technical skill — is what turned a classroom exercise into something worth showing to a client or an employer.
Phase One: The Desktop Application
The first version of the system was a fully functional desktop application built with Python's standard toolkit. No expensive frameworks, no third-party platforms — just the tools that come with the language itself.
The main menu alone tells the story of the scope. Six functional columns covered every area of basic business operations:
Transaction Entry
Sales orders with line-item carts, A/R collections, inventory purchases, A/P payments, and manual journal entries — all posting correctly to the general ledger.
Customer & Vendor Management
Full add, edit, and delete capability for customers and products, with grid views and form validation.
Ledger Reports
A/R detail by customer, A/P detail by vendor, and a full General Ledger with summary and transaction-level drill-down. Trial balance verifies automatically.
Financial Statements
Contribution Margin, Income Statement, Balance Sheet, and Cash Flow Statement — all date-aware, with quarterly and annual period presets drawn from actual order history.
Data Queries
Searchable grids for Customers, Orders, Suppliers, and Employees — filter by any field, see results instantly.
Charts & Analytics
Six embedded charts: revenue by product, by customer, by category, monthly trend, shipper breakdown, and revenue vs. cost — all filterable by date range.
The Financial Dashboard window shows everything a controller or CFO would want to see on one screen: a live income statement with monthly detail, side-by-side with revenue vs. COGS charts broken down both by month and by product category. Every number is live — post a new sale, and the dashboard updates in real time.
Phase Two: Taking It to the Web
A desktop application that runs on one machine has limited practical value for a client or employer evaluating what you can do. The logical next step was to make it publicly accessible — which turned out to require solving a genuinely interesting problem.
Desktop GUI frameworks and cloud servers do not speak the same language. The window-drawing code had to be completely replaced, while the accounting logic — every journal entry, every report calculation, every SQL query — could stay exactly as written. That separation is actually a sign of good architecture: business logic that doesn't depend on how it's displayed is logic you can reuse anywhere.
The tool I used for the conversion was Streamlit, a Python library that turns Python scripts into web applications without requiring web development expertise. Dropdown menus, data grids, charts, forms — all written in Python, all rendered as a proper browser interface. The accounting engine underneath didn't change a single line.
Once the web version was running locally, deploying it to Google Cloud took a single command. The application now runs on Google Cloud Run — serverless, automatically scaled, secured with HTTPS, available to anyone with the URL.
The Live Application
The application below is fully functional — not a screenshot, not a demo recording. You can navigate to Transaction Entry and post a sale, open Financial Reports and pull an income statement for any quarter, or explore the charts filtered to a specific year. Everything you interact with is running live on Google Cloud.